0

我的网站以在线分类广告为特色,由 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"); }
?>

当我按下提交按钮而不选中复选框(所有复选框都未选中)时,我收到以下错误消息(如果选中任何复选框,脚本运行良好,没有任何错误消息):

警告:join() [function.join]:第 87 行 C:\xampp\htdocs\admin_listing.php 中传递的参数无效

我已经尝试了该implode功能而不是 using join,但我仍然收到一条错误消息。也许我没有正确地通过函数传递数组,但我找不到上述解决方案。

任何建议将不胜感激。

4

2 回答 2

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"); 
  }
 } 
?> 

希望它可以帮助别人......

于 2012-08-19T15:47:14.410 回答
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>
于 2012-08-19T04:01:21.780 回答