我尝试从通过while循环创建的多个复选框创建一个数组。复选框命名为' to_delete[1]
',' to_delete[2]
'等。
我试过的数组语句是:
$toDelete = array($_POST['to_delete']);
$toDelete = array($_POST['to_delete'][]);
要通知有一个数组,我去打印但发现它是空的print_r($toDelete)
。我究竟做错了什么?
代码如下。是的,我在程序上这样做,然后将重写为OOP。
非常感谢您对此有任何帮助!,
$showQ = "SELECT * FROM urls";
$result = mysql_query($showQ);
$numRows = mysql_num_rows($result);
$row = mysql_fetch_array($result);
if(!$result) {
mysql_error();
} else {
echo "<form action='".$_SERVER["PHP_SELF"]."' method='post'>";
$i=0;
while($row = mysql_fetch_array($result)) {
echo "<input type='text' class='manId' name='manId[]' value=" . $row['id'] . " />";
echo "<input type='text' class='url' name='url[]' value=" . $row['url'] . " />";
echo "<input type='checkbox' name='to_delete[" .$i. "]' /><br/>\n";
$i++;
}
echo "<input type='submit' value='delete' name='submit' />";
echo "</form>";
}
$toDelete = array($_POST['to_delete[]']);
print_r($toDelete);
最终,我想遍历数组,看看哪些被检查,然后从表中删除相应的行。
答案 0 :(得分:2)
您不希望使用array()
调用创建数组,而是访问一个数组。 $_POST
将接收以[]
结尾的输入名称作为数组,因此$_POST
中相应的数组键已经是数组。编写代码的方式是指定一个包含$_POST
子数组的单元素数组。相反,请尝试以下方法:
// Test if $_POST['to_delete'] is set and non-empty
// If it's empty, create an empty array, otherwise assign it to $toDelete
$toDelete = empty($_POST['to_delete']) ? array() : $_POST['to_delete'];
print_$($toDelete);