Actualización de un registro existente

Sentencias SQL para realizar actualizaciones en la tabla.
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 ASP 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.asp</TITLE>
</HEAD>
<BODY>
<div align="center">
<h1>Actualizar un registro</h1>
<br>

<%
'Instanciamos y abrimos nuestro objeto conexion
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Mibase"
%>

<FORM METHOD="POST" ACTION="actualizar2.asp">
Nombre<br>
<%
'Creamos la sentencia SQL y la ejecutamos
sSQL="Select nombre From clientes Order By nombre"
set RS = Conn.Execute(sSQL)
%>
<select name="nombre">
<%
'Generamos el menu desplegable
Do While not RS.eof%>
   <option><%=RS("nombre")%>
   <%RS.movenext
Loop
%>
</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 Do While que nos permite mostrar cada una de las opciones.

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

<TITLE>Actualizar2.asp</TITLE>
</HEAD>
<BODY>

<%
'Recogemos los valores del formulario
nombre=Request.Form("nombre")
telefono= Request.Form("telefono")

'Instanciamos y abrimos nuestro objeto conexion
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Mibase"

'Ahora creamos la sentencia SQL
sSQL="Update Clientes Set telefono='" & telefono & "' Where nombre='" & nombre & "'"

'Ejecutamos la orden
set RS = Conn.Execute(sSQL)
%>

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

<%
'Cerramos el sistema de conexion
Conn.Close
%>

</BODY>
</HTML>


Nada que comentar al respecto salvo la estructura de la sentencia SQL que en este caso realiza un Update en lugar de un Insert. Aconsejamos, como para el caso precedente imprimir el valor de sSQL de manera a ver cómo queda la sentencia una vez construida.

Para ver funcionar el script pincha aquí

Autor

Rubén Alvarez

Rubén es doctor en química y programador aficionado con experiencia en PHP.

Compartir

Comentarios

Krishna

28/2/2004
Hola, hize mi base de datos con una columna mas llamada servicio, estoy tratando de actualizar todos los archivos, para actualizar dos valores en vez de unos solo (telefono) quisiera ver como le hago para que me recoja los dos telefono y servicio. Ojala me puedan ayudar.
Gracias...
Intente con esta instucción:
sSQL="Update Clientes Set telefono='" & telefono & "' Where nombre='" & nombre & "'"
sSQL="Update Clientes Set servicio='" & servicio & "' Where nombre='" & nombre & "'"

Es corecto??
Muchas gracias de nuevo


ana isabel

13/9/2004
Hola me ha servido de gran ayuda, este articulo, pero tengo una duda:

Si tengo dos tablas, en una IDtitulo y Nombretitulo, en la segunda también aparace IDtitulo, que es clave principal de la primera y de tipo autonumerico, ¿como hago para que en el formulario para modificar los datos de la segunda, en el campo IDtitulo en el select me aparezca Nombretitulo pero se guarde un valor Idtitulo en dicho campo?

espero haberme explicado bien

Alf

19/1/2005
En este caso tu BD estan en el mismo server, como le hago sila BD esta en otro server y ademas se quiere manejar Seguridad Integrada ( Win2k3 IIS 6.0 y Win 2K SQL 2K en un ambiente de Active Directory)
Gracias y exceletes tus documentos

Mysql

11/5/2005
Recién me inicio en Asp, por lo que leo, agh Asp =P aguante PHP

nagi

10/2/2006
hola a todos, tengo un problema en esta lines, el error que me presenta es.:
Notice: Undefined variable: nombre in c:archivos de programaeasyphp1-7wwwpruebainsertar.php on line 10

Notice: Undefined variable: telefono in c:archivos de programaeasyphp1-7wwwpruebainsertar.php on line 10

el código es.:
mysql_db_query("prueba","insert into clientes (nombre,telefono) values ('$nombre','$telefono')");

parace que no me reconoce estas variables.: $nombre ni $telefono.

No se que hacer o donde está el problema......ayudaaaaa please

Ricardo Soto

01/3/2006
No me funciona el actualizar registro, ni en el mismo ejemplo de Uds tiene funciona bien.

Adios

Arturo

31/7/2007
deberian tener hecho el ejemplo por q realmente el contenido esta bien, tendria un valor agregado a la consulta