viernes, 14 de octubre de 2011

22. Buscar, modificar y suprimir registros de MySql

Hola! ¿Qué tal?


Cuanto tiempo... eh? pero a pesar del tiempo transcurrido aquí estoy fielmente siguiendo el curso, no os voy a dejar en la estacada. Este artículo lo voy a dedicar a buscar, modificar y suprimir registros en MySQL. Recordar que ya teníamos nuestra base de datos creada en MySQL llamada curso y creamos una tabla llamada clase con una serie de campos... ¿os acordáis? Si... espero que sí... y si no repasar las dos entradas anteriores.

Bien, teniendo esto claro, vamos al lío... Para eso crearemos tres archivos uno que será de consulta (consult.php), otro para buscar un registro (busca.php) y el otro para modificarlo (modifica.php).
Bien, el primer archivo consult.php tratará sobre un formulario muy básico para introducir el nombre a buscar. En el navegador tendrá una apariencia así:














El código es el siguiente:
<html>
<head>
<title>Buscar y modificar registros en PHP</title>
</head>
<body>
<H1>Consulta de registros</H1>
<FORM ACTION="busca.php">
Nombre:
<INPUT TYPE="text" NAME="nombre" SIZE="20" MAXLENGTH="30">
<INPUT TYPE="submit" NAME="accion" VALUE="Buscar">
</FORM>
</body>
</html>
Como veis es un formulario sencillo. Lo importante es lo que hay dentro de action que lo he resaltado en negrita que es el archivo busca.php, en el momento que hagamos clic al botón Buscar nos redireccionará a esta página a busca.php Vamos ahora a crear el archivo busca.php cuyo código es el siguiente:
<html>
<body>
<?php
include("conec.php");
$link=Conectarse();
$Sql="select * from clase where nombre like '%$nombre%'";
$result=mysql_query($Sql,$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD>&nbsp;Nombre</TD>
<TD>&nbsp;Apellidos&nbsp;</TD>
<TD>&nbsp;Direccion&nbsp;</TD>
<TD>&nbsp;Telefono&nbsp;</TD>
<TD>&nbsp;Email&nbsp;</TD>
</TR>
<form name="form1" method="post" action="modifica.php">
<?php
while($row = mysql_fetch_array($result))
{
printf("<tr><td><INPUT TYPE='text' NAME='nombre' SIZE='20'
MAXLENGTH='30' value='%s'></td><td>&nbsp;<INPUT TYPE='text'
NAME='apellidos' SIZE='20' MAXLENGTH='30'
value='%s'>&nbsp;</td><td>&nbsp;<INPUT TYPE='text'
NAME='direccion' SIZE='20' MAXLENGTH='30'
value='%s'>&nbsp;</td><td>&nbsp;<INPUT TYPE='text'
NAME='telefono' SIZE='20' MAXLENGTH='30'
value='%s'>&nbsp;</td><td>&nbsp;<INPUT TYPE='text'
NAME='email' SIZE='20' MAXLENGTH='30'
value='%s'>&nbsp;</td></tr>",
$row["nombre"],$row["apellidos"],$row["direccion"],$row["telefono
"],$row["email"]);
}
mysql_free_result($result);
?>
</form>
</body>
</html>
En este archivo ya conectamos con la tabla clase para que haga un rastreo para buscar el nombre que le hemos indicado. Si coincide con alguno que tenemos en la base de datos nos aparecerá los datos completos, es decir, nos aparecerá el nombre, apellidos, dirección, etc.
Fijaros que he hecho un include al archivo conec.php creado en la entrada anterior y es para conectar a la base de datos, es por comodidad y para no estar escribiendo todo el rato lo mismo, es para simplificar.
Y por último creamos el archivo modifica.php para modificar los registros:
<?php
include("conec.php");
$link=Conectarse();
$Sql="UPDATE clase SET nombre='$nombre',
apellidos='$apellidos', direccion='$direccion', telefono='$telefono'
email='$email' WHERE nombre='$nombre'";
mysql_query($Sql,$link);
?>
Con estos tres archivos creados ya podemos hacer un pequeño ejemplo.
Abrimos la página consult.php e introducimos un nombre y le damos clic al botón Enviar

















Y seguidamente nos redirecciona a la página busca.php:














En este caso como el nombre que buscamos coincide con un registro que tenemos almacenado en la base de datos aparecerá en pantalla. Aquí podemos modificar el nombre de Ana por Sofia para modificar el nombre, me falta el botón Enviar, que no lo he puesto para que lo hagáis vosotros y discurráis un poco, si tenéis dudas me  enviáis un comentario o un mail.
select.php) y otro para borrar el registro (supr.php).
Vamos a ello. Creamos el archivo select.php














El código de este archivo:
<html>
<head>
<title>Borrar registros en PHP</title>
</head>
<body>
<H1>Borrar registros de la de base de datos MySQL</H1>
<?php
include("conec.php");
$link=Conectarse();
$result=mysql_query("select * from clase",$link);
?>
<TABLE BORDER=1 CELLSPACING=1 CELLPADDING=1>
<TR>
<TD>&nbsp;Nombre</TD>
<TD>&nbsp;Apellidos&nbsp;</TD>
<TD>&nbsp;Direccion&nbsp;</TD>
<TD>&nbsp;Telefono&nbsp;</TD>
<TD>&nbsp;Email&nbsp;</TD>
<TD>&nbsp;Borra&nbsp;</TD>
</TR>
<?php
while($row = mysql_fetch_array($result)) {
printf("<tr><td>&nbsp;%s</td><td>&nbsp;%s&nbsp;</td><td>&nbsp
;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td><td>&nbsp;%s&nbsp;</td>
<td><a href=\"supr.php?id=%d\">Borra</a></td></tr>",
$row["nombre"],$row["apellidos"],$row["direccion"],$row["telefono
"],$row["email"],$row["ID"]);
}
mysql_free_result($result);
?>
</table>
</body>
</html>
Hacemos clic en Borra del registro de Enrique, y comprobamos en la base de datos MySQL que no aparece ese registro:













Buenos pues ya hemos visto una introducción a las bases de datos de MySQL. Si queréis tener un conocimiento más amplio me enviáis un mail y os enviare tutoriales acerca de las bases de datos en MySQL. No quiero entretenerme mucho en esto puesto que el blog lo quiero dedicar expresamente a PHP y todavía nos quedan muchas cosas por ver. De momento, podéis ir practicando vosotros con lo que hemos visto de MySQL. En la próxima entrada veremos como autentificarse en la red. Hasta pronto!


27 comentarios:

  1. pero no aparece el modulo de conec.php. Espero y lo puedas poner. Gracias y por cierto muy bueno el tuto

    ResponderEliminar
    Respuestas
    1. Si te vas al post 20 hay un archivo llamado conecta.php. Ese sería similar al conec.php quizás tengas que cambiar el nombre de la base de datos, el nombre de las tablas. Ya me dices como te ha ido.

      Eliminar
  2. hola me ha ayudado mucho tu blog pero tengo una duda el archivo select.php y supr.php no aparecen o como se hacen me podrias ayudar porfavor. Muchas gracias un saludo

    ResponderEliminar
    Respuestas
    1. Hola Hector. El código del archivo select.php si que esta. Fijate en el post, concretamente es el último.
      En cuanto al archivo supr.php tienes razón. Pero es muy parecido al de modifica.php, pero en vez de escribir UPDATE, pondríamos DELETE:

      Eliminar
    2. hola mucha sgracias te agradesco tu atencion pero no me deja modificar el buscador ya me salio pero no me deja modificar

      Eliminar
  3. hola mucha sgracias te agradesco tu atencion pero no me deja modificar el buscador ya me salio pero no me deja modificar

    ResponderEliminar
  4. hola disculpa una pregunta mira lo que pasa es que utilice tu codigo y si me elimina pero hay un problema ami me elimina todo lo que hay en la tabla de mi base de datos y quiero sabes de donde sacas ese id=%d en el link de borra en esta parte:

    y si soy yo lo mas seguro que si sea mi error cual seria
    yo tengo cveCliente como clave primaria y auto incremento nombre,apell,alias etcetera quiero que me elimine un usuario no todos que error tengo por favor si me puedes ayudar

    ResponderEliminar
    Respuestas
    1. Si tienes cveCliente como clave primaria, utilízalo en lugar de id, lo que te esta pasando es que no estas definiendo concreta mente ningún id y eso provoca que se eliminen todo los datos y no solo el del identificador.
      Suerte.

      Eliminar
  5. queria solicitar tu ayuda ya que estoy en un proyecto en el que necesito borrar registros de la manera en la que vos lo haces y no puedo debido a un error con las variables que se me genera en el archivo supr.php , no entiendo porque hago set en las columnas llamandolas como variables y no tienen valor alguno..como hago para que me borre la columna

    ResponderEliminar
  6. buen tuto pero tengo una pregunta

    al consultar un registro por ejemplo nombre y si hay mas de dos nombres iguales que me enlace a una tabla donde me salgan esos nombres y elegir cual quiero modificar

    ResponderEliminar
  7. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  8. Hola gracias por este blog. He creado una tabla cliente para probar el codigo sin embargo me genera un error y no veo q estoy haciendo mal. aL colocar:
    $Sql="select * from cliente where nombre like '%$nombre%'";
    Me genera un error Undefined variable nombre.
    Entonces lo cambie por este codigo:
    $busqueda=$_POST['busqueda'];
    $conexion=Conectarse();
    $sql="SELECT * FROM cliente WHERE CEDULA LIKE '%$busqueda%' OR NOMBRE LIKE '%$busqueda%';";
    y ahora genera este error:
    Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given en la linea 22 que tiene esto:
    while($row = mysql_fetch_array($result)) {
    y en la linea 39 donde tengo esto:
    mysql_free_result($result);
    Por favor si pudieran orientarme lo agradeceria

    ResponderEliminar
  9. Cuando intento eliminar se eliminan todos los registros presentes.

    ResponderEliminar
  10. muy buen tuto, pero me manda todo el contenida de la tabla, no me filtra la busqueda, me podrias apoyar con eso.

    ResponderEliminar
  11. Hola me podrias ayudar me da el siguiente error:

    Fatal error: Call to undefined function Conectarse() in /home/tvlosalt/public_html/search3.php on line 37


    search3.php es tu busca.php

    Gracias de antemano.

    ResponderEliminar
  12. hola me sale el siguiente eeror como lo soluciono
    Notice: Undefined variable: nombre in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 5

    Notice: Undefined variable: apellidos in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 5

    Notice: Undefined variable: direccion in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 5

    Notice: Undefined variable: telefono in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 6

    Notice: Undefined variable: email in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 6

    Notice: Undefined variable: nombre in C:\xampp\htdocs\Busqueda Datos Fernando\supr.php on line 6

    ResponderEliminar
  13. me aperece este error
    Notice: Undefined variable: nombre in C:\wamp\www\proyecto\busca.php on line 6

    ResponderEliminar
  14. viejo me podrias decir que tiene en la funcion conectarse? es urgente viejo. gracias

    ResponderEliminar
  15. Me sale este error y ya lo e intentado con otras variable pero me tira a lo mismo alguna sugerencia????
    Este es el error
    Notice: Undefined variable: nombre in /home/practicantes/heidi_aaron/buscar/busca.php on line 6
    HELLLPPP MYYYYYYY!!!!!!!1

    ResponderEliminar
  16. falto el boton de modificar cpuedes poner el codigo?

    ResponderEliminar
  17. hola dond dice link que coloco porq me sale error

    ResponderEliminar
  18. hola dond dice link que coloco porq me sale error

    ResponderEliminar
  19. Hola que tal, veras he usado tu codigo y funciona lo de buscar, pero el echo esta en que me aparece la consulta de varias personas, si quier que sea una consulta exacta es decir de un id solo como puedo hacer esto, gracias

    ResponderEliminar
  20. Hola. Te felicito muy clara tu explicación
    Te consulto ¿cómo soluciono este error?
    Notice: Undefined variable: nombre in C:\wamp\www\proyecto\busca.php on line 6

    ResponderEliminar