ユーザーがコンボ ボックスを使用してデータベースにクエリを実行できるようにしようとしています。最初のコンボ ボックスには、データベース内のテーブルのリストが表示されます。ユーザーがテーブルを選択すると、別のクエリが実行され、2 番目のコンボ ボックスにそのテーブル内の列名が入力されます (これはクエリの選択として使用されます)。最初のコンボ ボックスは機能していますが、 2 番目に入力します。誰でもこれを手伝ってもらえますか?どうもありがとう
ここに私のhtmlコードがあります
<form id="ownQueryForm" name="ownQueryForm" method="POST" action="">
<div id = "tableSelect_div">
<P> Select table to Query: </P>
<select name = "Tables" id = "Tables" onchange = 'this.form.submit()'>
<option value = "blank"> Please choose a Table</option>
<?php foreach (($tableContent) as $row) : ?>
<option value = "<?php echo $row['Tables_in_DB_EXECUTION_MANAGER_TEST']; ?>"><?php echo $row['Tables_in_DB_EXECUTION_MANAGER_TEST'];?></option>
<?php endforeach ?>
</select>
</div>
<div id = "columnSelect_div">
<p>SELECT</p>
<select name = "Columns" id = "Columns">
<?php foreach (($columnContent) as $row) : ?>
<option value = "<?php echo $row['COLUMN_NAME']; ?>"><?php echo $row['COLUMN_NAME'];?></option>
<?php endforeach ?>
</select>
</div>
</form>
ここに私の2つのクエリがあります
public static function getTables(){
global $db;
$st = $db->prepare("show tables");
$st ->execute();
$table = $st->fetchAll(PDO::FETCH_ASSOC);
return $table;
}
public static function getColumns(){
global $db;
$st = $db->prepare("SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE table_name = :value ");
$st->bindParam(':value', $_POST['Tables'], PDO::PARAM_STR);
$st -> execute();
$column = $st -> fetchAll(PDO::FETCH_ASSOC);
return $column;
//print_r($column);
}
}
getTable (モデル内) をレンダリングするために使用されるコントローラーと、同じコントローラー上の 2 つの別個の関数として getColumns を使用するコントローラーを使用しています。これはできますか?
これはコントローラーにありますが、実行されることはなく(ifステートメントを取り出さない限り)、ページが読み込まれると実行されます
if (isset ( $_POST ['Tables'] )) {
$c = new ownQueryController();
$c ->queryRequest();
}