如何使用复选框删除php中的多行?

时间:2012-10-15 17:33:40

标签: php checkbox delete-row

    <form action="<?php echo $_SERVER['PHP_SELF'];?>" style="display:inline"  method="post">
    <input type="submit" name="del" value="Delete">

    <br>

    <?php

    $con=mysql_connect("localhost","root") OR DIE ("cant connect to server".mysql_error());

    mysql_select_db("bedanshare") OR DIE ("cannot select db".mysql_error());

    $stud=mysql_query("SELECT * FROM studentreg");

    $count=mysql_num_rows($stud);

    echo "<table border='1'>";
    echo "<th><center />#</th>"; 
    echo "<th><center />Student Number</th>";
    echo "<th><center />First Name</th>";
    echo "<th><center />Last Name</th>";
    echo "<th><center />E-mail</th>";
    echo "<th><center />Username</th>";
    echo "<th><center />Password</th>"; 

    while($row=mysql_fetch_array($stud))
    {
    echo "<tr>";?>
    <td><input name='checkbox[]' type='checkbox' id='checkbox[]' value="<?php echo $row['ID']; ?>">
    <?php
    echo "<td><center />".$row['ID']."</td>";
    echo "<td><center />".$row['Fname']."</td>";
    echo "<td><center />".$row['Lname']."</td>";
    echo "<td><center />".$row['EmailAddress']."</td>";
    echo "<td><center />".$row['Username']."</td>";
    echo "<td><center />".$row['Password']."</td>";  
    echo "</tr>";
    }
    echo "</table>";

    if($del)
    {
    for($i=0;$i<$count;$i++)
    {
    $id=$checkbox[$i];
    $dels=mysql_query("DELETE FROM studentreg WHERE ID='$id'");
    }

    }

    ?>

    </form>

为什么代码不会删除行? :(请帮助。没有数据似乎受到影响.ID是我的主键,但是当我点击删除时,没有任何反应。我不认为我的查询是错误的。顺便说一下我使用复选框删除多行。

2 个答案:

答案 0 :(得分:2)

有一个条件:

if($del)

只有这样才会进入循环并开始删除行。 问题是代码中没有定义变量$del

修改 将您的条件更改为:

if(array_key_exists('del',$_POST))

并改变下一行,来自:

$id=$checkbox[$i];

为:

$id=$_POST['checkbox'][$i];

答案 1 :(得分:0)

在您的代码中有两个错误。 1. $ del是未定义的变量。 2. $ checkbox []是未定义的变量。

您必须修改上面的代码,如下所示:

if(isset($_POST['delete']))   // Not if($del)
$id = $_POST['checkbox'][$i]; // Not $id=$checkbox[$i];