Actualizando (UPDATE) registros de una BD MySQL usando PHP

Lo prometido es deuda, por eso aquí les traigo otro ejemplo de como hacer cosas elementales, en este caso, actualizar registros guardados en una tabla de nuestra base de datos MySQL, usando PHP.

Para ello usaremos una sencilla tabla de ejemplo, un par de archivos php: mostrar-registros.php y actualizar.php.

NOTA: Para no complicar mucho esto, la tabla MySQL y el archivo mostrar-registros.php son exactamente iguales a los que usamos en el ejemplo de borrar los registros, aunque con una mínima diferencia que veremos a continuación.

Mostrar los registros:

El único cambio en este archivo es que agregaremos un vinculo que nos servirá para pasar como variable el ID del registro a actualizar a la pagina que se encargara de hacer el trabajo (actualizar.php).

<?php
// solo agregamos una linea
// al bucle while
// quedaria asi
while($row = mysql_fetch_array($sql)){
echo $row['usuarioNombre']." - ".$row['usuarioEmail'].
" - <a href='eliminar.php?id=$row[usuario_ID]'>Eliminar</a> | <a href='actualizar.php?id=$row[usuario_ID]'>Actualizar</a>\n";
}
?>

Hablando en buen cubano, ya estamos listos para ir al pollo del arroz con pollo :P

Actualizando los registros

Como pudimos ver, en la linea que hemos agregado a nuestro archivo mostrar-registros.php, lo que hacemos es pasar vía $_GET el ID del registro con el que vamos a trabajar al archivo actualizar.php. Nos apoyaremos en un formulario HTML para ejecutar la consulta UPDATE, pero primero tenemos que recoger los datos que vamos a actualizar usando otro consulta SELECT. Bueno, al pollo.

<?php
/** conexion ***************************/
// conectamos a la base de datos
$link = mysql_connect('localhost', 'root', '');
if(!$link) {
die("Error al intentar conectar: ".mysql_error());
}
// seleccionamos la base de datos
$db_link = mysql_select_db('base-de-datos', $link);
if(!$db_link) {
die("Error al intentar seleccionar la base de datos". mysql_error());
}
/** fin conexion ************************/
// recogemos el ID
// del registro a actualizar
if(isset($_GET['id'])){
$id = $_GET['id'];
// hacemos una consulta
// para mostrar los datos
$sql = mysql_query("SELECT * FROM usuarios
WHERE usuario_ID = $id", $link)
or die(mysql_error());
$row = mysql_fetch_array($sql);
// advertimos
$mensaje = "Actualizar los datos del usuario <b>$row[usuarioNombre]</b>";
}
// comprobamos si
// ha sido enviado el formulario
if(isset($_POST['actualizar']) && $_POST['actualizar'] == 'Actualizar'){
// comprobamos que no lleguen campos vacios
if(!empty($_POST['usuarioNombre']) && !empty($_POST['usuarioEmail']) && !empty($_POST['usuarioDNI'])){
// creamos las variables
// que vamos a usar en la consulta UPDATE
// y le asignamos sus valores
$usuario_ID = $_POST['usuario_ID'];
$usuarioNombre = $_POST['usuarioNombre'];
$usuarioEmail = $_POST['usuarioEmail'];
$usuarioDNI = $_POST['usuarioDNI'];
// la consulta UPDATE
$sqlUpdate = mysql_query("UPDATE usuarios
SET usuarioNombre = '$usuarioNombre',
usuarioEmail = '$usuarioEmail',
usuarioDNI = '$usuarioDNI'
WHERE usuario_ID = '$usuario_ID'", $link)
or die(mysql_error());
echo "Registro actualizado correctamente";
}else{
echo "debe llenar todos los campos";
}
}else{
// mostramos el mensaje
echo "<p>".$mensaje."</p>";
?>
<!--
el formulario.
los values de los campos
son los valores que optenemos
de la consulta SELECT
-->
<form name="actualizar-registro" method="post" action="<?php $_SERVER['PHP_SELF']; ?>">
Nombre: <input type="text" name="usuarioNombre" value="<?php echo $row['usuarioNombre']; ?>" /><br />
E-mail: <input type="text" name="usuarioEmail" value="<?php echo $row['usuarioEmail']; ?>" /><br />
DNI: <input type="text" name="usuarioDNI" value="<?php echo $row['usuarioDNI']; ?>" /><br />
<input type="hidden" name="usuario_ID" value="<?php echo $row['usuario_ID']; ?>" />
<input type="submit" name="actualizar" value="Actualizar" />
</form>
<?php } ?>

NOTA: Nótese que el ultimo else cierra debajo del formulario, la función que tiene es esconder el mismo, una vez enviado ;)

Conclusiones:

Como siempre digo, espero que este y los demás ejemplos sirvan de utilidad a los que se inician, que es a quienes van dirigidos. Dada la sencillez de los mismos, esta claro que a estos les faltan algunos detalles que ustedes irán descubriendo a medida que avancen por este camino, interminable además, que es la programación.

NOTA: Recuerda que en el ejemplo de como borrar los registros están la tabla MySQL y el archivo mostrar-registros.php que sirven para este que estas leyendo ahora.

Saludos y Suerte

32 Responses to Actualizando (UPDATE) registros de una BD MySQL usando PHP

32 Comments

  1. Raul Trejo says:

    Te agradezco de nuevo
    me sirvieron mucho tus posts
    :)

  2. etzekiel says:

    Hola! he implementado este UPDATE en tu Sistema de Noticias pero me aloja el siguiente error:
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ” at line 1
    La version que tengo en el server es 5.0.37 que sera?

  3. rogertm says:

    @etzekiel lo que te está diciendo es que tienes un error en la linia 1 de la consulta… debe ser aqui: UPDATE usuarios… lo que no puedes hacer es copiar y pegar, pues WP modifica las comillas y te puede dar un error.

    Saludos

  4. etzekiel says:

    Hola otra vez, si cambie las comillas, lo que me paso es que me perdi en el còdigo pero lo he resuelto muchas gracias… he visto que posteaste tu tutorial en maestros del web… ahì RODRIASTU te hizo una pregunta de como agregarle una “fotico” a las noticias lo que le respondiste que con FCK-editor… ahora mi pregunta: como?. He aprendido como subir imagenes a una carpeta y gracias a ti a subir informaciòn, pero aun no logro subir imagenes y texto a la par (no creo que sea imposible pero sin duda me esta costando). Ahora, abusando de tu cordialidad sera posible que me aconsejes que leer? algùn tutorial que creas que me sirva para implementar este editor? bueno, he logrado que funcione como text area pero fotoos? aùn no se como hacerle… bueno, muchas gracias, de todas formas sigo en la batalla. un saludo!

  5. rogertm says:

    Hola @etzekiel, te dejo un link aquí que te puede resultar explicativo:
    http://www.forosdelweb.com/2321638-post24.html

    Oye pase trabajo para encontrarlo, jejeje, espero te ayude.

    Saludos y Suerte

  6. Net says:

    Efectivamente el script es bueno en lo que hace, solo hay que cambiar las comillas.

    Es un claro ejemplo de como usar el UPDATE.

  7. Jesus says:

    Uno de los mejor explicados en toda la web!! Muchas gracias. Con gente como tu, los demas podemos aprender!

  8. Alan says:

    Hola man eres un master muchas gracias por este gran aporte te felicito !!

  9. juan Pablo says:

    Muchas gracias amigo!

  10. es necesario llenar todos los campos para que se realice la actualización? Ya repase miles de veces mi php pero aun asi no me deja actualizar yncluso me base en el tuyo y ya no se que hacer

  11. rogertm says:

    @Uriel Albarrán Oropeza en el ejemplo que tenemos aquí si, hay que llenar todos los campos, osea, si vas a actualizar un registro, no debes dejar el campo nombre vacío, entiendes?

    Si tienes otros campos que se pudieran quedar sin llenar, como puede ser teléfono móvil por ejemplo, entonces no lo pasas en la línea que dice:
    if(!empty($_POST['usuarioNombre']) && !empty($_POST['usuarioEmail']) …){

    }

    Inténtalo así a ver si te da resultado

    Saludos

  12. Mateo says:

    Te lo agradezco me ha servido mucho felicitaciones por el blog

  13. Alucard says:

    que onda tengo un problemilla, lo que pasa que cuando le doy al boton actualizar me sale el mensaje: debe de llenar todos los campos, y los estoy llenando todos, no sabes a que se deba?

  14. Esteban says:

    Muchas gracias me saco de un apuro jejeje

  15. efrenytaaa punk says:

    que ay nop se como actualizar registros en my sql???? xfavor algun chico que me ayudeeehh tengo un examen mañana y no se nada sobre eso

  16. Antonio Ramirez says:

    Buenas noches
    Soy estudiante de informatica y tengo una inquietud, te agradeceria mucho si me colaboras.
    Estoy tratando de hacer un grid o rejilla para hacer un programa de facturacion que capture codigo, nombre,cantidad y valor n veces . El desarrollo lo estoy haciendo en html y php pero no se como hacer el grid o rejilla y mucho menos como pasar los datos del grid a la base de datos.
    He buscado en libros y en internet durante meses pero a sido imposible. No he encontrado un ejemplo a partir del cual empezar a trabajar. He escuchado hablar de AJAX y de otras soluciones pero no se como funciona ni como integrarlo con php y html.
    Te agradeceria mucho tu colaboracion.
    Gracias
    Antonio Ramirez

  17. lprs says:

    utilice tu tutorial es muy util pero tengo un problema no me actualiza mi error es el sigiente Algo está equivocado en su sintax cerca ‘WHERE id_solicitud = ’2” donde la id_solicidud es el parametro que se envia en el link actualizar ahi otra forma de enviar ese parametro

  18. lprs says:

    hola es que tengo un problema con la sentencia
    WHERE usuario_ID = $id", $link)
    me dice que algo esta mal no si la comparacion de dos string se haga asi ,
    que tengo que agrgarle para qeru funcione muchas gracias

  19. jis says:

    aja supr sto

  20. pollitux says:

    Que tal otra ves por aqui jejej muy bueno el post pero tengo un problemilla que no logro resolever he acomodado tu modo de actualizar los datos de mi bd pero me marac unas notificaciones:
    Notice: Undefined index: id in C:\Archivos de programa\EasyPHP3.1\www\ingles\es\admin\modificar.php on line 40

    Notice: Undefined index: no_studentst in C:\Archivos de programa\EasyPHP3.1\www\ingles\es\admin\modificar.php on line 41

    Notice: Undefined index: break_time in C:\Archivos de programa\EasyPHP3.1\www\ingles\es\admin\modificar.php on line 43
    Registro actualizado correctamente
    no se a que se deba haber si me puedes ayudar y gracias!!!

  21. Isac says:

    hola man. antes que nada, gracias por tus aportes.
    soy novato en esto de php.
    todo lo explicado aki me salio perfecto.
    aprebechando tu noblesa, me gustaria saber como agregar registros.(ususarios,etc)
    si pudieras postearlo o mandarmelo a mi correo, te lo agradeceria muchisimo.
    bye suerte en todo man. mil gracias.

  22. Wiserlander says:

    Hola, la verdad es que aun no he probado tus aportes , pero lo haré.
    El mero hecho de compartir conocimientos rogertm, por supuesto que ya es de agradecer.
    En fin, GRACIAS! por compartir, saber, tiempo y dedicación.

    P.D. Aunque solo es mi opinión, y pretendo comunicarla sin ofender ni molestar, me parece que hay millones de imagenes mas agradables que [administrator.jpg], lo dicho, solo es una opinión.

    Saludos desde Tenerife, la isla picuda.

  23. Antonio says:

    Muchas Gracias !!! me ayudo mucho para mi proyecto de BD

  24. lalo says:

    amigoo! en verdad muchas gracias,, creo q busque en todas partes y nada :P y aqui fue mi salvacion, funciono al 100%.
    Gracias xD

  25. Luis says:

    el mejor post que encontre de este ejemplo muy buena brother muy buena chevere justo lo que necesitaba
    gracias me funciono perfercatamente, el eliminar me arroja un mensaje pero seguro que lo soluciono !!! gracias

  26. alexis says:

    MUY BUEN APORTE TODO TE AGRADESCO POR COLABORAR CON TODAS AQUELLAS PERSONAS QUE NOS ESTAMOS INICIANDO EN LA PROGRAMACIÓN PERO TENGO UNA PREGUNTA COMO HAGO PARA QUE UNE VEZ QUE ELIMINE O ACTUALICE RE REDIRECIONE A LA PAGINA MOSTRAR-REGISTROS.PHP GRACIAS DE ANTEMANO POR SU COLABORACION

  27. Arnaldo says:

    Hola esta muy bueno tu tutorial, quisiera saber si podía hacerse por ejemplo cuando en un campo de texto le indico algún numero de identificación y me aparezcan los demás datos muy parecido al que explicaste aqui, no se si me entiendes la idea.!!!!

  28. pau says:

    hola, gracias por el post, era precisamente lo que andaba buscando dias atras y nada que lo encontraba… muchas gracias!!!

    tengo este mismo problemilla:

    que onda tengo un problemilla, lo que pasa que cuando le doy al boton actualizar me sale el mensaje: debe de llenar todos los campos, y los estoy llenando todos, no sabes a que se deba?

  29. julio says:

    Muchas gracias por este aporte, ya no sabia donde buscar un ejemplo q funcione

  30. Pedro Astudillo says:

    Verdaderamente eres un genio!!!!!!…..
    Yo que antes sabia web hablo de hace 4 años, casi el mismo tiempo del post, me pase mas de 12 horas queriendo armar un grid y en base al registro que selecciones actualizas datos.

    De verdad gracias te debo una!!!!

    POr fin podre graduarme je je je.

  31. El mejor manual para actualizar datos que he leido en toda la web hasta ahora…
    Muchas grácias por vuestro tiempo! De verdad, es un gusto poder encontrar información tan buena en internet.

    Un saludo!

  32. Fer says:

    Excelente tutorial, me sirvio muchisimo. Solo tengo una consulta, es posible que actualicemos o modifiquemos solo algunos registros de la tabla, por ejemplo yo tengo un campo donde guardo la ruta de una imagen, le asigno en VALUE el valor de ese campo en la tabla, osea la ruta, pero si lo dejo tal y como esta, no me permite actualizar puesto que aparenta no tener la imagen fisica para subirla y actualizar el registro, no sé si me comprendes y si tendrás alguna solución para un problemilla como este?

    Desde ya gracias!

    F.

0 Pinkbacks | 0 Trackbacks

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>