我有以下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 []创建一个数组?它是关联数组还是数字数组?我很抱歉所有的问题,我真的准备好把头发拉出来。
答案 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 />';
}
}
}
?>