私は現在このフォームを持っています - そのスニペットは以下の通りです:
<li>
<label for="Catid">Pick a Category:</label>
<select name="Catid">
<?php
$Products = New Products();
$Products->form_Cat_Picker();
?>
</select>
</li>
<li>
<label for="Subcatid">Sub Category:</label>
<select name="Subcatid">
<?php
$Products = New Products();
$Products->form_Subcat_Picker();
?>
</select>
わかりましたので、これはproductsクラスでこれを行うproducts.phpに送信されます。
function form_Cat_Picker() {
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if (!$mysqli) {
die('There was a problem connecting to the database.');
}
$catPicker = "SELECT Catid, Catname
FROM ProductCats
ORDER BY Catid";
if ($Result = $mysqli->query($catPicker)){
if (!$Result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
else {
$Result = $mysqli->query($catPicker);
}
while ($row = $Result->fetch_assoc()) {
echo '<option value="'.$row["Catid"].'">'.$row["Catname"]."</option>";
}
}
$mysqli->close();
}
function form_Subcat_Picker() {
$mysqli = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME);
if (!$mysqli) {
die('There was a problem connecting to the database.');
}
$catPicker = "SELECT Subcatid, Subcatname, Parentid
FROM ProductSubCats
ORDER BY Subcatid";
if ($Result = $mysqli->query($catPicker)){
if (!$Result) {
echo 'Could not run query: ' . mysql_error();
exit;
}
else {
$Result = $mysqli->query($catPicker);
}
while ($row = $Result->fetch_assoc()) {
echo '<option value="'.$row["Subcatid"].'">'.$row["Subcatname"]."</option>";
}
}
$mysqli->close();
}
これらはどちらも、基本的にデータベースからカテゴリとサブカテゴリのリストを返し、フォームのドロップダウン リストに入力します。
問題は、最初のドロップダウン ボックスで親が選択されていない限り、サブ カテゴリを表示したくないことです。どうすればこれを達成できますか?現在、テーブル ProductSubCats に Parentid である追加の列があり、ProductCats に Catid である列があり、それらは接続されています。
しかし、最初にオプション/値が選択されている変数を作成し、次に「この変数 $selected」と言う条件を設定するにはどうすればよいでしょうか。とにかく、私を混乱させるのはその点に達しています。ありがとうございました
編集 - 私のエラーは、ページの読み込み時にphpが1回実行されることを忘れているようです。したがって、すべてのデータを表示し、jquery を使用して選択されたデータのみを表示する必要があります。しかし、値 0 と空白のエントリも必要です。たとえば、値が 1 のカテゴリと 2 のサブカテゴリがあり、親 ID が 1 の場合、親 ID が 1 のサブカテゴリを jquery に表示させるにはどうすればよいでしょうか? ユーザー選択後?