通过函数传递数组


passing an array through the function

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

希望它可以帮助其他人...