2015-03-13 79 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