お世話になります。
少々長いタイトルになってしまいましたが、PHPにてウェブアプリを作っているのですが、データ(MySQL)にカテゴリ登録された大カテゴリ、小カテゴリがあり、それを選択して登録する場面があります。
https://oni-on-design.com/2013/11/233
カテゴリの選択はセレクトボックスを選択して登録する流れを考えており、このセレクトボックスを動的に動かしたいと考え、上記サイトを参考にし、大カテゴリ、小カテゴリを呼び出す際にjavascript部を以下のような形で成形しています。
javascript部形成
$query = "SELECT b_cate_no, b_cate_name FROM ap_category_b ORDER BY b_cate_no"; $result = $mysqli->query($query); $row_cnt = $result->num_rows; if($row_cnt != 0){ $i=0; $select_data = "<option value = \"\">選択してください</option>"; while($row = $result->fetch_assoc()){ $select_data_b[] = $row["b_cate_name"]; if($row["b_cate_name"] == $b_cate_name){ $selected = "selected"; }else{ $selected = ""; } $select_data .= "<option value = \"".$row["b_cate_name"]."\" ".$selected.">".$row["b_cate_name"]."</option>"; if($i==0){ $js = "if(select1.options[select1.selectedIndex].value == \"".$row["b_cate_name"]."\"){\n"; } else{ $js .= "else if(select1.options[select1.selectedIndex].value == \"".$row["b_cate_name"]."\"){\n"; } $b_cate_no = $row["b_cate_no"]; $query2 = "SELECT m_cate_no, m_cate_b_no, m_cate_name, m_cate_sort FROM ap_category_m WHERE m_cate_b_no = '$b_cate_no' ORDER BY m_cate_no"; $result2 = $mysqli->query($query2); $row_cnt2 = $result2->num_rows; if($row_cnt2 != 0){ $js .= "select2.options[0] = new Option(\"選択してください\");\n"; $h = 1; while($row2 = $result2->fetch_assoc()){ $js .= "select2.options[".$h."] = new Option(\"".$row2["m_cate_name"]."\");\n"; $h++; } } $js .= "}\n"; $i++; } }
javascript
<script type = "text/javascript"> <!-- function functionName() { var select1 = document.forms.formName.category_b; //変数select1を宣言 var select2 = document.forms.formName.category_m; //変数select2を宣言 select2.options.length = 0; // 選択肢の数がそれぞれに異なる場合、これが重要 <?php echo $js; ?> } //--> </script>
HTML部
<!--選択肢その1--> <select name = "category_b" onChange="functionName()" style="height:35px;"> <?php echo $select_data; ?> </select> <!--選択肢その2(選択肢その1の項目によって変化)--> <select name = "category_m"> </select>
とここで質問です。
2つある選択肢ですが、POSTで送信(自身に送信して受け取っている)したとき、それぞれのセレクトボックスは選択された状態にしたいと考えており、選択肢その1は問題ないものの、、選択肢その2(category_m)は選択された状態にならないばかりか、選択肢その1を再度選択する必要がある状態で、また、これらを登録し、データを呼び出した際の修正画面を想定したときも、選択肢その1、選択肢その2、それぞれが登録された値に選択された状態としたいと考えていますが、受け取った値(変数にある値)をどのように組み込めば、選択された状態となるのでしょうか?
お忙しい中恐縮ですが、アドバイスのほど頂戴できれば幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/30 06:27
退会済みユーザー
2019/01/30 06:38
2019/01/31 00:28
退会済みユーザー
2019/01/31 01:24
2019/01/31 01:36
2019/02/02 05:06