这是动态代码
<?php
if(isset($_POST['submit'])){
$option = $_POST['option'];
$suboption = $_POST['suboption'];
foreach($option as $opt){
foreach($suboption as $sub){
echo "<pre>";
print_r($opt);
echo "<br>";
print_r($sub);
echo "</pre>";
}
}
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="checkbox" name="option[]" value="Option 1"> Option 1<br>
<select name="suboption[]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select>
<br>
<input type="checkbox" name="option[]" value="Option 2"> Option 2<br>
<select name="suboption[]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select>
<br>
<input type="checkbox" name="option[]" value="Option 3"> Option 3<br>
<select name="suboption[]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select><br>
<input type="submit" name="submit">
</form>
现在如果我选择带有多个子选项的多选项,则显示
我选择选项1,子选项1或2,选项2选择子选项2或3
输出
Option 1
Suboption 1
Option 1
Suboption 2
Option 1
Suboption 2
Option 1
Suboption 3
Option 2
Suboption 1
Option 2
Suboption 2
Option 2
Suboption 2
Option 2
Suboption 3
但我想
Option 1
Suboption 1
Option 1
Suboption 2
Option 2
Suboption 2
Option 2
Suboption 3
如果我选择带有多个子选项的任何一个选项,那么输出是正确的
例如
我选择选项1,子选项1或2
输出
Option 1
Suboption 1
Option 1
Suboption 2
请解决此问题
答案 0 :(得分:0)
当您在未选中选项1复选框的情况下发布数据并且选择了任何子选项时,它将发布该数据。所以你需要使用jQuery来启用或禁用特定的选择框,否则它会发布甚至不需要的数据。
在前端验证之前,使用嵌套循环也无法解决此问题。
答案 1 :(得分:0)
使用子选项中的值将每个子选项与选项相关联。而不是suboption []你可以为每个子选项[]使用唯一的名称,但你需要相应地改变你的php。
在HTML更改中
<select name="suboption[]" multiple="multiple">
到
<select name="suboption[Option 3][]" multiple="multiple">
在Php中使用以下
if(isset($_POST['submit'])){
$option = $_POST['option'];
$suboption = $_POST['suboption'];
echo "<pre>";
foreach($option as $opt){
foreach($suboption[$opt] as $sub ){
echo '<br/>';
print_r($opt);
echo "<br>";
print_r($sub);
}
}
echo "</pre>";
}
完整代码
<?php
if(isset($_POST['submit'])){
$option = $_POST['option'];
$suboption = $_POST['suboption'];
echo "<pre>";
foreach($option as $opt){
foreach($suboption[$opt] as $sub ){
echo '<br/>';
print_r($opt);
echo "<br>";
print_r($sub);
}
}
echo "</pre>";
}
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST">
<input type="checkbox" name="option[]" value="Option 1"> Option 1<br>
<select name="suboption[Option 1][]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select>
<br>
<input type="checkbox" name="option[]" value="Option 2"> Option 2<br>
<select name="suboption[Option 2][]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select>
<br>
<input type="checkbox" name="option[]" value="Option 3"> Option 3<br>
<select name="suboption[Option 3][]" multiple="multiple">
<option value="Suboption 1">Suboption 1</option>
<option value="Suboption 2">Suboption 2</option>
<option value="Suboption 3">Suboption 3</option>
</select><br>
<input type="submit" name="submit">
</form>