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

44 thoughts on “Actualizando (UPDATE) registros de una BD MySQL usando PHP

  1. 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?

  2. @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

  3. 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!

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

    Es un claro ejemplo de como usar el UPDATE.

  5. @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

  6. 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?

  7. 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

  8. 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

  9. 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

  10. 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

  11. 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!!!

  12. 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.

  13. 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.

  14. 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

  15. 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

  16. 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.!!!!

  17. 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?

  18. 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.

  19. 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!

  20. 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.

  21. gracias amigooo.. me sirvio mucho la informacion, espero poder encontrar mas informacion actualmente me encuentro realizando un sitio web aagradeceria poder contactarme contigo para futuras dudas … de nuevamente reintero mis agradecimientos

  22. Me sale un error en la linea 59 y 60 :/

    Notice: Undefined variable: row in C:\xampp\htdocs\probando\actualizar.php on line 59
    y lo mismo en la 60 :/

    59- Nombre: <input type="text" name="usuarioNombre" value="” />
    60- E-mail: <input type="text" name="usuarioEmail" value="” />

  23. amigo el codigo funciona pero no me modifica los datos en la Bd, me lo muestra perfecto para editar, pero no me modifica nada al final

  24. hola, saludos desde venezuela! estuve modificando el codigo a la pagina que estoy desarrollando pero no me trae los registros que quiero modificar, les dejo aca el codigo…

    RESH Modificar datos del Hardware
    Modificar datos del Hardware

    <?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("general", $link);
    if(!$db_link) {
    die("Error al intentar seleccionar la base de datos". mysql_error());
    }
    /** fin conexion ************************/
    // hacemos una consulta
    // para mostrar los registros
    $sql = mysql_query("SELECT * FROM hardware", $link) or die(mysql_error());
    // mostramos los registros
    while($row = mysql_fetch_array($sql)){
    echo $row["id_hardware"]." – ".$row["tipo"]." – ".$row["fabricante"]."Modificar\n”;
    }
    ?>

    y este es resh modificar2.php:

    Resh Modificar Hardware

    <?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("general", $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_hardware"])){
    $id = $_GET["id_hardware"];
    // hacemos una consulta
    // para mostrar los datos
    $sql = mysql_query("SELECT * FROM hardware WHERE id_hardware = $id", $link)
    or die(mysql_error());
    $row = mysql_fetch_array($sql);
    // advertimos
    $mensaje = "Actualizar los datos del hardware $row[tipo]“;
    }
    // comprobamos si
    // ha sido enviado el formulario
    if(isset($_POST["resh modificar"]) && $_POST["resh modificar"] == “Modificar”){
    // comprobamos que no lleguen campos vacios
    if(!empty($_POST["tipo"]) && !empty($_POST["fabricante"]) && !empty($_POST["estado"])){
    // creamos las variables
    // que vamos a usar en la consulta UPDATE
    // y le asignamos sus valores
    $id_hardware = $_POST["id_hardware"];
    $tipo = $_POST["tipo"];
    $fabricante = $_POST["fabricante"];
    $estado = $_POST["estado"];
    // la consulta UPDATE
    $sqlUpdate = mysql_query(“UPDATE hardware SET tipo = ‘$tipo’,fabricante = ‘$fabricante’,estado = ‘$estado’ WHERE id_hardware = ‘$id_hardware’”, $link) or die(mysql_error());
    echo “Registro actualizado correctamente”;
    }else{
    echo “debe llenar todos los campos”;
    }
    }else{
    // mostramos el mensaje
    echo “”.$mensaje.”";
    ?>

    <form name="resh modificar2" method="POST" action="”>
    tipo: <input type="text" name="tipo" value="” />
    fabricante: <input type="text" name="fabricante" value="” />
    estado: <input type="text" name="estado" value="” />
    <input type="text" name="id_hardware" value="” />

    soy novato en esto del php porfavor necesito su ayudaaaaaa :)

  25. antes que nada muchas gracias porque e sacado codigos aqui y me han servido muchisisimo pero con este tengo un pequeño problema hago todo como dice pongo lo que esta en mi base de datos, me salen los datos a actualizar pero al momento de modificar y darle al boton actualizar me manda “debe llenar todos los campos” este es mi codido

    <?php
    /** conexion ***************************/
    // conectamos a la base de datos
    $link = mysql_connect('localhost', 'alisson', 'alisson');
    if(!$link) {
    die("Error al intentar conectar: ".mysql_error());
    }
    // seleccionamos la base de datos
    $db_link = mysql_select_db('tienda_info', $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 producto
    WHERE codigo_p = $id", $link)
    or die(mysql_error());
    $row = mysql_fetch_array($sql);
    // advertimos
    $mensaje = "Actualizar los datos del producto $row[descripcion]“;
    }
    // comprobamos si
    // ha sido enviado el formulario
    if(isset($_POST['actualizar']) && $_POST['actualizar'] == ‘Actualizar’){
    // comprobamos que no lleguen campos vacios
    if(!empty($_POST['codigo_p']) && !empty($_POST['descripcion']) && !empty($_POST['precio_unitario']) && !empty($_POST['existencias']) && !empty($_POST['fecha_compra']) && !empty($_POST['fecha_caducidad'])){
    // creamos las variables
    // que vamos a usar en la consulta UPDATE
    // y le asignamos sus valores
    $codigo_p = $_POST['codigo_p'];
    $codigo_p = $_POST['codigo_p'];
    $descripcion = $_POST['descripcion'];
    $precio_unitario = $_POST['precio_unitario'];
    $existencias = $_POST['existencias'];
    $fecha_compra = $_POST['fecha_compra'];
    $fecha_caducidad = $_POST['fecha_caducidad'];
    // la consulta UPDATE
    $sqlUpdate = mysql_query(“UPDATE producto
    SET codigo_p = ‘$codigo_p’,
    descripcion = ‘$descripcion’,
    precio_unitario = ‘$precio_unitario’,
    existencias = ‘$existencias’,
    fecha_compra = ‘$fecha_compra’,
    fecha_caducidad = ‘$fecha_caducidad’,
    WHERE codigo_p = ‘$codigo_p’”, $link)
    or die(mysql_error());
    echo “Registro actualizado correctamente”;
    }else{
    echo “debe llenar todos los campos”;
    }
    }else{
    // mostramos el mensaje
    echo “”.$mensaje.”";
    ?>

    <form name="actualizar-registro" method="post" action="”>
    Codigo <input type="text" name="codigo_p" value="” />
    Descripcion: <input type="text" name="descripcion" value="” />
    Precio Unitario: <input type="text" name="precio_unitario" value="” />
    Existencias: <input type="text" name="precio_unitario" value="” />
    Fecha Compra: <input type="text" name="precio_unitario" value="” />
    Precio Caducidad: <input type="text" name="precio_unitario" value="” />
    <input type="hidden" name="codigo_p" value="” />

  26. if($this->con->conectar()==true){
    if($tipo==”1″)return mysql_query(“SELECT K_CodCont,K_Nombre FROM contacto where C_CodRuc=’”.$idCliente.”‘ order by K_Nombre”);
    if($tipo==”2″)return mysql_query(“SELECT c.K_CodCont,c.K_Nombre FROM contacto c left join proyectos p on p.K_CodCont=c.K_CodCont where p.P_CodProy=’”.$idCliente.”‘ order by c.K_Nombre”);
    }

    Quiero hacer dos UPDATES, las consultas los ejecute en consola y si funcionan pero por php solo hace caso al primer UPDATE

  27. Error en el anterior POST esta es la consulta:

    function insertar_seguimiento($campos){
    if($this->con->conectar()==true){

    if($campos[5]“”) mysql_query(“UPDATE cliente set C_FechSeg=now(), C_FechSegProx=’$campos[3]‘ where C_CodRuc=’”.$campos[5].”‘”);
    if($campos[6]“”) {
    mysql_query(“UPDATE `cliente` set `C_FechSegProx`=’$campos[3]‘ where `C_CodRuc`=
    (SELECT `C_CodRuc` FROM `proyectos` WHERE `P_CodProy`=’”.$campos[6].”‘”);
    mysql_query(“UPDATE `proyectos` set `P_FechSeg`=now(), `P_FechProxSeg`=’$campos[3]‘ where
    `P_CodProy`=’”.$campos[6].”‘”);
    }

  28. Esta muy bueno de verdad que si, ya estaba realizando el de registro y busqueda, este de actualizacion esta bueno, full entendible, lo que no vi fue la llave del else…

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>