UNIDAD 7: INTRODUCION A LAS BASES DE DATOS

TEMA LINUX GCC 13: EDICION DE REGISTROS

Editar registros significa cambiar el contenido de algunos de los campos o columnas por nueva informacíón o para corregir algun error de captura original o para agregar alguna columna que no existia por modificación de la tabla o la base de datos.

En general se tiene otro problema de sql UPDATE, sin embargo ahora se tendran que construir varios programas, estos son:

1.- prog43.html: una forma normal de busqueda por clave

2.- prog43.cpp: el mismo programa de busqueda por clave, pero ahora debera construir una forma.html dinamica, que contendra un form action apuntando o ejecutando al prog44.cpp o cgi, ademas tendra todos los input text necesarios para cargar cada celda del renglon de busqueda.

3.- prog44.cpp: recoje los datos ya modificados de la forma.html dinamica y realiza directamente un sql update en la base de datos

prog43.html

<HTML>
<FORM ACTION=http://192.168.1.251/~tusitio/cgi-bin/prog43.cgi METHOD=POST>
CLAVE A EDITAR :<INPUT TYPE=text NAME=CLAVE><BR>
<INPUT TYPE=submit VALUE=BUSCAR>
</FORM></HTML>

prog43.cpp

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <lcnet.h>
#include <mysql.h>
using namespace std;
int main()
{
// creando variables globales
MYSQL coneccion;
MYSQL_RES *resultset;
MYSQL_ROW renglon;
// inicializando y conectando
if ( mysql_init(&coneccion) == NULL)
cout << "error inicializando" << endl;
if ( mysql_real_connect(&coneccion,"localhost","USUARIO","PASSWORD","mibase",0,NULL,0) == NULL )
cout << "error conectando" <<endl;
// construyendo select query
char q[200];
strcpy(q,"select * from mitabla where clave = ") ;
strcat(q, getstring("CLAVE").c_str() );
if ( mysql_query(&coneccion,q) !=0) cout << "error en select" <<endl;
// cargando el resultset con la tabla en disco
resultset = mysql_store_result(&coneccion);
if ( resultset==NULL) cout << "error en resultset" << endl;
for(int r=1; r <= mysql_num_rows(resultset); r++)
{ renglon = mysql_fetch_row(resultset);
// construyendo forma dinamica prog44.html
cout << "Content-type: text/html\n\n" ;
cout << "<html>" << endl;
cout << " <FORM ACTION=http://192.168.1.251/~tusitio/cgi-bin/prog44.cgi METHOD=POST>" << endl;
cout << "NOMBRE..:<INPUT TYPE=text NAME=NOMBRE VALUE="<< renglon[1]<< "><BR>" <<endl;
cout << "EDAD....:<INPUT TYPE=text NAME=EDAD VALUE=" << renglon[2]<< "><BR>" << endl;
cout << " ESTATURA:<INPUT TYPE=text NAME=ESTATURA VALUE=" << renglon[3]<< "><BR>" <<endl;
cout << " <INPUT TYPE=hidden NAME=CLAVE VALUE=" << renglon[0]<< ">" <<endl;
cout << " <INPUT TYPE=submit VALUE=MODIFICAR>" << endl;
cout << " </FORM></HTML>" << endl;
};
// liberando la memoria del servidor del resultset
mysql_free_result(resultset);
mysql_close(&coneccion);
exit(0);
}

Prog44.cpp

#include <stdio.h>
#include <stdlib.h>
#include <string>
#include <iostream>
#include <lcnet.h>
#include <mysql.h>
using namespace std;
int main()
{
// crando variables globales
MYSQL coneccion;
// construyendo pagina
cout << "Content-type: text/html\n\n";
cout << "<html>" << endl;
// inicializando y conectando
if ( mysql_init(&coneccion) == NULL)
cout << "error inicializando" << endl;
if ( mysql_real_connect(&coneccion,"localhost","USUARIO","PASSWORD","mibase",0,NULL,0) == NULL )
cout << "error conectando" <<endl;
// construyendo insert query
char q[200], nombre[30];
strcpy(nombre, getstring("NOMBRE").c_str() );
strcpy(q,"update mitabla set nombre= \"");
strcat(q,nombre);
strcat(q," \" , edad=");
strcat(q, getstring("EDAD").c_str() );
strcat(q,", estatura=");
strcat(q, getstring("ESTATURA").c_str() );
strcat(q, " where clave=");
strcat(q, getstring("CLAVE").c_str() );
if ( mysql_query(&coneccion,q) !=0)
{cout << "error en update " <<endl;
} else cout << "registro actualizado" << endl;
mysql_close(&coneccion);
cout << "</html>" << endl;
exit(0);
}

Ambos programas son combinaciones de programas anteriores.

Veamos la corrida completa:

Prog37.cgi (tabla original)

image131.jpg

prog43.html

image132.jpg

forma dinamica que construye el prog43.cpp

image133.jpg

prog44.cpp respondiendo

image137.jpg

otra vez prog37.cgi para ver como quedo la tabla original

image138.jpg

no fue raton fue batman!! Y hacer un refresh al browser o tendran la tabla vieja.

1.- construir programas de edición para sus tablas y bases de datos

Politica de Privacidad