php无法删除多行

时间:2013-07-10 12:07:23

标签: php mysql forms checkbox sql-delete

我正在使用带有多个复选框的表单,以便用户选择要删除的行。生成表单的代码是:

if ($busqueda!=""){
    $busca = mysqli_query($con, " SELECT id_user FROM usuarios WHERE
        id_user LIKE '%$busqueda%'");
    echo "<form action='borrar.php' method='post' enctype='multipart/form-data'>";
    while ($array= mysqli_fetch_array($busca)){
        $user=makestring($array);
            echo"Usuario: <input type='checkbox' name='borrar_usuario' value='$user' />$user<br/>";
    }
    echo " <input type='submit' name='boton' value='eliminar' />";

   echo "</form>";

borrar.php中删除行的代码是:

if(isset($_REQUEST["borrar_usuario"])) {
    foreach ($_POST as $valor){
    $del_user = $valor;
    $q_borrar = "delete from usuarios where id_user in ('$del_user')";
    mysqli_query($con, $q_borrar)or die(mysqli_error());

}
    //echo "usuario borrado";
    header('refresh: 3; url= exito.php');
}

问题是只删除了所选的第一行,我不知道如何删除表单中选择的所有选项。有什么帮助吗?

2 个答案:

答案 0 :(得分:1)

首先更改复选框的名称以包含[]。然后,当您提交表单时,php会将其转换为数组。

<input type='checkbox' name='borrar_usuario[]' value='$user' />

然后在处理表单提交的php代码中删除循环并拥有此

if(isset($_REQUEST["borrar_usuario"])) {
    $q_borrar = "delete from usuarios where id_user in ('" . implode("','", $_POST['borrar_usuario']) . "')";
    mysqli_query($con, $q_borrar)or die(mysqli_error());
    //echo "usuario borrado";
    header('refresh: 3; url= exito.php');
}

答案 1 :(得分:0)

我认为这会奏效:

if(isset($_POST['borrar_usuario']))
{    
   $q_borrar = "delete from usuarios where id_user in ($_POST['borrar_usuario'])";
   mysqli_query($con, $q_borrar) or die(mysqli_error());
}