我有 2 个下拉菜单表单"类别"和"子类别"。 在"类别"中,我可以选择音乐和电影,在子类别中,我有"流行"和"摇滚"(f1)选项,在电影中,我有"喜剧"和"戏剧"(f2)选项。 问题是,使用我的代码,电影的子类别应注册如下(猫,子猫):电影戏剧= 2,5和电影喜剧= 2,6,但是当输入MySQL表时,它们都注册为2,0。 这是代码:
<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问题,我只是添加了该部分以提供更好的整体情况。
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
。