:::: MENU ::::

PHP con MySQL: Eliminar Registros en MySQL

En artículos previos hemos explicado como interactuar con MySQL utilizando PHP, desde consultar, insertar y editar registros, ahora veremos como eliminar registros de manera sencilla. Si es que no has leído los artículos anteriores te recomiendo revisar:

Para eliminar registros seguiremos los siguientes pasos: primero haremos un listado de todos los registros de la tabla elegida, luego en el listado agregaremos un enlace a un archivo delete.php que se encargará de hacer la eliminación. Antes de eliminar el registro le preguntaremos al usuario si desea proceder con la eliminación. Finalmente eliminaremos el registro y redireccionaremos al usuario a listado de registros.

Crear el Listado de Registros

Para nuestro ejemplo utilizaremos la base de datos de ejemplo que contiene una tabla llamada empresa (Descargar el Script SQL). Creamos una consulta a la tabla ‘empresa’ y lo mostramos en una tabla HTML con un enlace a eliminar el registro.

<?php
// conexión a mysql
require("conexion.php");
require("funciones.php");
// consulta de registros
$query = "SELECT * FROM empresa ORDER BY nombre ASC";
$queEmp = mysql_query($query, $conexion);
?>
<html>
<head>
<title>Listado de Empresas</title>
</head>
<body>
<table>
  <?php while ($rsEmp = mysql_fetch_assoc($quEmp)) { ?>
  <tr>
    <td><?php echo $rsEmp['nombre']; ?></td>
    <td><?php echo $rsEmp['direccion']; ?></td>
    <td><a href="editar.php?id=<?php echo $rsEmp['id']; ?>">Editar</a></td>
    <td><a href="#" onclick="delEmpresa(<?php echo $rsEmp['id']; ?>);">Eliminar</a></td>
  </tr>
  <?php } ?>
</table>
<script type="text/javascript">
function delEmpresa(id) {
	if (window.confirm("Aviso:\nDesea eliminar el registro seleccionado?"))	{
		window.location = "delete.php?action=del&id="+id;	
	}
}
</script>
</body>
</html>

Hay que notar que en lugar de colocar un enlace directo a delete.php estamos llamando a una función Javascript delEmpresa, esta función le pregunta al usuario si esta seguro de eliminar el registro (Para evitar eliminar registros de manera accidental). Si el usuario acepta entonces redireccionamos a otra página donde pasamos el id del registro que deseamos eliminar.

Eliminar el registro

Creamos un archivo llamado delete.php el cual recibe dos parámetros: el identificador del registro un otro parámetro para verificar que acción se quiere realizar. Creamos la consulta para eliminar el registro y finalmente redireccionar al listado de registros.

// file: delete.php
require("conexion.php");
require("funciones.php");

$idempresa = getParam($_GET["id"], "-1");
$action = getParam($_GET["action"], "");

if ($action == "del") {
	$sql = "DELETE FROM empresa WHERE id = ".sqlValue($idempresa, "int");
	mysql_query($sql, $conexion);
	header("location: listado.php");
}

Notar que estamos utilizando dos funciones especiales:

  • getParam permite filtrar los datos enviados por el usuario y definir un valor por defecto (En el ejemplo si no se ha enviado el parámetro id devuelve como valor -1).
  • sqlValue permite formatear el tipo de dato que acepta la consulta (Por ejemplo se puede definir que el campo es entero int, si el usuario envía un cadena de texto esta función la convertirá a un entero).

Para finalizar les dejo los archivos con el código fuente que incluye el archivo de conexión y las funciones utilizadas en nuestro ejemplo.


21 Comentarios

  • Studio25 |

    Yo le agregaria a la consulta el or die(mysql_error());
    para que te muestre el error si es que ocurriera

  • Konami12 |

    En ocaciones no es muy bueno mostrar los errores ya que si esto tiene salida a internet puede generar problemas con los jackers bueno tomando en cuenta a que el desarrollador se le eolvide quitar esta sentencia ……

  • Alex |

    Buenaso pana… Felicitaciones es un BLOG estupendo e recomendado que lo visiten….

  • Anthony |

    Hey ami me dice que Fatal error: Call to undefined function getParam() in C:\AppServ\www\practica\delete.php on line 6 no se que significa ayuda si

  • unijimpe |

    Anthony, el mensaje te sale por que no tienes la función getParam, esta función se encuentra en el archivo funciones.php, asegúrate que tengas el archivo en la ruta adecuada.

  • Dante |

    Tengo el mismo error que Anthony, y no logro encontrar el archivo funciones.
    He seguido la serie de tutoriales que has expuesto,y no encuentro la función getParam declarada en alguno de ellos. A lo mejor me perdí de algo.
    Lastima que los ejemplos ya no estén para descarga,con eso me ayudaría.

  • Dante |

    Ya la encontre, en PHP con MySQL: Consultar datos en MySQL, está en uno de tus comentarios.
    Por si alguien lo necesita:

    function getParam($param, $default) {
    $result = $default;
    if (isset($param)) {
    $result = (get_magic_quotes_gpc()) ? $param : addslashes($param);
    }
    return $result;
    }

  • unijimpe |

    Dante la función getParam esta incluido en el archivo funciones.php en el archivo de descarga incluido en el post.

    Esta función se encarga de recibir una variable y limpiarle los apostrofes, además si no existe la variable se devuelve un valor por defecto.


    function getParam($param, $default) {
    $result = $default;
    if (isset($param)) {
    $result = (get_magic_quotes_gpc()) ? $param : addslashes($param);
    }
    return $result;
    }

  • Dante |

    Muchas gracias Jim. He seguido tu pagina hace un año, todos los ejemplos son buenos y funcionales.

  • juankar |

    Hola, me he descargado todos los archivos del enlace, y luego he copiado el texto del primer php, guardandolo como “eliminar_registro.php” en el mismo sitio que los demas archivos.
    Pues bien cuando me dirijo a “eliminar_registro.php” me da el error:

    Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/juankar/public_html/bases/eliminar_registro.php on line 29

    no tengo ni idea de php, me podeis ayudar?

    gracias. :-)

  • Patasmaggot |

    amigo descargue el archivo subi la base de datos y todo pero a la hora de editar me salen 2 errores

    notice: undefined index: action dice q en on line 6

    y

    notice: undefined index: status on line 39

    cual es la solucion? :C que debo hacer?

  • Galax │ diseño web |

    Justo lo que estaba buscando, Gracias por el tutorial me ha servido muchísimo , felicitaciones por su trabajo

    It’s great, Thanks for the tutorial has helped me very much, congratulations on your work

  • Gerardo |

    Fatal error: Call to undefined function get_magic_quotes_gpc() in C:\AppServ\www\eliminar\php-mysql-delete\funciones.php on line 5
    que se supone que significa??? no le he modificado nada

  • pequeña aprendiz |

    hola espeor no molestar lo que pasa que ya habia utilizado tu codigo y me funcionaba perfecto de la manera en que tu lo muestras lo que sucede es que ahora en el

    if ($action == “del”) {

    eliminar($id); //es una funcion que esta en otro php que recibe el id y genera la consulta delete pero no hace nada podrias decirme cual puede ser el problema gracias

    }

  • saryta |

    hola buenas nohces, he bajado tu codigo y funciona a la perfeccion, hice una copia para loque neceisto y lo modifque y me muestra todos los registros quetengo en mi bd pero en los tr eliminar y editar del archivo listado.php en cada uno me apareche lo siguiente:

    line34: <a href="editar.php?id=”>Editar –.> para este me aparece un aviso asi : Notice: Undefined index: id in C:\wamp\www\IMJUVENS3\listado.php on line 34

    <a href="#" onclick="delEmpresa();”>Eliminar–> para este me aparece un aviso así:
    “> Editar Notice: Undefined index: id in C:\wamp\www\IMJUVENS3\listado.php on line 35 Call Stack #TimeMemoryFunctionLocation 10.0010371952{main}( )..\listado.php:0 );”>Eliminar

    SE QUE DICE QUE EL INDEX ID ESTA INDEFINIDO LO QUE NO SE ES PORQUE , SI CON TU BASE DE DATOS ESTA TODO BIEN Y SI ME HACE LA ELMINACION, Y YA VI QUE SELECCIONARA LA BD CORRECTA Y TODO EL CODIGO, ASI QUE DE VDD NO ENTIENDO :S ME AYUDARIA MUCHO SI PUDIERAS EXPLICAR PORQUE CON TU CODIGO TAL CUAL SI , PERO SI LO CONECTAS A OTRA BASE DE DATOS APARECE EL LISTADO PERO NO TE DEJA NI ELIMINAR NI EDITAR,NO APARECEN ESOS TR CON SUS NOMBRES SOLO LOS AVISOS EN LOS LUGARES DE LOS NOMBRES DE ESOS TR

  • elyzabeth |

    descargue el archivo cree la BD y todo pero a la hora de editar me salen 2 errores
    notice: undefined index: action dice q en on line 6
    notice: undefined index: status on line 39

    A que se debe esto? :O.
    Te lo agradeceria saludos

  • Rikochett |

    Amigo, ¿y cómo sería para borrar el registro y una foto asociada a ese registro. Me explico, el id de una noticia y la foto asociada….

Publica tu comentario

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.