带有多个select的$ _POST中未定义的索引

时间:2016-03-06 04:44:46

标签: javascript php html

我有一个包含多个<select>元素的表单。我希望能够让PHP检索<select>中所有选项的列表。

用户可以通过点击页面上的各种内容向<select>添加项目。这会通过JavaScript动态地将项目添加到<select>

我的HTML表单的骨架:

<form action="submit.php" method="post">
    <select id='list' name='items[]' multiple='multiple'>
    </select>

    <input type='submit' value='Save' />
</form>

我的submit.php

<?php
    $list = $_POST["items"]; // returns 'undefined index' error
    for($i = 0; $i < count($list); $i++) {
        echo $list[$i] . "<br />";
    }
?>

我在这个问题上一直在四处寻找,但找不到有用的东西。我尝试用POST更改所有内容,但这并没有改变任何内容。

当我var_dump($_POST)时,我得到:

array(0) { }

我在本地计算机上使用XAMPP服务器,不确定是否会导致此问题。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果<option>中没有<select>个元素,或者未选择任何元素,则表单字段将不会发送到服务器。

在使用之前,应始终确保设置POST(和GET)变量:

if ( ! isset($_POST['items'])) {
    die('Not set: "items"');
}

例如:

<form action="submit.php" method="post">
    <select id='list' name='items[]' multiple='multiple'>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="3">C</option>
    </select>
    <input type='submit' value='Save' />
</form>

<?php
if (isset($_POST['items']) and is_array($_POST['items'])) {
    $list = $_POST["items"];
    for($i = 0; $i < count($list); $i++) {
        echo $list[$i] . "<br />";
    }
} else {
    die('Not set: "items"');
}

答案 1 :(得分:0)

这对我有用:

HTML:

<form action="submit.php" method="post">
    <select id='list' name='items[]' multiple='multiple'>
        <option value="Test1">Test 1</option>
        <option value="Test2">Test 2</option>
        <option value="Test3">Test 3</option>
    </select>

    <input type='submit' value='Save' />
</form>

PHP:

<?php
    $list = $_POST["items"];
    for($i = 0; $i < count($list); $i++) {
        echo $list[$i] . "<br />";
    }
?>