EJERCICIO:borra_pedido.pl.

En este ejercicio lo que hay que hacer es un CGI que borre un pedido de la tabla de pedidos, cuyo num_factura se le pasa como parámetro al CGI. Hay que tener en cuenta que las funciones de captura del parámetro, escritura de cabecera HTML y escritura de cola HTML, ya se realizan en el esqueleto del CGI. Sólo se tiene que realizar la conexión con la base de datos, borrar el dato de la tabla de pedidos, cerrar la conexión y mostrar los mensajes necesarios, tanto como si hay un error, como si no lo hay, teniendo en cuenta que estamos en un CGI y, por lo tanto, tenemos que escribir setencias HTML . El esqueleto del script es el siguiente:


#!c:\perl\bin\perl.exe

#Usamos las librerias de acceso a BD
use DBI;

my $base_datos="ce";   #Nombre de las base de datos
my $tabla_pedidos="pedidos"; #Nombre de la tabla de pedidos

my $usuario="root"; #Usuario de la BD
my $clave="richal"; #Password de la BD
my $driver="mysql"; #Utilizamos el driver de mysql


my $num_factura;     #VAriable donde guardaremos el número de factura

#Cogemos el parametro que se le pasan al CGI ($num_factura)
$num_factura=coge_parametro();

#Creamos la sentencia SQL
my $SQL_borra="delete from $tabla_pedidos where (num_factura=$num_factura);";


#Escribimos la cabecera de la pagina HTML
print "Content-type: text/html\n\n";
escribe_inicio_html();

#Escrimos los parametros pasados (BORRAR)
print ("\n<h2>Hay que borrar el pedido num_factura=$num_factura<h2><br>\n");


#Conectamos con la BD, miramos si hay algun error(HACER)

#Borramos el dato de la tabla, miramos si hay algun error(HACER)

#Nos desconectamos de la BD. (HACER)


#Escribimos la cola de la pagina HTML
escribe_final_html();

#Terminamos
exit;
#--------------------------------------------------------------------
#--------------------------------------------------------------------
#----------------------------FUNCIONES-------------------------------
#--------------------------------------------------------------------
#--------------------------------------------------------------------
#En ests funcion cogemos el parametro necesario para el
#CGI.
sub coge_parametro()
{

        #Determinamos el tipo de metodo usado para pasar los argumentos
        $method=$ENV{"REQUEST_METHOD"};
        if ($method eq "GET")
        {
                #Si el metodo es GET los argumentos vienen en $ENV{"QUERY_STYRNG"}
                $argumento=$ENV{"QUERY_STRING"};
        }
        else
        {
                #Si el metodo es POST los argumentos vienen en la entrada estandar
                $argumento=<STDIN>;
        }

        # Obtengo las variables y las imprimo
        foreach (split(/&/,$argumento))
        {
                ($variable,$valor) = split(/=/, $_);
                $valor=~tr/+/ /;
                $valor=~s/%([0-9|A-F]{2})/pack(C,hex($1))/eg;
                $datos{$variable}=$valor;
        }

        return $datos{NUM_FACTURA};
}

#--------------------------------------------------------------------
#En esta funcion escribimos el principio de la pagina HTML
sub escribe_inicio_html()
{

print <<inicio_HTML;
<html>
        <HEAD>
                <TITLE>Borrado de un pedido (CGI)</TITLE>
        </HEAD>
        <BODY bgcolor=#FFFFFF>
        <TABLE border=0  cellpadding=0 cellspacing=0 width=100%>
         <TD valign=middle width="100%" bgcolor="#008caa">
                <font color="#DDDDDD" face="sans-serif">
                 <strong>
                        <h1 align=center style='text-align:center'>BORRADO DE UN PEDIDO (CGI)</h1>
                 </strong>

         </TD>
        </TABLE>
inicio_HTML
}

#--------------------------------------------------------------------
#En esta funcion escribimos el fin de la pagina HTML
sub escribe_final_html()
{

print <<fin_HTML;
        </BODY>
        /HTML>
fin_HTML
}
#--------------------------------------------------------------------



El esqueleto del ejemplo anterior está aquí.

Nota: Este ejemplo es muy parecido al que vimos en apartado de borra_articulo.pl. Pero hay que tener en cuenta que estamos trabajando con un CGI, y que el registro a borrar lo tenemos guardado en $num_facturaid.

2000 Francisco Javier García Castellano. fjgc@decsai.ugr.es