Проблема при удалении с помощью php в базе данных mysqli


я делаю форму, в которой вы уже можете отлично сохранить в базе данных mysqli, и я уже получаю данные в html. Теперь я хочу удалить с помощью кнопки.

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

Здесь я оставляю вам код, из которого я получаю список, а также имеет кнопку удаления.

<?php


        $consultabla = mysqli_query($conexion, "SELECT * from 001_agendacentral") or die("Error al leer Agenda");
            while ($extraido = mysqli_fetch_assoc($consultabla)) {



          echo '<tr>
                <td>'.$extraido['nombre'].'</td>
                <td>'.$extraido['departamento'].'</td>
                <td>'.$extraido['puesto'].'</td>
                <td>'.$extraido['correo'].'</td>
                <td>'.$extraido['telefono'].'</td>
                <td>
                  <form action="admdelete.php?id='.$extraido['id'].'" method="POST">
                    <input name="id" type="hidden" value="' . $extraido['id'].'"/>
                <input type="submit" class="btn btn-warning" value="Borrar"/></td>
                </tr>';
                }

                mysqli_close($conexion);
                 ?>

здесь файл, который выполняет процедуру удаления.

<?php
   require_once('../connect.php');

   $conexion = mysqli_connect($host,$user,$pass,$db) or die ("Error al conectar");
     $conexion->set_charset("utf8");

    $id = $_REQUEST['id'];
    echo $id;
       //Borrado de tabla con el Campo Nombre
      $borrar = "DELETE from 001_agendacentral where nombre='$id'" or die("Error al Borrar");

       $resultado = mysqli_query($conexion, $borrar) or die ("Error al Borrar");

     if ($resultado) {

mysqli_close($conexion);
echo "Borrado Correctamente";
# code...
}


?>

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

Author: Eslacuare, 2016-10-25

2 answers

Уважаемый, вы должны закрыть форму:

    while ($extraido = mysqli_fetch_assoc($consultabla)) {



      echo '<tr>
            <td>'.$extraido['nombre'].'</td>
            <td>'.$extraido['departamento'].'</td>
            <td>'.$extraido['puesto'].'</td>
            <td>'.$extraido['correo'].'</td>
            <td>'.$extraido['telefono'].'</td>
            <td>
              <form action="admdelete.php?id='.$extraido['id'].'" method="POST">

                <input name="id" type="hidden" value="' . $extraido['id'].'"/>
                <input type="submit" class="btn btn-warning" value="Borrar"/>    

              </form>
            </td>
            </tr>';
    }
 0
Author: Carlos AC, 2016-10-26 00:58:20

Это связано с тем, что все input, в которых вы сохраняете идентификатор, имеют одинаковый name.

Я рекомендую вам дать им динамическое имя (например, с номером идентификатора или итераций цикла):

<input name="id' . $extraido['id']. '" type="hidden" value="' . $extraido['id'].'"/>

Так что это будет выглядеть так:

echo '<tr>
         <td>'.$extraido['nombre'].'</td>
         <td>'.$extraido['departamento'].'</td>
         <td>'.$extraido['puesto'].'</td>
         <td>'.$extraido['correo'].'</td>
         <td>'.$extraido['telefono'].'</td>
         <td>
         <form action="admdelete.php?id='.$extraido['id'].'" method="POST">
             <input name="id' . $extraido['id']. '" type="hidden" value="' . $extraido['id'].'"/>
             <input type="submit" class="btn btn-warning" value="Borrar"/></td>
          </tr>';

Имея все input одинаковые name Когда вы делаете $id = $_REQUEST['id'];, Вы получаете только последнее значение, потому что это перезаписывает все предыдущие.

 2
Author: Francisco Romero, 2016-10-25 21:58:02