Vídeo sobre Bases de datos con PHP: Actualización de registros

  • Por
  • PHP
Explicaciones sobre el acceso a bases de datos MySQL desde PHP, veremos como actualizar los registros, modificando los valores de sus campos con la sentencia UPDATE.
Este vídeo ofrece una nueva materia sobre bases de datos en PHP que todavía no habíamos visto en nuestro videotutorial de PHP. Se trata de otra de las sentencias básicas de acceso a bases de datos, la sentencia UPDATE que sirve para actualizar la información de las tablas.

En la anterior entrega habíamos ofrecido una introducción a las bases de datos en PHP, que ahora ampliamos con el presente vídeo, que también nos servirá para afianzar conocimientos anteriores. Asimismo, también quiero dar la referencia del artículo Actualización de un registro de base de datos con PHP, donde se explicó la sentencia UPDATE dentro del Manual de PHP.

Lo primero que veremos en el videotutorial será la creación de una sentencia SQL de tipo UPDATE y la ejecutaremos por medio de PHP. Con esto veremos que ejecutar una sentencia de actualización de registros en la base de datos es algo muy similar a ejecutar instrucciones de selección o inserción que habíamos visto anteriormente.

Más tarde haremos un ejemplo completo de actualización de un registro de una tabla. Aunque un UPDATE propiamente dicho se podría decir que se hace en una única línea de código, este segundo ejemplo implicará la creación de varios scripts, pues se trata de crear toda la estructura para que un usuario pueda:

  • Ver listados todos los registros de una tabla, para que pueda seleccionar uno de ellos.
  • Luego acceder a un formulario con los datos actuales de ese registro, escritos en diversos campos del formulario, de modo que los pueda editar.
  • Por último, una página que reciba los datos del formulario y realice la sentencia UPDATE para actualizar el registro con los nuevos datos recibidos.
Todos esos scripts podrían haberse realizado en una única página, pero por facilitarlos las cosas lo hemos hecho en tres diferentes. En la primera hacemos una operación de selección en la base de datos SELECT, de todos los registros de una tabla, que se muestran en un listado. En el segundo script hacemos una selección de todos los datos de un único registro para mostrarlos en un formulario y en el tercer script hacemos la actualización del registro propiamente dicho. Es decir, que son dos SELECT y un UPDATE, por eso decía en un principio que todo esto nos servirá para poder practicar con lo visto en la introducción a las bases de datos en el vídeo anterior.

El vídeo es un poco largo, ya que dura unos 45 minutos, por eso, aparte de todo lo especificado antes, está repleto de pequeñas técnicas que nos ayudarán en el día a día con las bases de datos y PHP, como la creación de un archivo externo para gestionar las conexiones a MySQL, la necesidad de cerrar la conexión o la manera de realizar comprobaciones en los datos recibidos desde MySQL, para asegurar su integridad antes de utilizarlos en la aplicación web.

En definitiva, espero que el vídeo resulte bastante útil y sirva para aprender varias cosas sobre las bases de datos y PHP, aparte del propio UPDATE.

Autor

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online EscuelaIT. Comenzó en el mundo del desarrollo web en el año 1997, transformando su hobby en su trabajo.

Compartir

Comentarios

andresbolivar187

11/9/2011
EXcelente tutorial
Interesante, me gusto mucho el tutorial... :D

Jose Antonio

16/9/2011
IMPRESIONANTES VIDEOTUTORIALES
Hasta ahora de todo lo visto sobre video tutoriales,,, esto es de lo mejorcito,,, muy bien explicado,,, animo,,, uno mas a seguiros,,

Un saludo

midesweb

16/9/2011
Gracias por los comentarios!
Vuestros comentarios animan a seguir trabajando. Muchas gracias!!

MIGUEL ANGEL

24/9/2011
UNA SUGERENCIA
EXELENTE EL VIDEO PERO SE PODRIA MOSTRAR COMO HACER PARA REALIZAR UN UPDATE A MULTIPLES REGISTROS....
ANTE MANO MUCHAS GRACIAS...

jrojas

03/10/2011
Muy bueno
Muy buena la explicación, esperamos tu proximo video...

otto1303

05/10/2011
No me actualiza el script
Al tratar de actualizar el cliente me imprime los datos que envia por el formulario de update-cliente-id.php (dejé el echo en la sentencia $ssql, para ver los datos). Así: http://usera.imagecave.com/karbo13/foros/actualizacion_ejercicio.png.jpg

Pero me dá el mensaje de error y no modifica los datos.

Mi archivo update-cliente-id.php es éste:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<title>Bases de Datos</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-2" />
<link rel="stylesheet" href="estilos.css" type="text/css" />
</head>

<body>
<h2>Actualización de Datos</h2>

<?php
include("conn.php");
//Esta página recibe el id del cliente a editar
//debo mostrar un formulario con los datos del cliente, para que el usuario pueda ediar lo que desee.
$id_cliente = $_GET["id"];
//Este id es el que está en el enlace anterior y lo recibimos aquí.

//Sentencia SQL para la selección de ese cliente.
$ssql = "select * from clientes where id_cliente =" . $id_cliente; //como es un número no necesita comillas
$cliente_editar = mysql_query($ssql);

//Tengo que comprobar que ese cliente existe!!!
if(mysql_num_rows($cliente_editar)>0){

//Consigo los datos de ese cliente
$fila = mysql_fetch_object($cliente_editar);
//Esta funcion devuelve un dato de objeto
//creo un formulario con los datos de ese cliente
?>
<form action="update-cliente-id2.php" method="post">
<input type="hidden" name ="id_cliente" value="<?php echo $id_cliente; ?>">
Nombre:
<br />
<input type="text" name="nombre" size="40" value="<?php echo $fila->nombre; ?>">
<!-- Lo coloco así porque estoy recuparando el valor desde una función que devuelve datos de objeto -->
<br />
Dirección:
<br />
<input type="text" name="direccion" size="40" value="<?php echo $fila->direccion; ?>">
<br />
CIF:
<br />
<input type="text" name="cif" size="40" value="<?php echo $fila->cif; ?>">
<br />
Comentarios:
<br />
<textarea cols=30 rows=6 name="comentarios"><?php echo $fila->comentarios;?></textarea>
<br />
<input type="submit" value="Editar" />

</form>
<?
}else{
//Aqui estaremos si hay 0 clientes en ese id
echo "Lo lamento, no encontré ese cliente que deseas editar!!";
}
?>
<br />
<a href="update-con-seleccion-cliente.php">Cancelar y seleccionar otro cliente</a>
<?php
//Importante!! Cerrar la conexión al terminar el script
mysql_close($conexion);
?>
</body>
</html>



Y éste es el update-cliente-id2.php del action:

<?php
//Esta es la página final donde hacemos el update
include("conn.php");

$ssql = "UPDATE clientes set ";
$ssql .= "nombre='" . $_POST["nombre"] . "', ";
$ssql .= "direccion='" . $_POST["direccion"] . "', ";
$ssql .= "cif='" . $_POST["cif"] . "', ";
$ssql .= "comentarios='" . $_POST["comentarios"] . "', ";
$ssql .= "where id_cliente=" . $_POST["id_cliente"];

//Imprimo lo que ejecutaran las sentencias para ver si hay errores
echo $ssql;
echo "<br />";
//Ya lo he verificado y lo elimino o lo comento para que no salga.

if(mysql_query($ssql)){
echo "Cliente actualizado con éxito";
}else{
echo "Error al insertar!!!!";
}

//Importante!! Cerrar la conexión al terminar el script
mysql_close($conexion);
?>
<br />
<a href="update-con-seleccion-cliente.php">Cancelar y seleccionar otro cliente</a>

Lo único diferente que tengo con el vídeo es que mi tabla se llama "clientes", pero supongo que se podrá llamar como sea.

ezequiel_rojas_lugo

26/10/2011
Felicidades!!!
Excelente video tutorial, me ha sido de mucha utilidad ya que apenas empiezo a entrar a esto del php muchas gracias por compartir tus conocimientos.!!!!!

Salduos!!!

Jairo andres

18/11/2011
No me toma los datos
hago todos los pasos que dise en el video tutorial y al final cuando se va hace rel update no se actualisan los datos y no me muestra ni error ni nada solo no se actualisan

jairo andres

18/11/2011
grax
ya me funciono gracias en la parte del update solo colocaba el nombre de la tabla es decir update (nombre_tabla) set ......... ero no me guardaba lo que hice fue esto
update (nombre_BD).(nombre_tabla) set.........y ahi ya me guardo los cambios grax por el tutorial muy bueno

heman90

21/11/2011
Correcion a otto1303
Otto, esto es lo que vos pusiste en tu pagina donde actualiza la base de datos.

$ssql = "UPDATE clientes set ";
$ssql .= "nombre='" . $_POST["nombre"] . "', ";
$ssql .= "direccion='" . $_POST["direccion"] . "', ";
$ssql .= "cif='" . $_POST["cif"] . "', ";
$ssql .= "comentarios='" . $_POST["comentarios"] . "', ";
$ssql .= "where id_cliente=" . $_POST["id_cliente"];


El problema esta en la linea que dice:
$ssql .= "comentarios='" . $_POST["comentarios"] . "', ";


Pusiste una coma al final que no va. Porque la sintaxis del update seria:

mysql_query("update nombra_tabla set campo1='valor1', campoN='valorN' where campoX='valorX' ");


Y en la tuya quedaria con mas campos a modificar, pero entre el ultimo campo='valor' y el WHERE te quedaria una COMA. Me explico? Tu linea de comentarios tendria que ser asi:

$ssql .= "comentarios='" . $_POST["comentarios"] . "' ";

Fijate que le saque la ultima coma que le pusiste, ya que entre los campo/valor a agregar los separas con comas, pero el ultimo campo/valor y el WHERE no va nada.
Me parece que ese es tu error. No pude ver la imagen que subiste al principio. Si no se arregla con el cambio que te dije, copia y pega el error que te da y veo si te puedo ayudar. Soy novato pero bastante estructurado, por eso lo vi! XD
avisame.


EXCELENTES LOS VIDEOTUTORIALES Y LOS MANUALES. LA ROMPEN

Maximiliano

06/1/2012
Gracias
Excelentes videos, me están ayudando muchísimo. Continúa con este gran proyecto! :)

Jose Ivan

23/2/2012
Gracias
Muchas gracias, este video me a sido de mucha ayuda, seguire estudiando tus tutoriales.

JESUS URIBE

01/3/2012
ayuda con error
Buen día, antes que nada una felicitación por el excelente y claro video que nos muestran fíjense que no e podido actualizar mi base de datos debido a un error que no puedo identificar, anexo los códigos:
// código de la pagina donde se realiza el update:
<?php
include("conexionbd.php");
// actualizacion final
$ssql = "UPDATE ips SET";
if (!$ssql) {
die('No pudo conectarse: ' . mysql_error());
}
echo 'Conectado satisfactoriamente a update';
$ssql .="nombre='" . $_POST["name"] . "', ";
$ssql .="ip_anterior='" . $_POST["ipa"] . "', ";
$ssql .="ip_nueva='" . $_POST["ipn"] . "', ";
$ssql .="permisos='" . $_POST["per"] . "', ";
$ssql .="puesto='" . $_POST["pues"] . "', ";
$ssql .="justificacion='" . $_POST["jus"] . "' ";
$ssql .="WHERE nombre='" . $_POST["$nombre"] . "' ";
//echo $ssql;
if (mysql_query($ssql)) {
echo "CLIENTE ACTUALIZADO CON EXITO!!!!!";
}else{
echo "ERROR DE CONEXION" . mysql_error();
}
Me da el siguiente error:
Conectado satisfactoriamenteConectado satisfactoriamente a la base de ips coecytjalConectado satisfactoriamente a updateERROR DE CONEXIONYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '='CALIS45', ip_anterior='10.25.23.4', ip_nueva='10.25.23.6', permisos='TODOS QUE' at line 1
Los scripts restantes están correctos y corren con normalidad solo que este si me da problema espero su valiosa ayuda ya que llevo rato sin poder corregir el error y mil gracias!!!!.



mysql_close($con);

?>
<br>
<br>
<a href="update.php">"SU ACTUALIZACION SE A CARGADO CON EXITO PULSE AQUI SI DESEA SELECCIONAR OTRO NOMBRE"</a>

Encarna

23/5/2012
Viedo de PHP
Enhorabuena por el video, es justo lo que necesito, la pena es que no haya más.

Gracias por el esfuerzo para que aprendamos los que no sabemos nada de PHP y queremos utilizarlo

gOInsGInxTqWsDQ

07/12/2012
CZAYrECgCXDN
I write a comment when I like a post on a site or if I have sotinhemg to valuable to contributeto the conversation. Usually it's caused by the fire communicated in the post I looked at. And on this post Totally Wicked 25% Off 4 Day Sale!! | Electronic Cigarette Products. I was moved enough to leave a thought I actually do have 2 questions for you if you tend not to mind. Is it just me or does it give the impression like some of the comments appear like left by brain dead individuals? And, if you are posting at additional online sites, I'd like tofollow anything new you have to post. Could youlist the complete urls of your shared pages like your twitter feed, Facebook page or linkedin profile?

NiloJuna

07/1/2013
vIDEO UPDATE PHP
Estoy aprendiendo PHP y me veo motivado con el aspecto dinámico en la Web. Me parece excelente el ingresar a la Base de datos y actualizarla. Voy a probar como me va. Gracia

Pablo

29/3/2013
Mi opinion
Quiero agradecer al autor de estos tutoriales, me han ayudado muchisimo y de forma muy clara a dar mis primeros pasos en php y mysql, dejo mi feedback:

a favor:
claridad y entendimiento
velocidad ideal para principiantes
muy completo

unica contra
texto o sentencias en ingles leidas como cavernicola.. es lo unico chocante

felicidadez

PEPEMG7

08/4/2013
como puedo actualizar una imagen ?
tengo una base de datos donde guarde la imagen con un input de tipo File como puedo hacer para actualizar ese campo en el cual tengo guardado la ruta y nombre de la imagen

masstel

11/5/2013
update multiple
Quiero actualizar varios contactos a través CHECKBOX enviando varios ID's PeroNoMe actualiza la BD...porque?
<?php
$contador= $_POST["contador"];
$ssql="";
for($x=1 ; $x <= $contador ; $x++) {
$ssql .=" UPDATE usuarios SET ";
$ssql .= " nomb='".$_POST["nomb".$x.""]."', ";
$ssql .= " apell='".$_POST["apell".$x.""]."' ";
$ssql .= " where ID=".$_POST["ID".$x.""]."; ";
}
if(mysql_query($ssql)){ echo "datos actualizados correctamente ";}
else { echo "Los datos no se actualizaron"; }
?>

Ronald

11/4/2014
error
Tengo un error en el fetch_array pero no sé qué es
mysql_fetch_array(): supplied argument is not a valid MySQL

diegom23

28/9/2014
Gracias
Muy bueno el tutorial. Muchas gracias!!

Diego

04/1/2016
Update
Gracias por este magnífico tutorial, por fin logré entender la actualización de la db mediante el update.
Eres un crak