dominios y alojamiento web en hostalia

Actualización de un registro de la base de datos con PHP

01 de enero de 2001
Valoración del artículo:
Explicamos cómo modificar o actualizar un registro existente en una tabla de una base de datos, con PHP. Es decir, hacer un update para un registro de una tabla, desde PHP.
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
Para mostrar cómo se actualiza un registro presente en nuestra base de datos, vamos a hacerlo a partir de un caso un poco más complejo para que empecemos a familiarizarnos con estas operaciones. Realizaremos un par de scripts que permitan cambiar el numero de teléfono de las distintas personas presentes en nuestra base. El nombre de estas personas, así como el nuevo numero de teléfono, serán recogidos por medio de un formulario.

El archivo del formulario va a ser esta vez un script PHP en el que efectuaremos una llamada a nuestra base de datos para construir un menú desplegable donde aparezcan todos los nombres. La cosa quedaría así:

<HTML>
<HEAD>
<TITLE>Actualizar1.php</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Actualizar 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="actualizar2.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">';

//Generamos el menu desplegable
while ($row=mysql_fetch_array($result))
{echo '<option>'.$row["nombre"];}
?>
</select>
<br>
Teléfono<br>
<INPUT TYPE="TEXT" NAME="telefono"><br>
<INPUT TYPE="SUBMIT" value="Actualizar">
</FORM>
</div>

</BODY>
</HTML>

La manera de operar para construir el menú desplegable es la misma que para visualizar la tabla. De nuevo empleamos un bucle while en combinación con la función mysql_fetch_array lo que nos permite mostrar cada una de las opciones.

El script de actualización será muy parecido al de inserción:

Nota: Para quien desee una referencia completa sobre cómo se hacen las sentencias UPDATE en el lenguaje SQL, recomendamos leer el artículo Actualización de registros con UPDATE en SQL.

<HTML>
<HEAD>
<TITLE>Actualizar2.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="Update Clientes Set telefono='$telefono' Where nombre='$nombre'";
mysql_query($sSQL);
?>

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

</BODY>
</HTML>

Como habéis podido comprobar, la operación UPDATE no tiene demasiada complejidad. Sin embargo, para afianzar estos conocimientos recomendamos ver el vídeo sobre la actualización de registros en MySQL con PHP.

Compartir en redes sociales

Comentarios
Fueron enviados 25 comentarios al artículo
14 comentarios no revisados
11 comentarios revisados:
Por: Luis Gutierrez A.
19/2/2002
En el script de actualización, si mi tabla tiene más de dos campos y yo solamante quiero modificar un campo como se hace y que el otro quede intacto, como quedaria el script?

RESPUESTA:

Esto es más bien una pregunta sobre el lenguaje SQL que sobre ASP. Si quieres modificar solamente un campo, entonces sólo pones un campo en la parte de set de la sentencia SQL.

Si la tabla tuviese el los campos id_cliente, nombre, direccion, y telefono, si sólo queremos modificar el nombre del cliente con id 25 colocamos:

Update Clientes Set nombre='pepito perez' Where id_cliente=25

Tenemos un manual del lenguaje SQL que trata todo esto con más profundidad.

Por: Víctor Zaragoza
20/4/2002
Con este mismo ejemplo, ¿cómo haríamos para que en la casilla del teléfono apareciera el contenido que actualmente tiene dicho campo?

RESPUESTA

Veamos, que aparezca el teléfono al seleccionar el usuario que se desea editar resultaría un poco complicado, porque esa acción debería realizarla el navegador una vez está cargada la página y para ello sería imprescindible tener en memoria, en variables Javascript por ejemplo, toda la tabla de teléfonos. Esto no resulta fácil ni creo que sea muy operativo.

Lo que habría que hacer es variar un poco el modo de trabajo, para que la edición nos siga resultando asequible desde el punto de vista de la dificultad y además totalmente operativa.

Lo más sencillo sería crear una página donde escoges el usuario que deseas editar. Esta selección se pasa a otra página donde colocaríamos un formulario con los campos de texto a editar rellenados con los valores actuales que hay en la base de datos. Una vez que se actualiza el campo que se desea, se envian los datos a una tercera página que actualiza la información de la base de datos por medio de la sentencia SQL.

Por: mauricio
03/5/2003
como hago para que no se copie un registro que ya existe?

RESPUESTA

No te voy a hacer el código ahora, tal vez más adelante. Pero sí te cuento que, antes de insertar el registro, necesitarás hacer una búsqueda en la base de datos de un registro con los datos que deseas introducir. Esto te servirá para ver si el registro está ya introducido o no. (Si la búsqueda genera resultado con uno o más registros es que está ya introducido ese registro.)

La operación de insertar sólo la tendrás que ejecutar si la búsqueda arrojó algún resultado.

Por: TM4
25/11/2003
Tengo una inquietud, si puedo actualizar campos de texto que es lo basico, como se hace para actualizar campos con casillas de verificacion que ingresen un texto nulo (por ejemplo deshabilitando la casilla). Que proceso se debe hacer????
Por: Gamer
06/1/2005
Hey yo tambien tengo el mismo problema estoy hospedado en freesuperhost.com pero al parecer algo tiene que ver el tipo de version de php que estamos usando alguien nos puede ayudar me estoy quebrando la cabeza pero no me sa nada bueno que digamos este es mi codigo

<?
//Conexion con la base
mysql_connect("freesuperhost.com","anonimo","anonimo")or die("No he podido conectar.");

//Creamos la sentencia SQL y la ejecutamos
$SQL="Update Clientes Set telefono='$telefono' Where nombre='$nombre'";
mysql_db_query("aninimo",$SQL);
?>
Por: Juanjo
04/8/2005
Para q funcione actualizar con el metodo POST tambien tenemos q corregir la referencia de los campos:

Antes:
$sSQL="Update Clientes Set telefono='$telefono' Where nombre='$nombre'";

Corregido:
$sSQL="Update Clientes Set telefono='".$_POST['telefono']."' Where nombre='".$_POST['nombre']."'";

Saludos y Suerte.

Bertith...
duda sobre la actualuzacion
19/9/2009
como le hago si la informacion que traere de la bd ira en una lista/menu? osea como la mando a la lista? pero si la lista esta cargada ya automaticamente ya tiene los datos quiero solo hacer referencia con el selected que si la informacion de la db es igual a un elemento de la lista/menu la seleccione sino que la agregue,espero y me explique.

Balam_a...
Error fatal: Variable NOMBRE no definida
25/4/2010
Primero que nada, muy buen artículo!!! me está sirviendo mucho!!!

Te comento que eh seguido los ejercicios pero he incrementado el grado de dificultad (según yo) y en este paso trato de actualizar no solo el contenido de teléfono, sino otras 3 variables con las que cuenta mi base de datos. Y para cada variable tengo un archivo php, por ejemplo:
actualizar_rfc.ph
actualizar_direccion.php
actualizar_telefono.php
...
...
...
etc!!!
y hago una tabla y un formulario para actualizar cada variable, pero a la hora de actualizar la página me muestra un error fatal: Variable NOMBRE no definida en archivo *.php... y me muestra el texto de actualización y el link para checar los datos, pero la actualización si se lleva a cabo... osea que si está funcionando pero no se como hacer que no me mande el mensaje de error

Espero haberme explicado y que me puedas ayudar.
Muchas gracias!!!
ERROR
07/6/2010
sale un error al lanzar ejemplo

trafico...
mostrar,editar,insertar,eliminar datos en php
11/7/2010
hola amigo ya puedo hacer lo basico de agregar editar eliminar ademas mostrar todo esto llamando a diferentes paginas pero me resulta dificil hacerlo todo en una misma pagina me podrian ayudar por favor pues me parece que necesito las sentencias else y ifelse para este caso como lo tendria que hacer un ejemplo practico si fuesen tan amables pues en todas webs donde e visto siempre lo hacen en distintas paginas y la idea es de hacerlo en una sola pagina todo este trabajo digamos teniendo una base de datos ejemplo con una tabla ejemplo1 con campos id_ejemplo1, ejemplo y otra tabla ejemplo2 con campos id_ejemplo2, id_ejemplo1, ejemplo2 donde id_ejemplo1 es la relacion de los dos tablas espero me deje entender como harian en una pagina loquequieran.php gravar todo eso tanto para agregar editar actualizar y eliminar sludos espero sus respuestas para tener una clara solucion al tema y otras personas tambiem puedan aprender al igual que lo deseo yo saludos

iad_198...
EDITAR REGISTRO EN MYSQL CON PHP
24/8/2010
Hola a todos no se si puedan ayudarme a editar un registro tengo este codigo que no lo edita:

este es "editar_stock.php"
<?php
include("conexionbd.php");
$idstock=$_GET['idstock'];
$mysql="select * from stock where idstock=$idstock";
$respuesta=mysql_query($mysql);
if(mysql_num_rows($respuesta)>0){
$registro=mysql_fetch_array($respuesta);
}
else{
header('location:stock.php');
}
?>

<html>
<head>
<title>EDITAR</title>
</head>
<h1 align="center"><font face="verdana" color="white"><b>EDITAR</b></font></h1>
<body bgcolor="#0A0A2A">
<form name="form1" method="get" action=actualizar_stock.php?id="<?php echo $idstock ?>">
<table align="center" border="5" cellspacing="6" bgcolor="#0A0A2A" >
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>CODIGO:</b></font></td>
<td>&nbsp;<input type="text" id="codigo" name="marca" size="37%" value="<?php echo $registro['codigo'] ?>"></td>
</tr>
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>MARCA:</b></font></td>
<td>&nbsp;<input type="text" id="marca" name="marca" size="37%" value="<?php echo $registro['marca'] ?>"></td>
</tr>
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>DESCRIPCION:</b></font></td>
<td>&nbsp;<input type="text" id="descripcion" name="descripcion" size="37%" value="<?php echo $registro['descripcion'] ?>"></td>
</tr>
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>PIEZA:</b></font></td>
<td>&nbsp;<input type="text" id="pieza" name="pieza" size="37%" value="<?php echo $registro['pieza'] ?>"></td>
</tr>
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>P.UNITARIO:</b></font></td>
<td>&nbsp;<input type="text" id="punitario" name="punitario" size="37%" value="<?php echo $registro['punitario'] ?>"></td>
</tr>
<tr>
<td align="right" width=""><font face="verdana" color="white"><b>STOCK:</b></font></td>
<td>&nbsp;<input type="text" id="stock" name="stock" size="37%" value="<?php echo $registro['stock'] ?>"></td>
</tr>
<tr>
<td colspan="2" align="center"><b><input type="submit" name="actualizar" value="ACTUALIZAR"></b></td>
</tr>
</table>
</form>
</body>
</html>

y este es el de "editar actualizar_stock.php":
<?php
include("conexionbd.php");
$codigo=$_POST['codigo'];
$marca=$_POST['marca'];
$descripcion=$_POST['descripcion'];
$pieza=$_POST['pieza'];
$punitario=$_POST['punitario'];
$stock=$_POST['stock'];
$idstock=$_GET['idstock'];
$mysql="UPDATE stock SET codigo='$codigo',marca='$marca',descripcion='$descripcion',pieza='$pieza',punitario='$punitario',stock='$stock' where idstock='$idstock'";
$exito=mysql_query($mysql);
if ($exito==1){
header('location: stock.php');
}
else{
echo "ERROR AL GRABAR LOS DATOS DEL CLIENTE... <br>$mysql";
}
?>


Gracias de antemano :) ........

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