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 中不能有嵌套表单。标记无效,我猜您在提交时会遇到意外行为。解决方案是使用单一表格。有不止一种方法可以做到这一点,但这里有一个例子:

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 回答