0

2つのドロップダウンメニューフォーム「カテゴリ」と「サブカテゴリ」があります。「カテゴリ」には音楽と映画のオプションがあり、サブカテゴリには「ポップ」と「ロック」(f1)のオプションがあり、映画「コメディ」と「ドラマ」(f2)のオプションがあります。問題は、私が持っているコードでは、映画のサブカテゴリは次のように登録する必要があります(cat、subcat):film-drama=2,5およびfilm-comedy=2,6ただし、入力すると両方とも2,0として登録されますmysqlテーブル。コードは次のとおりです。

 <form action='submitsite.php' method='POST'>
 <table>
 <tr>
 <td>category(optional)</td>
 <td><select name='cat' id = "opts" onchange = "showForm()">
 <option value = "0">Select</option>
 <option value = "1">music </option>
 <option value = "2">film </option>
 </select> 

 <div id = "f1" style="display:none">
 <form name= "subcat">
 <select name='subcat' id = "opts" onchange = "showForm()">
 <option value = "0">Select</option>
 <option value = "3">pop</option>
 <option value = "4">rock </option>
 </select>
 </form>
 </div>

 <div id = "f2" style="display:none">
 <form name= "subcat">
 <select name='subcat' id = "opts" onchange = "showForm()">
 <option value = "0">Select</option>
 <option value = "5">comedy</option>
 <option value = "6">drama</option>
 </select>
 </form>
 </div>

 <script type = "text/javascript">
 function showForm()
{
 var selopt = document.getElementById("opts").value;
 if (selopt == 1) 
{
  document.getElementById("f1").style.display="block";
  document.getElementById("f2").style.display="none";
}
 if (selopt == 2) 
{
  document.getElementById("f2").style.display="block";
  document.getElementById("f1").style.display="none";
}

}

変数宣言とmysqlクエリは次のとおりです。

$cat=$_POST['cat'];
$subcat=$_POST['subcat'];

$sql="INSERT INTO favorites VALUES('$cat','$subcat')";

これはmysqlの問題ではありません。全体像を把握するために、その部分を追加しました。

4

1 に答える 1

0

HTMLにネストされたフォームを含めることはできません。マークアップが無効であり、送信時に予期しない動作が発生すると思います。これに対する解決策は、単一のフォームを使用することです。これを行うには複数の方法がありますが、ここに1つの例があります。

HTMLコード:

<form action='submitsite.php' method='POST'>
<table>
<tr>
<td>category(optional)</td>
<td><select name='cat' id = "opts" onchange = "showForm()">
<option value = "0">Select</option>
<option value = "1">music </option>
<option value = "2">film </option>
</select> 

<div id = "f1" style="display:none">
<select name='subcat1' id = "opts" onchange = "showForm()">
<option value = "0">Select</option>
<option value = "3">pop</option>
<option value = "4">rock </option>
</select>
</div>

<div id = "f2" style="display:none">
<select name='subcat2' id = "opts" onchange = "showForm()">
<option value = "0">Select</option>
<option value = "5">comedy</option>
<option value = "6">drama</option>
</select>
</div>
</form>
....

PHPコード:

$cat = $_POST['cat'];
$subcat = $_POST['subcat' . $cat];

ユーザーが送信したすべての値は、さらに使用する前に検証する必要があることに注意してください。この場合、をチェックしis_numeric()、許容範囲内にあるかどうかをチェックし、おそらくにキャストしますint

于 2012-08-07T17:15:10.757 に答える