EJERCICIO:lista_pedidos.pl.

En este ejercicio lo que hay que hacer es un CGI que liste todos los pedidos de la tabla de pedidos. Hay que tener en cuenta que hay funciones de escritura de un pedido, escritura de cabecera HTML y escritura de cola HTML, y que se realizan en el esqueleto del CGI. Sólo se tiene que realizar la conexión con la base de datos, leer los datos en la tabla de pedidos (hacer un SELECT, 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 CGI 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

#Creamos la sentencia SQL
my $SQL_consulta="select * from $tabla_pedidos;";

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


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

#Hacemos una consulta en la tabla, y miramos si hay algun error(HACER)
#Mostramos los elementos de la tabla con la funcion muestra_pedido,
#cuyo formato es:
#                       muestra_pedido($num_factura,$id,$nombre,$email,$direccion,$telefono);

#Nos desconectamos de la BD. (HACER)



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

#Terminamos
exit;
#--------------------------------------------------------------------
#--------------------------------------------------------------------
#----------------------------FUNCIONES-------------------------------
#--------------------------------------------------------------------
#--------------------------------------------------------------------
#En esta funcion muestra el articulo que se le pasa como parametro
#el formato es muestra_articulo($id,$nombre,$precio);
sub muestra_pedido()
{
        my ($num_factura,$id,$nombre,$email,$direccion,$telefono)=@_;

print <<articulo_HTML;

	<TR>
         <strong>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2">$num_factura</font></TD>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2">$id</font></TD>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2">$nombre</font></TD>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2"><a href="mailto:$email">$email</a></font></TD>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2">$direccion</font></TD>
         <TD rowspan=1 valign=middle bgcolor="#008caa"><font color="#DDDDDD" face="sans-serif size=+2">$telefono</font></TD>
	 </strong>

		
	 <TD valign=middle bgcolor="#008caa">
		<FORM NAME="formBorrar$num_factura" ACTION="/cgi-bin/borra_pedido.pl" METHOD=GET>
			<INPUT TYPE="hidden" NAME="NUM_FACTURA" VALUE="$num_factura">			
			<INPUT TYPE="button" VALUE="Borrar" onClick="document.formBorrar$num_factura.submit()">
		</FORM>	
	</TD></TR>


	
	<TR><TD colspan=3 valign=middle bgcolor="#FFFFFF"></TD></TR>
articulo_HTML
}

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

print <<inicio_HTML;
<html>
        <HEAD>
                <TITLE>Listar Pedidos (CGI)</TITLE>
        </HEAD>
        <BODY bgcolor=#FFFFFF>
        <TABLE border=0  cellpadding=0 cellspacing=0 width=100%>
         <TD valign=middle width="100%" bgcolor="#007b99">
                <font color="#DDDDDD" face="sans-serif">
                 <strong>
                        <h1 align=center style='text-align:center'>LISTAR PEDIDOS (CGI)</h1>
                 </strong>
                </font>
         </TD>
        </TABLE>
	<hr>
	<br>
        <TABLE border=1  cellpadding=0 cellspacing=0 width=100%>
	<TR>
         <font color="#AAAAAA" face="sans-serif"><strong>
         <TH valign=middle bgcolor="#008caa">Factura</TH>
         <TH valign=middle bgcolor="#008caa">Artículo</TH>
         <TH valign=middle bgcolor="#008caa">Cliente</TH>
         <TH valign=middle bgcolor="#008caa">E-Mail</TH>
         <TH valign=middle bgcolor="#008caa">Direccion</TH>
         <TH valign=middle bgcolor="#008caa">Telefono</TH>
	 </strong></font>
	</TR>

inicio_HTML
}

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

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






El esqueleto del ejemplo anterior está aquí.

Nota: Este ejemplo es muy parecido al que hemos visto de lista_articulos.pl.
2000 Francisco Javier García Castellano. fjgc@decsai.ugr.es