0

ドロップダウンボックスを2つ作りました。最初のドロップには、使用可能なデータベースが一覧表示されます。ユーザーが最初のドロップダウン ボックスからデータベースを選択すると、そのデータベース内のすべてのテーブルを 2 番目のドロップダウン ボックスに入力したいと思います。

誰かが私がこれを行う方法を提案できますか?

これは私が試した私のコードです

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
}
?>

今、最初のドロップダウンボックスに基づいて、2番目のドロップダウンですべてのテーブルを取得したいと考えています。

4

4 に答える 4

1

データベースを取得するには: SQL Server からデータベースのリストを取得します。

データベースでテーブルを取得するには: http://php.net/manual/en/function.mysql-list-tables.php

AJAX を使用して、データベースのドロップダウン ボックスに基づいてテーブルを変更します。

于 2013-01-10T05:31:40.533 に答える
0

次のサンプルを試してみてください。

次のように2つの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);
?>

これはあなたの問題を解決するのに役立つかもしれないと思います。

于 2013-01-10T06:02:15.520 に答える
0

これを試して:

DB ライシングを取得するには:

SELECT SCHEMA_NAME FROM information_schema.SCHEMATA ;

テーブル リストを取得するには:

SELECT TABLE_NAME FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'DBName';
于 2013-01-10T05:52:57.900 に答える
0

PDO を使用すると、次のSHOW TABLESコマンドを使用するだけです。

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

すべてのデータベースのリストを取得するには、次のSHOW DATABASESコマンドを使用します。

$result = $db->query( 'SHOW DATABASES' );
于 2013-01-10T05:29:38.970 に答える