Actualizacion de un registro de base de datos con PHP

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:

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

Comentarios
Fueron enviados 9 comentarios al artículo
2 comentarios no revisados
7 comentarios revisados:
Por: Luis Gutierrez A.
19/2/02
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/02
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/03
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/03
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/05
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/05
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/09
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.

Manuales relacionados
Categorias relacionadas
El autor
Rubén Alvarez
Redactor de DesarrolloWeb.com
http://www.desarrolloweb.com
Lectura recomendada
Últimas noticias
Alojados en el grupo