Este es un ejemplo completo de una operación de borrado de un registro de la base de datos con PHP, con un formulario que recoge los datos y una página que los recibe y hace el borrado con PHP.
En este artículo vamos a realizar otra de las operaciones elementales que se pueden realizar sobre una base de datos, como es el borrado de un registro de una tabla. Para hacerlo, SQL nos propone sentencias del tipo delete
. Veremos a continuación un ejemplo aplicado a nuestra agenda.
Para hacer la operación de borrado del registro con PHP tendremos que realizar dos pasos, como ocurría con el ejemplo de actualización de un registro. De hecho el código es bastante similar, como podrás comprobar. Además, nos basaremos en el código de conexión con la base de datos que venimos utilizando desde el artículo que venía realizando el trabajo con las bases de datos en PHP. Si tienes cualquier duda, te recomendamos que empieces por ahí la lectura.
Seleccionar el registro a borrar
Primero debemos seleccionar el registro que se desea borrar y luego realizar el borrado propiamente dicho. Para poder seleccionar el registro crearemos un menú desplegable dinámico, campo select
de formulario, donde se podrá seleccionar el elemento que se desea borrar. Luego se pasará a una página PHP una referencia al elemento seleccionado, para borrarlo de la base de datos.
El primer bloque de código muestra la operación de selección de los registros de la tabla y su incorporación en un campo select
para que el usuario pueda seleccionar qué elemento necesita borrar.
Recuerda que empezamos siempre creando el objeto conexión con la base de datos. Para lo que usaremos el include que contiene el código de generación de la conexión:
<?php
include "conexion.php";
$conexion = conexion();
?>
Ese include ya lo hemos usado varias veces. Consulta artículos anteriores del Manual de PHP si necesitas más información.
Ahora podemos construir el formulario haciendo la consulta de selección.
<form method="POST" action="borrar.php">
Nombre<br>
<?php
//Creamos la sentencia SQL y la ejecutamos
$ssql="select nombre from clientes order by nombre";
$result = $conexion->query($ssql);
echo '<select name="nombre">';
//Mostramos los registros en forma de menú desplegable
while ($row = $result->fetch_array()) {
echo '<option>'.$row["nombre"];
}
$result->free_result();
?>
</select>
<br>
<input TYPE="submit" value="Borrar">
</form>
No debería ser muy extraño ya este código para ti. Con él tendremos nuestro campo <select>
poblado con todos los nombres de los contactos de la agenda, uno por cada <option>
.
Hay un detalle aquí que por simplicidad se ha hecho así pero que no es específicamente la manera común de trabajar. Ya lo comentamos en el artículo de la actualización y es que generalmente las tablas tienen id autonuméricos y lo que se hace para identificar el registro que se desea borrar es usar justamente ese autonumérico. De momento lo dejamos así pero veremos ejemplos más adelante más completos donde se usen los autonuméricos para poder zanjar posibles dudas.
Borrado del registro con PHP
El siguiente paso es hacer efectiva la operación de borrado a partir de la ejecución de la sentencia SQL delete
. Esta sentencia la tenemos que construir a partir de los datos que nos vienen del formulario anterior, con el nombre del registro a borrar.
El código está dividido en los tres típicos pasos que hemos realizado en ejemplos anteriores, creo que lo podemos ver directamente porque ya nos resultará muy familiar.
// Recibimos los datos del formulario
$nombre = $_POST["nombre"];
//Creamos la sentencia SQL
$ssql = "delete from clientes where nombre='$nombre'";
// Ejecutamos la sentencia de borrado
if($conexion->query($ssql)) {
echo '<p>Contacto borrado con éxito</p>';
} else {
echo '<p>Hubo un error al borrar el contaco: ' . $conexion->error . '</p>';
}
En este caso observarás cómo se crea una sentencia SQL delete
, en la que indicamos qué registro borrar con el where
.
Al ejecutarse la sentencia SQL de delete
usamos el objeto de conexión con la base de datos y nos devuelve un boleano indicando si pudo o no realizarse la operación correctamente.
Todo el código de borrado junto
Ahora veremos el listado del código completo de este ejemplo, que se ha concentrado en un mismo archivo, con un esquema de autollamada que ya conoces.
<!DOCTYPE html>
<html lang="es">
<head>
<title>Borrar registros de la base de datos</title>
</head>
<body>
<div>
<h1>Borrar un registro</h1>
<br>
<?php
include "conexion.php";
$conexion = conexion();
if(! $_POST) {
?>
<form method="POST" action="borrar.php">
Nombre<br>
<?php
//Creamos la sentencia SQL y la ejecutamos
$ssql="select nombre from clientes order by nombre";
$result = $conexion->query($ssql);
echo '<select name="nombre">';
//Mostramos los registros en forma de menú desplegable
while ($row = $result->fetch_array()) {
echo '<option>'.$row["nombre"];
}
$result->free_result();
?>
</select>
<br>
<input TYPE="submit" value="Borrar">
</form>
<?php
} else {
// Recibimos los datos del formulario
$nombre = $_POST["nombre"];
//Creamos la sentencia SQL
$ssql = "delete from clientes where nombre='$nombre'";
// Ejecutamos la sentencia de borrado
if($conexion->query($ssql)) {
echo '<p>Contacto borrado con éxito</p>';
} else {
echo '<p>Hubo un error al borrar el contaco: ' . $conexion->error . '</p>';
}
}
$conexion->close();
?>
<p>
<a href="borrar.php">Borrar otro registro</a>
</p>
<p>
<a href="actualizar.php">Actualizar</a>
</p>
<p>
<a href="seleccionar.php">Listar</a>
</p>
</div>
</body>
</html>
Con este capítulo hemos completado la lista de operaciones típicas sobre la base de datos con PHP. Para mas información relacionada podéis referiros al taller de PHP donde podréis encontrar algún que otro artículo interesante al respecto. Asimismo, para los que prefieran el vídeo como material didáctico, recomendamos ver el Videotutorial sobre las bases de datos con PHP.
Rubén Alvarez
Rubén es doctor en química y programador principalmente en sus ratos libres con...