2013-01-10 39 views
0

我製作了兩個下拉框。第一個下拉列出了可用的數據庫。當用戶從第一個下拉框中選擇一個數據庫時,我想用該數據庫中的所有表填充第二個下拉框。提取數據庫中的所有表格

任何人都可以建議我可能會這樣做嗎?

這是我的代碼,我已經試過

School Name:<select style="width: 140px" name="users" > 
        <option value="">Select school_name </option> 

<?php 
$link = mysql_connect('localhost', 'root', ''); 
$db_list = mysql_list_dbs($link); 

while ($row = mysql_fetch_object($db_list)) { 

?> 
<option value='<?php echo $row->Database; ?>'><?php echo $row->Database; ?> </option> 
    <?php }?> 

</select><br/> 
Class:<select style="width: 140px" name="users" > 
        <option value="">Select school_name </option> 

    <?php 
    $link = mysql_connect('localhost', 'root', ''); 
    $db_list = mysql_list_tables($link);        
    while ($row = mysql_fetch_object($db_list)) { 

    ?> 
    <option value='<?php echo $row->Tables; ?>'><?php echo $row->Tables; ?></option> 
       <?php }?> 

</select> 

<?php 
} 
?> 

現在我想坐下基於第一個下拉框,第二次下降所有表。

+0

誰能給我用mysql在php –

+1

表明您已經嘗試 –

+0

@pinkiupadhyay沒有你長了我的答案代碼的代碼,如果有什麼不清楚的,請叫我? –

回答

0

使用PDO,你只需使用SHOW TABLES命令:

$result = $db->query("SHOW TABLES"); 

要獲得所有數據庫的列表,使用SHOW DATABASES命令:

$result = $db->query('SHOW DATABASES'); 
0

試試這個:

,以獲取DB連城:

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ; 

要提取TBE表清單:

SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'DBName'; 
0

具有下列樣品試試看:

創建兩個PHP文件如下,

(1)。的index.php:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script> 
<script type="text/javascript"> 
function get_tables(db_name){ 
$.post("fetch_data.php", { db_name: db_name }, 
function(data) { 
$("#tables_list").html(data); 
} 
); 
} 
</script> 
<table> 
<tr><td><label>Select Your Database Name :</label></td><td><select name="database_list" onChange="get_tables(this.value);"> 
<option value="Wp-Sparks">Wp-Sparks</option> 
<option value="Ja_Sparks">Ja_Sparks</option> 
<option value="test">Test</option> 
</select></td></tr> 
<tr><td><label>Select Your Database Tables :</label></td><td><select name="tables_list" id="tables_list"></select></td></tr> 
</table> 

(2)。 fetch_data.php:

<?php 
$dbname = mysql_real_escape_string($_POST['db_name']); 
if (!mysql_connect('HOST_NAME', 'USER_NAME', 'PASSWORD')) { 
    echo 'Could not connect to mysql'; 
    exit; 
} 
$sql = "SHOW TABLES FROM $dbname"; 
$result = mysql_query($sql); 

if (!$result) { 
    echo "DB Error, could not list tables\n"; 
    echo 'MySQL Error: ' . mysql_error(); 
    exit; 
} 
while ($row = mysql_fetch_row($result)) { 
?> 
<option value="<?php echo $row[0];?>"><?php echo $row[0];?></option> 
<?php 
} 
mysql_free_result($result); 
?> 

我認爲這可以幫助你解決你的問題。

+0

幫助OP使用它是一回事不推薦使用的擴展名,但您的代碼也容易受到SQL注入的影響。 '$ _POST ['db_name'];'是用戶輸入。連接到查詢字符串而不被轉義的用戶輸入。請首先逃脫你的用戶輸入。理想情況下,OP應該只使用PDO或MySQLi。但這是他們的選擇。 – 2013-01-10 06:18:23

+0

@navnav你有沒有現在... –

+0

它不是取所有的表.. –