私は現在、ジレンマに直面しています。私は、データベースからのデータの配列を表示するメニューを構築しようとしています。ユーザーはそのリストから項目を選択し、これに基づいて、それに関連するデータを取得するためにデータベース呼び出しを行う必要があります。ここに私が持っている現在のコードです。PHPとSQLを使用して子どものリストを作成する
function foobar() {
$first_option_sql = "SELECT * from {location} l ORDER BY name ASC";
$list_first_option = db_query($first_option_sql);
$output .= "<p><b>Please select the primary location that you would like to check.</b><p>"
$output .= "<br><b>Location: </b> <select id='list'><option>Available locations</option>";
while($first_option_available = db_fetch_object($list_first_option)){
$output .="<option locationid='$first_option_available->lid'>".$first_option_available->name."</option>";
}
$output .="</select><input type=submit value='Search'>";
$output .="<p><b>Children: </b><select id='child'><option selected='yes'>Available children</option><p>";
$children_available_sql = "SELECT complexquery WHERE lid='%d' ORDER BY l.name ASC";
$list_children = db_query($children_available_sql);
while($children_available = db_fetcj_object($list_children)){
$output .="<option>".$children_available->name."</option>";
}
return $output;
}
ここでの問題は、このコードを使用して選択し、「最初のオプション」の値を取得することができません。したがって、2番目のクエリが実際に起こっていることはありませんということです。これは2番目のリストを設定しません。
私はAJAXやJavascriptを使用することを考えていましたが、あまりにも慣れていません。したがって、私はこれをどのように実行できるかについていくつかの洞察を求めていました。
PHPを単独で使用している場合、PHPがサーバー側で処理されるため、フォームを送信してページを再表示することなく、実際にこの操作を行うことはできません。 あなたが言及したように、Ajaxを使ってはるかに効果的です。選択した最初のオプションをPHPページに渡して、2番目のリストの値を含むDBリクエストからJSONデータを返します。 – julio
私はあまりAJAXに精通していないので、これをどうやって行うことができるのだろうかと思っています。私は基本的にPHPを使用してWebページを生成しているので、この機能を別のものにつなげる方が少し良いかもしれないと思います。 – Hectron
さて、フォームを最初のオプションリストの 'onChange'に送信し、最初の選択リストの値をPOSTまたはGETパラメータとして渡します。あなたのページの先頭で、そのパラメータが 'isset'であるかどうかを確認します。そうであれば、フォームが送信されたことがわかり、その値を使用して2番目の選択リストの参照をトリガーします。 – julio