我的网站以在线分类广告为特色,由PHP和MySQL编程。以下代码允许管理员使用复选框工具删除多个记录。
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<table>
<td><? echo $rows['CountryName']; ?></td>
<td><input name="delete_items[]" type="checkbox" value="<?php echo $rows['id']; ?>" /></td>
</table>
<input type="submit" name="deleteSelected" value="Submit" >
</form>
<?php
if(isset($_POST['deleteSelected'])) {
$delete_items = join(', ', $_POST["delete_items"]);
$query = "DELETE FROM $table_name WHERE id IN ($deleted_items)";
$result = mysql_query($query);
header("Location: admin.php"); }
?>
当我按下提交按钮而没有复选框(所有框都未选中)时,我收到以下错误消息(p.s.脚本运行良好,没有任何错误消息,如果检查了任何复选框):
警告:join()[function.join]:第87行的C:\ xampp \ htdocs \ admin_listing.php中传递的参数无效
我尝试了implode
函数而不是join
,但我仍然收到错误消息。
也许我没有正确地通过函数传递数组,但我无法找到上述解决方案。
任何建议都将不胜感激。
答案 0 :(得分:0)
您似乎正在将所有数据库中的记录显示在表单中的单个输入中。
在您尝试的情况下,代码可能会与implode()
很好地配合使用,但您需要在显示表单时使用循环来正确生成选项。
这样的事情:
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" >
<table>
<?php
while($row=$databaseResult) //however you are getting the data out of the database.
{
echo "<tr><td>".$rows['CountryName']."</td><td><input name='delete_items[]' type='checkbox' value=".$rows['id']."/></td></tr>";
}
?>
</table>
<input type="submit" name="deleteSelected" value="Submit" >
</form>
答案 1 :(得分:0)
感谢大家的帮助,我通过添加一个代码行找到了一个简单的解决方案,如下所示:
<?php
if(isset($_POST['deleteSelected'])) {
if(isset($_POST["delete_items"][0])) {
$delete_items = join(', ', $_POST["delete_items"]);
$query = "DELETE FROM $table_name WHERE id IN ($delete_items)";
$result = mysql_query($query);
header("Location: admin.php");
}
}
?>
希望它可以帮助别人......