通过php提交后,记住选择框数组中的选项

时间:2011-06-22 09:31:42

标签: php arrays select element

<form method="post">
    <select name="box[]">
        <option value="1" <?php if ($_POST['box[0]'] == "1") echo "selected=\"selected\";"?>>1</option>
        <option value="2" <?php if ($_POST['box[0]'] == "2") echo "selected=\"selected\";"?>>2</option>
        <option value="3" <?php if ($_POST['box[0]'] == "3") echo "selected=\"selected\";"?>>3</option>
    </select>
    <p>
    <select name="box[]">
        <option value="1" <?php if ($_POST['box[1]'] == "1") echo "selected=\"selected\";"?>>1</option>
        <option value="2" <?php if ($_POST['box[1]'] == "2") echo "selected=\"selected\";"?>>2</option>
        <option value="3" <?php if ($_POST['box[1]'] == "3") echo "selected=\"selected\";"?>>3</option>
    </select>
    <p>
    <input type="submit" value="Submit">
</form>

当我使用框名“box1”和“box2”时,它没有问题。我做错了什么?

** * ** * 编辑 * ** * ****

非常感谢您的评论,但我实际上自己找到了解决方案,即使它没有多大意义。我没有在if语句中使用$ _POST ['box'] [0]和[1],而只使用$ box [0]和[1]。即使它已发布,显然php将其视为普通数组,而不是某种$ _POST数组!工作代码:

<form method="post">
    <select name="box[]">
        <option value="1" <?php if ($box[0] == "1") echo "selected='selected'";?>>1</option>
        <option value="2" <?php if ($box[0] == "2") echo "selected='selected'";?>>2</option>
        <option value="3" <?php if ($box[0] == "3") echo "selected='selected'";?>>3</option>
    </select>
    <p>
    <select name="box[]">
        <option value="1" <?php if ($box[1] == "1") echo "selected='selected'";?>>1</option>
        <option value="2" <?php if ($box[1] == "2") echo "selected='selected'";?>>2</option>
        <option value="3" <?php if ($box[1] == "3") echo "selected='selected'";?>>3</option>
    </select>
    <p>
    <input type="submit" value="Submit">
</form>

3 个答案:

答案 0 :(得分:3)

尝试使用$_POST['box'][0]$_POST['box'][1];)由于它们是作为数组发布的,因此您需要将它们作为数组进行处理。

答案 1 :(得分:0)

两者都有相同的名称。那就是问题所在。 $_POST['box[0]']$_POST['box[1]'],包含两个元素的数组,而不是它自身的值。

答案 2 :(得分:0)

非常感谢您的评论,但我实际上自己找到了解决方案,即使它没有多大意义。我没有在if语句中使用$ _POST ['box'] [0]和[1],而只使用$ box [0]和[1]。即使它已发布,显然php将其视为普通数组,而不是某种$ _POST数组!工作代码:

<form method="post">
    <select name="box[]">
        <option value="1" <?php if ($box[0] == "1") echo "selected='selected'";?>>1</option>
        <option value="2" <?php if ($box[0] == "2") echo "selected='selected'";?>>2</option>
        <option value="3" <?php if ($box[0] == "3") echo "selected='selected'";?>>3</option>
    </select>
    <p>
    <select name="box[]">
        <option value="1" <?php if ($box[1] == "1") echo "selected='selected'";?>>1</option>
        <option value="2" <?php if ($box[1] == "2") echo "selected='selected'";?>>2</option>
        <option value="3" <?php if ($box[1] == "3") echo "selected='selected'";?>>3</option>
    </select>
    <p>
    <input type="submit" value="Submit">
</form>