我的网站以在线分类广告为特色,由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
,但仍然收到错误消息。也许我没有通过函数正确传递数组,但我找不到上述解决方案。
任何建议将不胜感激。
看起来您正在将数据库中的所有记录显示在表单中的单个输入中。
在您尝试时,代码可能会很好地与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>
谢谢大家的帮助,我通过添加一个代码行找到了一个简单的解决方案,如下所示:
<?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");
}
}
?>
希望它可以帮助其他人...