martes, 21 de junio de 2011

16. Proyecto I Proyecto 1.1

Y llegamos al punto que tanto deseaba, y era ya realizar un programa nosotros mismos. Con todo lo que hemos visto en el blog estoy segura que seréis capaces de realizar este programa sin problema alguno, aunque si tenéis dudas o sugerencias me podéis enviar un mail.
Nuestro primer proyecto va a ser una página donde se puedan hacer pedidos. Esto tiene un poco de historia, como veréis algunas páginas son  tiendas virtuales, es decir, que han enfocado su negocio a Internet donde dan la posibilidad de que realicéis compras a través de la red. Bien, al principio no había tiendas virtuales. Se hacía de una forma que es en la que va a consistir nuestro proyecto. En la página había una serie de productos mostrados a través de una tabla y el usuario hacia clic en un botón de opción de los productos que deseaba, introducía sus datos personales en un formulario le daba al botón enviar y le salía en pantalla los datos personales que había introducido, los productos que había elegido con el precio de cada uno, el precio total, etc. y una opción donde podías imprimir para tener constancia de que habías realizado el pedido. Pero claro, esto estaba muy limitado, las compras solo podían hacerse contra reembolso,   negocios que  ofrecían cientos de productos, o que ciertos productos tenían un descuento, o dependiendo del cliente se le ofrecía un determinado precio diferente al resto, etc.  Por lo que muchos que querían enfocar su negocio en una página Web tenían que contratar los servicios de un programador que le hiciera la tienda a la medida que ellos deseaban. De esta manera, poco a poco fueron surgiendo aplicaciones destinadas a ser utilizadas como tiendas virtuales, incluso aplicaciones que están en Internet con la posibilidad de descargarlas totalmente gratuitas de forma que tú mismo puedas crear tu propia tienda sin necesidad de contratar los servicios de un programador.  Una de las más conocidas es Oscommerce, aunque hay muchas otras, aunque esto es otro tema que profundizaremos en otro proyecto.
De momento vamos a seguir con nuestro proyecto. El proyecto que yo he realizado es el siguiente: Consiste en una página Web en el que se muestra en un formulario una serie de productos en el que el usuario puede elegir los productos que desea, introducir sus datos personales y al darle clic al botón enviar nos redirecciona a otra página donde sale impreso el pedido que hemos realizado con nuestros datos personales. Sin embargo, este proyecto lo vamos a ir haciendo poco a poco, para que vayamos entendiendo en cada momento lo que realizamos y porque lo realizamos. En las próximas entradas el proyecto se modificará y se ampliará. De forma que el proyecto final quede de la siguiente manera:


















Como veis, lo he enfocado todo a la creación de una página Web donde el lenguaje PHP va embebido para que nos acostumbremos que cuando nos pidan o tengamos que desarrollar alguna aplicación lo tenemos que hacer sobre una página Web ya creada, o, que tengamos que diseñarla nosotros.
El pedido consiste en programas Antivirus y tendrá una apariencia similar a la siguiente:














Es un formulario muy básico cuando elijamos la cantidad de programas que deseamos y le demos a enviar nos aparecerá la siguiente pantalla:














Primero creamos el archivo html, lo vamos a llamar form1.html. Creamos el formulario:
<form name="form1" id="form1" method="post" action="procesaform1.php">
          <table width="168" border="1" align="center" bordercolor="#999999">
            <tr bgcolor="#999999">
              <td width="88"><div align="center"><strong>Antivirus</strong></div></td>
              <td width="64"><div align="center"><strong>Cantidad</strong></div></td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <td>Norton</td>
              <td>
                <div align="center">
                  <input name="nortoncant" type="text" id="nortoncant" size="3" maxlength="3" />
                </div></td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <td>Panda</td>
              <td><div align="center">
                <input name="pandacant" type="text" id="pandacant" size="3" maxlength="3" />
              </div></td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <td>Nod32</td>
              <td><div align="center">
                <input name="nodcant" type="text" id="nodcant" size="3" maxlength="3" />
              </div></td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <td>AVG</td>
              <td><div align="center">
                <input name="avgcant" type="text" id="avgcant" size="3" maxlength="3" />
              </div></td>
            </tr>
            <tr bgcolor="#CCCCCC">
              <td colspan="2"><div align="center">
                <input type="submit" name="Submit" value="Enviar Pedido" />
              </div></td>
            </tr>
  </table>
</form>
Fijaros que los campos de texto los denominamos con un nombre que va a designar la cantidad elegida por cada uno, en este caso para Norton será nortoncant, para el Panda pandacant, para Nod32 será nodcant y para AVG avgcant. Nortoncant, pandacant, nodcant y avgcant las vamos a declarar como variables en el archivo php. Hay que recordar que en action hay que escribir el nombre del archivo php con el que al darle al botón enviar nos redireccionará. Y por lo demás el formulario no tiene tanta complicación, es un formulario bastante básico.
En cuanto al código del archivo procesaform1.php será el siguiente:
<?
       echo "<p> Pedido procesado a las: ";
       echo date ("H:i"); //La fecha con la hora incluída
       echo " del día ";
       echo date ("j ");
       echo "de ";
       echo date ("F ");
       echo "del año ";
       echo date ("Y"); //hasta aquí la fecha
       echo "<br>";
       echo "<p>Su pedido es el siguiente: ";
       echo "<br>";
       echo $nortoncant. " Norton<br>"; //procesa la cantidad de norton
       echo $pandacant. " Panda<br>"; //procesa la cantidad de panda
       echo $nodcant. " Nod32<br>"; //procesa la cantidad de nod
       echo $avgcant. " AVG<br>"; //procesa la cantidad de avg
      
       $totalcant = 0; //la cantidad total de programas antivirus solicitados
       $total= 0.00; //el precio total de los programas solicitados
      
       define ("NORTONPRECIO", 50); //el precio de cada programa
       define ("PANDAPRECIO", 52);
       define ("NOD32PRECIO", 28);
       define ("AVGPRECIO", 24,30);
      
       $totalcant = $nortoncant + $pandacant + $nodcant + $avgcant; //cálculo de la cantidad total de programas
       $total = $nortoncant * NORTONPRECIO
                + $pandacant * PANDAPRECIO
                   + $nodcant * NOD32PRECIO
                   + $avgcant * AVGPRECIO;     //cálculo del precio total
    
       echo "<br>";
       echo "Programas pedidos: ".$totalcant."<br>\n";
       echo "Subtotal:   €";
       echo number_format($total, 2);
       echo "<br>\n";
      
       $iva=0.16;
       $total = $total *(1+$iva);
       $total=number_format($total, 2);
       echo "Total incluyendo impuestos: €".$total."<br\n";
       ?>
Aquí me voy a explayar y voy a explicarlo y comparándolo con lo que nos sale impreso en pantalla. Las primeras líneas es la fecha en la que aparece impreso el pedido:
echo "<p> Pedido procesado a las: ";
       echo date ("H:i");   echo " del día ";
       echo date ("j ");
       echo "de ";
       echo date ("F ");
       echo "del año ";
       echo date ("Y");
Hay muchas formas de escribir la fecha, haber un día de estos dedico una entrada a las fechas y horas en PHP.
Bueno a lo que íbamos, las siguientes líneas son las que imprimen en la página la cantidad solicitada en cada producto:
echo $nortoncant. " Norton<br>";
       echo $pandacant. " Panda<br>";
       echo $nodcant. " Nod32<br>";
       echo $avgcant. " AVG<br>";
Esto se refiere a:









Y como podéis comprobar las variables que se refieren a la cantidad de los productos coincide con el nombre que le hemos dado a cada uno de los campos de texto del formulario.
Las siguientes líneas
  $totalcant = 0;
       $total= 0.00;
Unas variables que hemos creado $totalcant se referirá a la cantidad total de los productos seleccionados que será un numero entero y la variable $total que será el precio total de los productos seleccionados que será un número decimal.
Las siguientes líneas, es el precio que hemos fijado a cada producto:
define ("NORTONPRECIO", 50);    
define ("PANDAPRECIO", 52);
define ("NOD32PRECIO", 28);
define ("AVGPRECIO", 24,30);
¿Os acordáis de la función define? Hacer memoria, y sino, volver a recordarlo. En entradas anteriores hablamos de ello.
Volvemos otra vez a las variables $totalcant y $total:
$totalcant = $nortoncant + $pandacant + $nodcant + $avgcant;
       $total = $nortoncant * NORTONPRECIO
                + $pandacant * PANDAPRECIO
                   + $nodcant * NOD32PRECIO
                   + $avgcant * AVGPRECIO;    
Aquí le estamos indicando que lo que tiene que contener cada variable. En $totalcant será la suma de las cantidades de los productos seleccionados y en $total será la cantidad de los productos seleccionados por el precio correspondiente.
Y por último son las últimas líneas que aparecen impresas:
echo "Programas pedidos: ".$totalcant."<br>\n";
       echo "Subtotal:   €";
       echo number_format($total, 2);
       echo "<br>\n";
      
       $iva=0.16;
       $total = $total *(1+$iva);
       $total=number_format($total, 2);
       echo "Total incluyendo impuestos: €".$total."<br\n";
la función number_format($total, 2) es para que aparezca solo dos decimales, sino en algunos casos podrían salirnos una retahíla de decimales. Hemos incluido la variable del impuesto que se paga por los productos, he puesto el 16%. Estás líneas son:








Fijaros en el calculo del IVA, fijaros en como definimos las variables para el precio de cada producto, como declaramos las variables $totalcant y $total, etc. Fijaros en todo, paso a paso, es muy fácil, si lo entendéis vosotros mismo podréis crear un proyecto similar. Como ya digo siempre me lo podéis enviar y así lo comparto con todos en el blog.
Por hoy doy como finalizado esta primera parte del proyecto en la siguiente entrada lo complicaré un poco más añadiendo algunas opciones más al formulario, algún descuento, etc. De momento esto es todo. Hasta pronto!

3 comentarios:

  1. Hola amizba, hice tu practica pero me salio el siguiente "error"
    Notice: Undefined variable: nortoncant in
    y con todas las variables usadas en el formulario...
    lo corregi con: $nortoncant =isset($_REQUEST['variable']);
    pero todo me sale en ceros, espero y me puedas apoyar, saldos y buen blog

    ResponderEliminar
  2. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  3. todo me sale en 1s (aclaracion) usando $nortoncant =isset($_REQUEST['nortoncant']);

    ResponderEliminar