无法通过$ _POST访问数组

时间:2012-03-19 01:18:25

标签: php mysql

我有以下HTML代码:

<form method="post" action="arrayplay.php">
<input type="checkbox" value="1" name="todelete[]"/>
<input type="checkbox" value="2" name="todelete[]"/>
<input type="checkbox" value="3" name="todelete[]"/>
<input type="checkbox" value="4" name="todelete[]"/>
<input type="submit" value="delete" name="delete"/>
</form>

以下PHP脚本: //arrayplay.php     

foreach ($_POST['todelete'] as $id)
{
echo $id . "<br/>";
}
?>

它应该回显每个元素值,但我得到一个错误。我真的很沮丧。如果我使用:

<form method="post" action="arrayplay.php">
<?php
$dbc= //connection
$query = "SELECT * FROM email_list";
$result = mysqli_query($dbc, $query);
while ($row = mysqli_fetch_array($result)) {
echo '<input type="checkbox" value="' . $row['id'] . '" name="todelete[]" />';
echo $row['first_name'];
echo ' ' . $row['last_name'];
echo ' ' . $row['email'];
echo '<br />';
}
mysqli_close($dbc);
?>
<input type="submit" name="submit" value="Remove" />
</form>

完美无缺!为什么?第一个(硬编码的html)保存与从数据库中检索它们的值完全相同的值。我很难理解使用$ _POST从数组中检索值。为什么name = foo []创建一个数组?它是关联数组还是数字数组?我很抱歉所有的问题,我真的准备好把头发拉出来。

2 个答案:

答案 0 :(得分:0)

如果您只是命名输入foo,它只会获得一个值。因为方括号通常用于数组,foo[]是如何在html表单中指示数组。当然在PHP方面你只需要将它称为foo,你可以从你的工作实例中了解到它。

答案 1 :(得分:0)

我已经测试了它,它应该可以工作:

<?php
if ($_POST['delete']) {
    foreach ($_POST['todelete'] as $id) {
            echo $id.' selected<br />';
    }
}
?>
<form method="post" action="arrayplay.php">
<input type="checkbox" value="1" name="todelete[]"/>
<input type="checkbox" value="2" name="todelete[]"/>
<input type="checkbox" value="3" name="todelete[]"/>
<input type="checkbox" value="4" name="todelete[]"/>
<input type="submit" value="delete" name="delete"/>
</form>

如果您仍然遇到麻烦,可以尝试:

<?php
if ($_POST['delete']) {
    for ($i = 0; $i < 4; $i++) {
        if (isset($_POST['todelete'][$i])) {
            echo $_POST['todelete'][$i].' selected<br />';
        }
    }
}
?>