PHP:如何检索具有相同名称的多个表单输入的值,?

时间:2014-09-18 05:22:29

标签: php html html5 checkbox

我有一个复选框,每个复选框旁边都有一个选择选项。我有多个这样的,只有选中复选框才能检索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
    )

2 个答案:

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