Lenguaje PHP

Eliminar múltiples filas usando PDO en PHP

La manera más sencilla de eliminar varios registros usando PDO

Eliminar múltiples filas usando PDO. En este tutorial, nos enfocaremos en crear un script para eliminar registros múltiples usando casillas de verificación (CHECKBOX) para seleccionar uno o más registros a borrar.

¿Qué recursos se usará para eliminar múltiples filas usando PDO?

Este procedimiento lo haremos usando los siguientes recursos:

  • Base de datos MySQL
  • Lenguaje de Programación PHP y PDO.
  • Formulario HTML5
  • JavaScript
  • Framework BootStrap

¿Cómo funciona el script eliminar múltiples filas usando PDO?

Primeramente, tenemos que crear una base de datos y su respectiva tabla.

  • Realizar la conexión con MySQL usando PDO
  • Poblar de registros nuestra tabla en MySQL usando una ventana modal. Por lo tanto, una vez que tengamos varios registros, podremos visualizar una tabla en HTML con varios registros y al lado izquierdo con casillas de verificación.
  • Si deseamos eliminar registros múltiples tenemos que marcar las casillas según las filas que deseamos eliminar
  • Por ultimo presionar el botón de nombre «Borrar» que nos mostrara la cantidad de registros seleccionados. Sin embargo, este botón ejecutara el formulario y enviara la información al fichero llamado «Borrar.php» que ejecutara las consultas de eliminación de los registros seleccionados a través del ciclo FOR.
  • El ciclo FOR procesara los registros marcados haciendo uso de la ID y generara una consulta de eliminar registro haciendo uso de la sentencia WHERE.
Eliminar múltiples filas usando PDO en PHP
Eliminar múltiples filas usando PDO en PHP

Eliminar múltiples filas usando PDO en PHP

A continuación, veremos los pasos a seguir y la estructura de archivos

Instalación del Script

Subir la carpeta del script a un servidor de producción y/o servidor local que ejecute scripts PHP. Si es un servidor local puedes usar (Laragon, XAMPP, Vertrigo, WampServer, etc).

Crear base de datos

El gestor más usado es PHPMyAdmin, accede a él desde un cPanel, Plesk si estas usando un servidor de producción, caso contrario si usar un servidor local accede a él mediante «localhost/phpmyadmin«.

Una vez dentro del gestor mencionado crear la base de datos y ejecutar la siguiente consulta para crear la tabla y sus columnas.

CREATE TABLE `usuarios` (
`usu_id` int(11) NOT NULL,
`nombre` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
`apellidos` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
`direccion` varchar(150) COLLATE utf8mb4_unicode_ci NOT NULL,
`telefono` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='Tabla Usuarios';


INSERT INTO `usuarios` (`usu_id`, `nombre`, `apellidos`, `direccion`, `telefono`) VALUES
(11, 'Juan', 'Castro FLores', 'Av. Celestino Vargas 45', '+53 9999999'),
(12, 'Maria', 'Figueroa Candia', 'Av, Bolognesi 878', '+59 989898980');


ALTER TABLE `usuarios`
ADD PRIMARY KEY (`usu_id`);


ALTER TABLE `usuarios`
MODIFY `usu_id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=13;

Conexión a la base de datos

El fichero de conexión con MySQL se llama conexion.php y debemos de abrirlo usando un tipo de editor de texto (notepad++, sublime text, etc.). Luego simplemente copie/pegue el código siguiente. Además, recuerden asignarle las credenciales del usuario MySQL, la contraseña y el nombre de la base de datos.

<?php

$server = "localhost";
$username = "root";
$password = "root";
$dbname = "e_borrar_multiple";

try {
$db = new PDO("mysql:host=$server;dbname=$dbname","$username","$password");
$db->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
die('No se puede conectar a MySQL');
}
?>

Pantalla principal

Este fichero se llamará index.php y es el principal archivo y será el encargado de mostrar una tabla HTML con los registros obtenidos desde MySQL y nos dará la posibilidad de agregar usuarios a través de una ventana modal.
Además, podremos seleccionar los registros a eliminar.

Eliminar multiples filas con PDO
Eliminar multiples filas con PDO
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1"/>
<link rel="stylesheet" type="text/css" href="css/bootstrap.css"/>
<title>Eliminar múltiples filas usando PDO en PHP</title>
</head>
<body>
<nav class="navbar navbar-default">
<div class="container">
<div class="container-fluid"> <a class="navbar-brand" href="https://www.baulphp.com">BaulPHP</a> </div>
</div>
</nav>
<div class="container">

<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Eliminar múltiples filas usando PDO en PHP</h3>
</div>
<div class="panel-body"> 

<button class="btn btn-success" type="button" data-toggle="modal" data-target="#form_modal"><span class="glyphicon glyphicon-plus"></span> Agregar usuario</button>
<hr>
<form method="POST" action="borrar.php">
<table class="table table-bordered">
<thead class="alert-info">
<tr>
<th><input type="checkbox" onclick="selectedCheckbox(this)">
Todos</th>
<th>Nombre</th>
<th>Apellidos</th>
<th>Dirección</th>
<th>Teléfono</th>
</tr>
</thead>
<tbody style="background-color:#fff;">
<?php
require 'conexion.php';
$query = $db->prepare("SELECT * FROM `usuarios`");
$query->execute();
$count_query = $db->prepare("SELECT COUNT(*) as count FROM `usuarios`");
$count_query->execute();
$row = $count_query->fetch();
$count=$count=$row['count'];
while($fetch = $query->fetch()){
?>
<tr>
<?php
if($count != 0){
?>
<td><input type="checkbox" name="check[]" onclick="countCheckbox()" value="<?php echo $fetch['usu_id']?>"></td>
<?php }?>
<td><?php echo $fetch['nombre']?></td>
<td><?php echo $fetch['apellidos']?></td>
<td><?php echo $fetch['direccion']?></td>
<td><?php echo $fetch['telefono']?></td>
</tr>
<?php }?>
</tbody>
<?php
if($count != 0){
?>
<tfoot>
<tr>
<td colspan="5"><button onclick="return confirm('Estas seguro de eliminar?')" name="borrar" class="btn btn-danger pull-right"><span id="count" class="badge">0</span> Borrar</button></td>
</tr>
</tfoot>
<?php }?>
</table>
</form> 

</div>
</div>


</div>

<div class="modal fade" id="form_modal" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<form method="POST" action="guardar.php">
<div class="modal-header">
<h3 class="modal-title">Agregar usuario</h3>
</div>
<div class="modal-body">
<div class="col-md-2"></div>
<div class="col-md-8">
<div class="form-group">
<label>Nombre</label>
<input type="text" name="nombre" class="form-control" required="required"/>
</div>
<div class="form-group">
<label>Apellidos</label>
<input type="text" name="apellidos" class="form-control" required="required"/>
</div>
<div class="form-group">
<label>Direccion</label>
<input type="text" name="direccion" class="form-control" required="required"/>
</div>
<div class="form-group">
<label>Teléfono</label>
<input type="text" name="telefono" class="form-control" required="required"/>
</div>
</div>
</div>
<div style="clear:both;"></div>
<div class="modal-footer">
<button name="guardar" class="btn btn-primary"><span class="glyphicon glyphicon-save"></span> Guardar</button>
<button class="btn btn-danger" type="button" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> Cerrar</button>
</div>
</form>
</div>
</div>
</div>
<script src="js/jquery-3.2.1.min.js"></script> 
<script src="js/bootstrap.js"></script> 
<script src="js/script.js"></script>
</body>
</html>

Poblando con registros la base de datos

En el fichero index.php posee un botón llamado «Agregar usuario«, una vez presionado ese botón mostrara una ventana modal con la ayuda del framework BootStrap.

Es ahí donde debemos de colocar los datos del usuario y luego presionar el botón Guardar.
Posteriormente esa ventana Modal enviara la información capturada en el formulario a un archivo llamado «guardar.php«.

Este fichero recupera la información enviada del formulario en variables que luego haciendo uso de la sentencia INSERT INTO se agregara cono un registro a la base de datos.

<?php
require_once 'conexion.php';

if(isset($_POST['guardar'])){
try{

$nombre = $_POST['nombre'];
$apellidos = $_POST['apellidos'];
$direccion = $_POST['direccion'];
$telefono = $_POST['telefono'];
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO `usuarios` (`nombre`, `apellidos`, `direccion`, `telefono`) VALUES ('$nombre', '$apellidos', '$direccion', '$telefono')";
$db->exec($sql);
}catch(PDOException $e){
echo $e->getMessage();
}

$db = null;

header('location: index.php');
}

?>

Eliminar múltiples registros

Cuando el usuario marca las casillas a eliminar y luego presiona el botón borrar, esa selección haciendo uso de un formulario será enviado al fichero borrar.php. Sin embargo, tenemos que hacer uso de la sentencia DELETE y WHERE de MySQL.

<?php
require_once 'conexion.php';

if(isset($_POST['borrar'])){
if(isset($_POST['check'])){
$checked = $_POST['check'];
for($i=0; $i < count($checked); $i++){
$id = $checked[$i];
$query = $db->prepare("DELETE from `usuarios` WHERE `usu_id`='$id'");
$query->execute();
}

header('location:index.php');
}else{
echo "<script>alert('Primero seleccione un registro!')</script>";
echo "<script>window.location='index.php'</script>";
}
} 
?>

Fichero script.js

La principal función de este archivo es de:

  • Contar casillas marcadas
  • Marcar una a una las casillas
  • Seleccionar todas las casillas de verificación

Nota: Para que este script funcione, asegúrese de guardar este archivo dentro del directorio JS y declarar la ruta correcta.

function selectedCheckbox(check){
var checkboxes = document.getElementsByName('check[]');
for(var i in checkboxes){
checkboxes[i].checked = check.checked;
}

var count = document.querySelectorAll('input[name="check[]"]:checked').length;
document.getElementById('count').innerHTML = count;
}

function countCheckbox(){
var count = document.querySelectorAll('input[name="check[]"]:checked').length;
document.getElementById('count').innerHTML = count;
}

Conclusión

Hemos creado con éxito una eliminación de varias filas usando PDO. sin embargo, nos basamos en JavaScript, PHP, PDO, MySQL.

Además, nos apoyamos en el ciclo FOR para poder eliminar los registros seleccionados. Por otro lado, también hemos usado el método POST para transferir la información.

Espero que este sencillo tutorial te ayude en lo que estás buscando y puedas implementarlo en tus proyectos.

Descargar

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba