#!c:\perl\bin\perl 

#Usamos las librerias de acceso a BD
use DBI;

my $base_datos="ce";   #Nombre de las base de datos
my $tabla_articulos="articulos"; #Nombre de la tabla de articulos
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 $id;     #VAriable donde guardaremos el id del articulo
my $nombre; #Variable donde guardaremos el nombre del articulo
my $precio; #Variable donde guardaremos el precio del articulo

print ("Content-type: text/html\n\n");
#Cogemos el parametro que se le pasan al CGI ($id)
$id=coge_parametro();


#Conectamos con la BD, miramos si hay algun error(HACER)
my $dbh = DBI->connect("dbi:$driver:$base_datos",$usuario,$clave)
		|| die "\nError al abrir la base datos: $DBI::errstr\n";

#Cogemos el ultimo num_factura de la tabla de pedidos
my $ultimo_num_factura=coge_ultima_factura($dbh,$tabla_pedidos);

#Cogemos los datos del articulo $id a partir de la BD
coge_datos($id,$dbh,$tabla_articulos);

#Nos desconectamos de la BD. (HACER)
$dbh->disconnect();



#Si la ultima referencia es undef, la ponemos a 1
$ultimo_num_factura=1 if (!$ultimo_num_factura);


#Si los datos de $id son undef, ponemos un error
if (!$nombre)
    {escribe_error_html($id);}
#sin no escribimos la pagina HTML
else
    {escribe_pagina_html($id,$nombre,$precio,$ultimo_num_factura+1);}




#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 $id=$datos{ID};

}

#--------------------------------------------------------------------
#En esta funcion cogemos el resto de los campos del articulo id
sub coge_datos ()
{
	my ($id,$dbh,$tabla_articulos)=@_;

	#Preparamos
	my $sth=$dbh->prepare("select * from $tabla_articulos where (ID=$id);");

	#Ejecutamos
	$sth->execute();

	#Obtenemos una referencia a un hash y cogemos los datos
	my $hash=$sth->fetchrow_hashref();
	$nombre=$hash->{nombre};
	$precio=$hash->{precio};

	#Liberamos recursos
	$sth->finish();

}
#--------------------------------------------------------------------
#En esta funcion cogemos el ultimo numero de factura de la tabla de pedidos
sub coge_ultima_factura()
{
	my ($dbh,$tabla_pedidos)=@_;
	
	#Preparamos
	my $sth=$dbh->prepare("select max(num_factura) from $tabla_pedidos;");

	#Ejecutamos
	$sth->execute();

	#Obtenemos una referencia a un hash y cogemos el dato
	my $hash=$sth->fetchrow_arrayref();	
	my $ref=$hash->[0];

	#Liberamos recursos
	$sth->finish();

	return $ref;
}
#--------------------------------------------------------------------
#En esta funcion escribimos una pagina HTML con un error
sub escribe_error_html()
{

print <<error_HTML;
<html>
        <HEAD>
                <TITLE>Inserción de arti&aciute;lo (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>
                        <h3 align=center>ERROR Art&iacute;culo @_[0] No est&aacute; en la BD.</h3>
                 </strong>

         </TD>
        </TABLE>
        </BODY>
        </HTML>

error_HTML
}

#--------------------------------------------------------------------
#En esta funcion escribimos la pagina HTML
sub escribe_pagina_html()
{
	my ($id,$nombre,$precio,$num_factura)=@_;	

print <<pagina_HTML;
<html>
<head>   <title>Tutorial de DBI: Compra de un art&iacute;culo.</title>


	<SCRIPT>
	<!--
	/*---------------------------------------------------------*/
	function borrar()
	{
		//Borramos el contenido del formulario
		document.formulario1.reset();

	}
	/*---------------------------------------------------------*/
	function mandar()
	//Enviamos el formulario comprobando los campos
	{
		//Comprobamos que el campo id este relleno
		if (document.formulario1.NOMBRE.value.length==0)
		{
			alert("El campo Nombre es imprescindible.");
			return false;
		}
		else if (document.formulario1.EMAIL.value.length==0)
		{
			alert("El campo E-mail es imprescindible.");
			return false;
		}
		else if (document.formulario1.DIRECCION.value.length==0)
		{
			alert("El campo Dirccion es imprescindible.");
			return false;
		}
		else if (document.formulario1.TELEFONO.value.length==0)
		{
			alert("El campo Telefono es imprescindible.");
			return false;
		}


		else document.formulario1.submit();
	}
	//-->
	</SCRIPT>

</head>


<body bgcolor=white lang=ES link=blue vlink=blue >

<!--Manejadores-->
<!-- Cabeza de de p gina -->
<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'>COMPRA DE UN ART&iacute;CULO</h1>
         </strong>
        </font>
 </TD>
</TABLE>

<p>Compra del art&iacute;culo $nombre (C&oacute;digo $id) Precio=$precio euros</p>
<p>Rellene con sus datos el siguiente formulario y el art&iacute;culo <i>$nombre</i>
le ser&aacute; enviado a casa a contrareembolso.</p>

<FORM NAME="formulario1" ACTION="/cgi-bin/guardar_pedido.pl" METHOD=GET>
<CENTER>
	<TABLE bgcolor="#008caa" BORDER=0 cellspacing=1 >

	    <!--Identificador del art&iacute;culo a comprar-->
            <TD><INPUT TYPE="hidden" VALUE="$id" NAME="ID" MAXLENGTH=30></TD>

	    <!--Numero de factura -->
            <TD><INPUT TYPE="hidden" VALUE="$num_factura" NAME="NUM_FACTURA" MAXLENGTH=30></TD>

	    <!--Nombre del cliente-->
	    <TR>
	    <TH align="left">Nombre:</TH>
		<TD><INPUT TYPE="text" NAME="NOMBRE" SIZE=30 MAXLENGTH=200></TD>
            <TR>

	    <!--E-mail del cliente-->
	    <TR>
 	    <TH align="left">E-mail:</TH>
		<TD><INPUT TYPE="text" NAME="EMAIL" SIZE=30 MAXLENGTH=100></TD>
            <TR>

	    <!--Direccion del cliente-->
	    <TR>
 	    <TH align="left">Direcci&oacute;n:</TH>
		<TD><INPUT TYPE="text" NAME="DIRECCION" SIZE=30 MAXLENGTH=200></TD>
            <TR>

	    <!--Telefono del cliente-->
	    <TR>
 	    <TH align="left">Tel&eacute;fono:</TH>
		<TD><INPUT TYPE="text" NAME="TELEFONO" SIZE=15 MAXLENGTH=15></TD>
            <TR>

	  </TABLE>


          <TABLE BGCOLOR="#008cAA"  ALIGN=center BORDER>
	   <TR>
	   <TD>Para aceptar-></TD>
	   <TD>
		<INPUT TYPE="button" VALUE="Aceptar" onClick="mandar();">
		&nbsp;&nbsp;&nbsp;&nbsp;
		&nbsp;&nbsp;&nbsp;&nbsp;
		<INPUT TYPE="button" VALUE="Borrar " onClick="borrar();">
	   </TD>
	   <TD><-Para borrar </TD>
	  </TABLE>

          <TABLE BGCOLOR="#008cAA"  ALIGN=center BORDER>
	   <TR>
	   <TD>Para volver-></TD>
	   <TD>
		<INPUT TYPE="button" VALUE="Volver " onClick="history.go(-1);">
	   </TD>
	   <TD><-Para volver </TD>
	  </TABLE>	

</FORM>
</CENTER>

<!-- Pie de p gina -->
<TABLE border=0  cellpadding=0 cellspacing=0 width=100%>
 <TD valign=middle width="100%" bgcolor="#008caa">
        <font color="#DDDDDD" face="sans-serif" size="+1">
         <strong>
                2000 Francisco Javier Garc&iacute;a Castellano. <a href="mailto:javi\@geneura.ugr.es"> javi\@geneura.ugr.es</a>
         </strong>
        </font>
 </TD>
</TABLE>


</body>
</html>
		 	

pagina_HTML
}
#--------------------------------------------------------------------

