dominios y alojamiento web en hostalia

Borrado de un registro con PHP

01 de enero de 2001
Valoración del artículo:
Aprendemos a eliminar registros de una tabla de base de datos, con un ejemplo práctico en PHP.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Otra de las operaciones elementales que se pueden realizar sobre una base de datos es borrar un registro. Para hacerlo, SQL nos propone sentencias del tipo Delete. Veámoslo con un ejemplo aplicado a nuestra agenda.

Cabe señalar que primero debemos seleccionar el registro que se desea borrar y luego realizar el borrado propiamente dicho. Para ello crearemos un menú desplegable dinámico, 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.

<HTML>
<HEAD>
<TITLE>Borrar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Borrar un registro</h1>
<br>

<?
//Conexion con la base
mysql_connect("localhost","tu_user","tu_password");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");

echo '<FORM METHOD="POST" ACTION="borrar2.php">Nombre<br>';

//Creamos la sentencia SQL y la ejecutamos
$sSQL="Select nombre From clientes Order By nombre";
$result=mysql_query($sSQL);

echo '<select name="nombre">';

//Mostramos los registros en forma de menú desplegable
while ($row=mysql_fetch_array($result))
{echo '<option>'.$row["nombre"];}
mysql_free_result($result)
?>

</select>
<br>
<INPUT TYPE="SUBMIT" value="Borrar">
</FORM>
</div>

</BODY>
</HTML>

El siguiente paso es hacer efectiva la operación a partir de la ejecución de la sentencia SQL que construimos a partir de los datos del formulario:

<HTML>
<HEAD>
<TITLE>Borrar2.php</TITLE>
</HEAD>
<BODY>
<?
//Conexion con la base
mysql_connect("localhost","tu_user","tu_password");

//selección de la base de datos con la que vamos a trabajar
mysql_select_db("mi_base_datos");

//Creamos la sentencia SQL y la ejecutamos
$sSQL="Delete From Clientes Where nombre='$nombre'";
mysql_query($sSQL);
?>

<h1><div align="center">Registro Borrado</div></h1>
<div align="center"><a href="lectura.php">Visualizar el contenido de la base</a></div>

</BODY>
</HTML>

Nota: Varios comentarios preguntan por el archivo lectura.php que está enlazado en el código del ejemplo. Tenemos que decir que ese archivo se comentó en el artículo de la Selección y lectura de registros de la base de datos por medio de PHP.

Con este capítulo cerramos el bloque de accesos a bases 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.

Compartir en redes sociales

Comentarios
Fueron enviados 27 comentarios al artículo
7 comentarios no revisados
20 comentarios revisados:
Por: Sergio
13/8/2004
Estuve mirando esta pagina y haciendo el ejemplo de insertar un nombre y telefono; pero al hacer el submit de cualquier ejercicio no envia nada a la base de datos. Yo trate directamente en la base de datos de insertar, borrar etc, y si puedo hacerlo pero no desde el web. Alguna idea de cual puede ser el problema???

RESPUESTA

Pues el error puede ser variable... no te puedo decir con seguridad, pero te puedo dar algún truco para empezar a investigar la fuente del error.

Para empezar, la función de PHP mysql_query() devuelve un entero, que se puede evaluar en un if para saber si hubo un error o no en la sentencia. Un código como este.

$ssql="insert into cliente (nombre_cliente) values ('pepe')";
if (mysql_query($ssql)){
    //si se consiguio insertar la empresa
    echo "todo correcto";
}else{
    //no se ejecuto la sentencia correctamente
    echo "hubo un error";
    echo mysql_error();
}

Otra función interesante que he utilizado en el código anterior es mysql_error(), que informa del error que se ha producido en MySQL y por el cuál la sentencia no ha sido correctamente ejecutada.

Por: Manuel
25/9/2004
Como hago para buscar dentro de los campos (ambos), en pocas palabras un buscador de registros...
Por: jacqueline
05/12/2004
podrias decirme de donde sacastes el archivo llamado "lectura.php"
Por: Rafael Morales
09/12/2004
Quiero aclarar algunas cositas:
Tengo una base de datos en un servidor y trate de ejecutar el ejemplo y no pude
1)q es ejemplo en esta lines $result=mysql_db_query("ejemplo",$sSQL);
Gracias
Por: Rafael Morales
09/12/2004
Quiero aclarar algunas cositas:
Tengo una base de datos en un servidor y trate de ejecutar el ejemplo y no pude
1)q es ejemplo en esta lines $result=mysql_db_query("ejemplo",$sSQL);
Gracias
Por: Jaime Morales
19/12/2004
con respecto a la duda que esta revisada me gustaria aclarar que el error no es la insercion sino la comunicacion entre las paginas...
Por: Juanjo
04/8/2005
Lo dicho en lo anteriores articulos de insertar y actualizar.

Antes:
$sSQL="Delete From Clientes Where nombre='$nombre'";

Corregido:
$sSQL="Delete From Clientes Where nombre='".$_POST['nombre']."'";

Saludos y Suerte.
Por: CARLOS GARRIDO
20/10/2005
veo que muchos de los errores que os dan están relacionadas con el fichero php.ini, que configura todas las variables como locales hasta el PHP 4 y a partir del PHP 5 no.

Por eso debes utilizar $_POST["var"] o $var dependiendo de que versión tengas instalada.

Muchos de estos errores os dan por poneros a hacer ejemplos sin haber leido nada de teoría.
Por: xotic_star
19/11/2005
la función mysql_db_query() ha sido obsoleta desde, creo PHP 5.X,,, usar mysql_query(),,, checar la documentación, no seais pendejos,
Por: carlos
14/1/2006
no me funciona; he probado $var, $_post, miles de veces,,,nada.
se que la pag recibe el post porque con echo veo el nombre, pero la query no la recibe.
help!!!
Por: David Castro
21/6/2006
El ejemplo esta correcto, solo dependera dea como este configuarado el server de hosting PHP y version.
por defecto se deberia marcar el metodo de donde llega la variable y darle una variable local:
$nombre=$HTTP_POST_VARS['nombre';
Luego solo en la consultas colocas $nombre

saludos
Por: Hely Rojas
29/6/2006
Todos los Ejemplos tiene un error:

PRIMERO: Los nombres de Tablas van entre comillas(raras)
Transcribo desde PHPmyAdmin
SELECT *
FROM `vendedores`
WHERE `documento` LIKE '%463744%'

SEGUNDO: Yo prefiero Leer la variable y luego la asigno en la consulta. por que la consulta queda mas clara.

Y eso mejor si es el valor de una cookie.

$sSQL="Delete From Clientes Where nombre='".$_POST['nombre']."'";

prefiero:
$xxx = $_POST['nombre'];
$sSQL="Delete From Clientes Where nombre='$xxx'";
Por: smalldeath@msn.com
14/1/2007
Juanjo:
Tu supuesta correccion no es correcion amigo ya que el query esta bien hecho

solo que en la variable $nombre se contempa como ya declarada anteriormente y tomar acciones en caso de que la variable no exista o este vacia, es decir algo asi

$name = $HTTP_POST_VARS['name'];
if (!isset($name)) {
echo "No se encontro la variable \"name\"";
exit;
}
if ($name == "") {
echo "Debes escribir un nombre <a href=\"javascript:history.back(-1)\">Atras</a>";
exit;
} else {
nombre='$nombre'";
$link = mysql_connect("localhost", "user","passwork");
mysql_select_db("database", $link);
$sSQL="Delete From Clientes Where id='$id'";
mysql_query("$sSQL",$link);
}
?>
No se mucho de esto, ya q tengo solo 16 años, asi q si tengo algun error disculpen

smalldeath@msn.com
Por: ana torres
08/3/2007
seria bueno que corriga su select esta interesante pero tiene error
error borrado
Por: Serief
18/4/2009
tengo un problemita, cargo los script y modifico la conexion pero no borra nada, entrando en la base borra perfecto, y tambien graba con un form en php, pero no borra, te agradeceria algo de ayuda

saludos !

hiromy
duda sobre el borrado
05/8/2009
hola soy nueva aqui y vi sobre el codigo de borrado y tengo una duda sobre mi codigo, la consulta la tengo en una pagina aparte que es esta:
<?php

$link = mysql_connect("localhost", "root");
mysql_select_db("estrategia",$link);
//$result=mysql_query("select nombre, empresa, giro from clientes where nombre or empresa or giro ='%key%'",$link);
$result=mysql_query("select nombre, empresa, giro from clientes",$link);
?>
<TABLE width="443" BORDER=1 align="center" CELLPADDING=1 CELLSPACING=1>
<TR>
<TD width="96"><span class="Estilo4">Nombre</span></TD>
<TD width="107"><span class="Estilo5">&nbsp;<B>Empresa</B>&nbsp;</span></TD>
<TD width="83"><span class="Estilo5">&nbsp;<B>Giro</B>&nbsp;</span></TD>
<TD width="75"><span class="Estilo5">&nbsp;<B>Modificar</B>&nbsp;</span></TD>
<TD width="54"><span class="Estilo5">&nbsp;<B>Borrar</B>&nbsp;</span></TD>
</TR><?
while($row = mysql_fetch_array($result)) {
?>
<TR>
<TD><? echo $row['nombre']; ?></TD>
<TD><? echo $row['empresa']; ?></TD>
<TD><? echo $row['giro']; ?></TD>
<TD><a href="modificar.html" class="Estilo6">Modificar</a></TD>
<TD><a href="desicion.php" class="Estilo6">Borrar</a></TD>
</TR>
<? } ?>
<?php

mysql_free_result($result);
mysql_close($link);
?>

y los links me llevan a la pagina para poder borrar o modificar como tengo en mi consulta el problema que tengo es que tengo muchos campos en mi base de datos pero en mi consulta solo muestro 3 como le hago para poder borrar solo el registro seleccionado por el link y que borre todos los datos que tengo en mi base de datos.
el codigo de borrar es el siguiente:
<?php


$link = mysql_connect("localhost", "root");
mysql_select_db("estrategia",$link);
$nombre=$_POST['nombre'];
$empresa=$_POST['empresa'];
$giro=$_POST['giro'];
$sql = mysql_query("delete from clientes",$link)or die("Error en query:".mysql_error() );
if($sql)
{
echo"<center>Se han borrado los datos satisfactoriamente";
}
else
{
echo "No se pudieron borrar intentelo nuevamente";
}



?>

espero que me puedan ayudar por favor.

Miguela
el ejemplo de clientes
07/5/2010
este codigo ya lo recbe y no actualiza,borrar me puede ayudar a resolver este problema por favor gracias.

$res="Update Clientes Set telefono=$telefono Where nombre='$nombre'";

$resultado= mysql_query($res);

$nombre=$_POST["nombre"];
$telefono=$_POST["telefono"];

$res="Delete From Clientes Where nombre='$nombre'";
$resultado= mysql_query($res);
echo "se ha borrado el registro".$resultado;
Mi Tesis
Por: KarelE
14/5/2010
Hola me encanta esta pagina soy fanatico al php y a las web espero que se mantenga esta pagina y no se pierdan mucho el año que viene me gradua de ingeniero informatico y mi objetivo es hacer una web que resuelva un determinado problema cuento con ustedes y gracias por dar a conocer sus concimeintos ...
Mil Gracias!
Por: Minombre
19/1/2011
Muchas gracias por toda la info, me ha servido mucho!
Gracias también a quien subió las correcciones, con eso funciona todo perfecto
falta archivo
Por: hernando
21/1/2011
hola, en tu tutorial falta la parte en la que hablas del archivo lectura.php

Manuales relacionados
Categorias relacionadas
El autor
Rubén Alvarez
Redactor de DesarrolloWeb.com
http://www.desarrolloweb.com
Lectura recomendada
Últimas noticias
Donaciones
Si piensas que te hemos ayudado y merecemos tu apoyo económico...