我有一个复选框,每个复选框旁边都有一个选择选项。我有多个这样的,只有选中复选框才能检索select的值。
以下是代码:
<form method="POST">
<fieldset>
<input type="checkbox" name="check1[]">
<select name="select1[]">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select
<fieldset>
<input type="checkbox" name="check1[]">
<select name="select1[]">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</fieldset>
<input type="submit" name="update" value="go">
</form>
这是我的PHP代码:
if(isset($_POST['update'])){
for($i = 0; $i < sizeof($_POST['check1']); $i++){
if(isset($_POST['check1'][$i])){
echo $_POST['select1'][$i];
}
}
}
这不起作用,如果未选中第一个复选框,则for循环返回第二个选择选项的值。否则它工作正常。我该如何解决这个问题?
这是数组:
[check1] => Array
(
[0] => on
[1] => on
)
[select1] => Array
(
[0] => 1
[1] => 3
)
答案 0 :(得分:0)
我们只检查服务器上的复选框,你的for循环在那里是假的。
在此代码中,我为每个复选框添加了值以标识选择框。
eq:如果check1 [0] == 0,那么我们得到select1 [0]
if check1[1] == 1 then we get select1[1]
抱歉我的英文。
Html代码
<form action='' method="post">
<fieldset>
<input type="checkbox" name="check1[]" value='0'>
<select name="select1[]">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</fieldset>
<fieldset>
<input type="checkbox" name="check1[]" value='1'>
<select name="select1[]">
<option value="4">One</option>
<option value="5">Two</option>
<option value="6">Three</option>
</select>
</fieldset>
<input type="submit" name="update" value="go">
</form>
PHP代码:
if(isset($_POST['check1'])){
for($i=0;$i<count($_POST['check1']);$i++){
if($_POST['check1'][$i] >= 0){
echo $_POST['select1'][$_POST['check1'][$i]];
}
}
}
答案 1 :(得分:0)
我会这样做。选中该复选框后,在javascript中我将激活选择输入并最终在隐藏字段中检索结果。您也可以将已选中输入的值更改为1,只有在激活时将其链接到隐藏的输入字段。
<input type="checkbox" name="check1[]">
<input type="hidden" name="hiddenValue[]" value="0">
<select name="select1[]">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select
您必须明白,只有选中的输入才会发送到服务器,因此check1 []的数组将与您预期的数组不同。如果你想确定。索引数组;这可能有助于你的php循环:
<input type="checkbox" name="check1[0]">
<input type="checkbox" name="check1[1]">
顺便说一句,我的选择输入将以空选项开始,没有复选框。检查选项的空值更容易。但可能你需要这个复选框,所以它只是一个信息。
<select name="select1[]">
<option value="0">Choose an option</option>
<option value="4">One</option>
<option value="5">Two</option>
<option value="6">Three</option>
</select>