2013-07-10 3 views
0

Я использую форму с несколькими флажками, чтобы пользователь мог выбрать, какие строки он хочет удалить. Код для генерации формы заключается в следующем:php не может удалить более одной строки

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'); 
} 

Проблема в том, что только удаляет выбран первый ряд, и я не знаете, как сделать это, чтобы удалить все параметры, выбранные в форме. Любая помощь, пожалуйста?

+0

OT: Вы должны определенно избежать ваши ценности , –

ответ

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'); 
} 
+0

Зачем превращать его в массив, а затем взорвать его? Если я не ошибаюсь, значение столбца с таким же именем будет разделенным запятыми списком проверенных значений ... –

+0

это будет массив – DevZer0

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()); 
} 
Смежные вопросы