通过函数传递数组

时间:2012-08-19 03:58:06

标签: php mysql html arrays

我的网站以在线分类广告为特色,由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,但我仍然收到错误消息。 也许我没有正确地通过函数传递数组,但我无法找到上述解决方案。

任何建议都将不胜感激。

2 个答案:

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

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