2015-03-13 80 views
0

我已經創建了一個動態HTML選擇,其選項由我的服務器上的數據庫名稱填充。在點擊一個選項後,打開一個新的.php頁面(使用JQuery)。在這個新頁面中,我希望從前一頁中選擇的數據庫名稱作爲一個字符串傳遞,我可以使用它來執行MySQL查詢。從動態創建的選擇表單中檢索選項

那麼我試過了什麼?

function selectDB() { 
    $link = mysqli_connect ('username', 'root', ''); 
    $qry = ("SHOW DATABASES"); 
    $db_list = mysqli_query ($link, $qry); 
    echo "<select name ='Databases' id='Databases' method='post'>"; 
    while ($row = mysqli_fetch_array ($db_list)) { 
     echo "<option value='" . $row [0] . "'>" . $row [0] . "</option>"; 
    } 
    echo "</select>"; 
} 

的JavaScript

$('#Databases').change(function() { 
    var yourDB = $(this).val(); 
    window.location.assign("test.php"); 
}); 

test.php的

if (isset ($_POST ['Databases'])) { 

    $dbName = $_POST ['Databases']; 
    $link = mysqli_connect ('username', 'root', '', "'%$dbName%'"); 
    if (! $link) { 
     die ("Connection failed" . mysqli_errno ($link)); 
    } 
    $qry = "SHOW tables"; 
    $tblist = mysqli_query ($link, $qry); 
    return $tblist; 
    printf ($tblist); 
} 

當我運行它,我得到的whitepageofdeath。運行error_log不顯示任何內容。我在哪裏錯了?

+0

你不是通過POST發送任何,所以'$ _POST'將是空的。將數據庫名稱固定到URL的末尾,就像查詢字符串'test.php?Databases = name_of_databases',然後在PHP端使用'$ _GET'數組。 – 2015-03-13 11:50:04

+0

另一件事,刪除數據庫名稱變量周圍的'%'字符。你爲什麼擁有所有這些引號? – 2015-03-13 11:54:34

回答

1

只需更改URL以包括選擇作爲一個GET參數

$('#Databases').change(function() { 
    var yourDB = $(this).val(); 
    window.location.assign("test.php?db=" + yourDB); 
}); 

的,您可以訪問它在你的網頁test.php的作爲$ _GET變種

+0

我嘗試了以下代碼的建議,但仍然出現白屏。 'if(isset($ _GET ['yourDB'])){ \t $ dbName = $ _GET ['yourDB']; \t $ link = mysqli_connect('username','root','','$ dbName'); \t if(!$ link){ \t \t die(「Connection failed」。mysqli_errno($ link)); \t} \t $ qry =「SHOW tables」; \t $ tblist = mysqli_query($ link,$ qry); \t return $ tblist; \t printf($ tblist); } – b0w3rb0w3r 2015-03-13 12:07:57

+1

get var is db NOT yourDB – 2015-03-13 12:09:18

+1

在我的例子中,你通過url傳遞的參數被稱爲'db'。因此,它需要用來在php腳本中檢索它的名稱,或任何你選擇給它的名字。 「test.php?db =」if(isset($ _ GET ['db'] – 2015-03-13 12:25:41