sábado, marzo 12, 2011

PHP - Carrito de Compras Parte IV - Creación de la Capa de Presentación


"Si usa algún código del siguiente tutorial, den el icono de ME GUSTA del Facebook que se encuentra en su mano derecha, para que se vuelva Seguidor del Blog y también comentenos que tal les pareció el tutorial"

1. Entorno


  • NetBeans IDE 6.9.1
  • WampServer 2.1.

2. Introducción


En esta parte mostraremos los formularios con la cual es usuario interactuara con el sistema. Y veremos cómo crear un reporte en Excel con PHP

3. Desarrollo


3.1. Crear Carpeta

Vamos a crear una carpeta que se llamara "Include", en esta carpeta pondremos los archivos que serán comunes para todas las paginas en PHP. Como por ejemplo el menú de opciones del sistema. Y en esa carpeta crearemos un archivo que se llamara "Cabezera.php"















Y el archivo tendrá el siguiente código fuente:


<h1>Programando con Café - Carrito Compras con PHP<br>Ing. Henry Joe Wong Urquiza</h1>
    <div>
        <a href="index.php">Inicio</a> |
        <a href="registrarProducto.php">Registrar Producto</a> |
        <a href="registrarVenta.php">Registrar Venta</a> |
        <a href="verVenta.php">Consultar Ventas</a> |
        <a href="reporteVentas.php">Reporte Producto</a>
    </div>
<br>


3.2. Archivo index.php

En este archivo mostraremos todos los productos que tenemos en el sistema. Y tendrá el siguiente código


<?php
include_once 'CapaDatos/Producto.php';
$pro = new Producto();
$lista = $pro->buscarProductoTodos();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
        <?php include_once 'Include/Cabezera.php'; ?>
        <div>
        <table border="1">
            <tr style="background-color: chocolate">
                <td colspan="4" >Listado Producto</td>
            </tr>
            <tr style="background-color: chocolate">
                <td>Código</td>
                <td>Nombre</td>
                <td>Precio</td>
                <td>Proceso</td>
            </tr>
        <?php
         if(count($lista)>0){
             for($i=0;$i<(count($lista));$i++) {
                $dirModifica="modificarProducto.php?codigoProducto=".$lista[$i]['codigoProducto'];
                $dirAnadir="anadirCarrito.php?codigoProducto=".$lista[$i]['codigoProducto'];
        ?>
            <tr>
                <td><?php echo ($lista[$i]['codigoProducto']);?></td>
                <td><?php echo ($lista[$i]['nombre']);?></td>
                <td><?php echo ($lista[$i]['precio']);?></td>
                <td><a href="<?php echo $dirModifica;?>">Modificar</a> |
                    <a href="<?php echo $dirAnadir;?>">Añadir</a>
                </td>
            </tr>
        <?php
             }
         }
        ?>
        </table>
        </div>
    </body>
</html>

3.3. Archivo registrarProducto.php

Este archivo PHP es el encargado de mostrar al usuario el formulario para registrar los productos a la base de datos. Su código html es el siguiente


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
        <?php include_once 'Include/Cabezera.php'; ?>
        <form method="post" action="CapaNegocios/Prod_RegistrarProducto.php">
            <div>
                <table border="1">
                        <tr>
                            <td>Nombre</td>
                            <td><input type="text" name="txtNombre" value="" /></td>
                        </tr>
                        <tr>
                            <td>Precio</td>
                            <td><input type="text" name="txtPrecio" value="0" /></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type="submit" value="Registrar" name="btnRegistrar" /></td>
                        </tr>
                </table>
                </div>
        </form>

    </body>
</html>

3.4. Archivo modificarProducto.php

Este archivo recibe el código del producto por medio del archivo "index.php". Muestra la información del producto que deseamos modificar y nos permite editar su información


<?php
include_once 'CapaDatos/Producto.php';
$pro = new Producto();
$pro->setCodigoProducto($_REQUEST['codigoProducto']);
$lista = $pro->buscarProducto();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
        <?php include_once 'Include/Cabezera.php'; ?>
        <form method="post" action="CapaNegocios/Prod_ModificarProducto.php">
            <div>
                <table border="1">
                        <tr>
                            <td>Codigo</td>
                            <td><input type="text" name="txtCodigo" value="<?php echo ($lista[0]['codigoProducto']);?>" readonly /></td>
                        </tr>
                        <tr>
                            <td>Nombre</td>
                            <td><input type="text" name="txtNombre" value="<?php echo($lista[0]['nombre']);?>" /></td>
                        </tr>
                        <tr>
                            <td>Precio</td>
                            <td><input type="text" name="txtPrecio" value="<?php echo($lista[0]['precio']);?>" /></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type="submit" value="Actualizar" name="btnActualizar" /></td>
                        </tr>
                </table>
                </div>
        </form>

    </body>
</html>

3.5. Archivo anadirCarrito.php

Este formulario recibe el código del producto que deseamos añadir al carrito de compras desde la pagina "index.php". Muestra toda la información del producto y nos pide la cantidad que deseamos añadir al carrito. Su codigo fuente es el siguiente



<?php
include_once 'CapaDatos/Producto.php';
$pro = new Producto();
$pro->setCodigoProducto($_REQUEST['codigoProducto']);
$lista = $pro->buscarProducto();

?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
        <?php include_once 'Include/Cabezera.php'; ?>
        <form action="registrarVenta.php" method="post">
            <div>
                <table border="1">
                        <tr>
                            <td>Codigo</td>
                            <td><input type="text" name="txtCodigo" value="<?php echo ($lista[0]['codigoProducto']);?>" readonly /></td>
                        </tr>
                        <tr>
                            <td>Nombre</td>
                            <td><input type="text" name="txtNombre" value="<?php echo($lista[0]['nombre']);?>" readonly /></td>
                        </tr>
                        <tr>
                            <td>Precio</td>
                            <td><input type="text" name="txtPrecio" value="<?php echo($lista[0]['precio']);?>" readonly /></td>
                        </tr>
                        <tr>
                            <td>Cantidad Pedir</td>
                            <td><input type="text" name="txtCantidad" value="0" /></td>
                        </tr>
                        <tr>
                            <td></td>
                            <td><input type="submit" value="Añadir" name="btnAnadir" /></td>
                        </tr>
                </table>
                </div>
              
        </form>

    </body>
</html>

3.6. Archivo registrarVenta.php

Este archivo es el encargado de mostrar al usuario el formulario para concluir la venta. Lo que hace es traer todos los productos que están en sesión y mostrarlos en una tabla, para que asi veamos todos los productos que tenemos en el carrito de compras y poder decirle que lo registra a la base de datos


<?php
session_start();
session_register('itemsEnCesta');
//Estableciendo los datos al carrito
$codigo = $_REQUEST['txtCodigo'];
$nombre = $_REQUEST['txtNombre'];
$cantidad = $_REQUEST['txtCantidad'];
$pu = $_REQUEST['txtPrecio'];
$parcial = ($cantidad * $pu);
$descuento = 0;
if ($parcial > 50) {
    $descuento = ($parcial * 0.05);
}
$itemsEnCesta = $_SESSION['itemsEnCesta'];
if ($codigo) {
    if (!isset($itemsEnCesta)) {
        $itemsEnCesta[$codigo] = array("codigo" => $codigo,
            "nombre" => $nombre,
            "cantidad" => $cantidad,
            "pu" => $pu,
            "parcial" => $parcial,
            "descuento" => $descuento,
            "subtotal" => ($parcial - $descuento));
    } else {
        $itemsEnCesta[$codigo] = array("codigo" => $codigo,
            "nombre" => $nombre,
            "cantidad" => $cantidad,
            "pu" => $pu,
            "parcial" => $parcial,
            "descuento" => $descuento,
            "subtotal" => ($parcial - $descuento));
    }
}
$_SESSION['itemsEnCesta'] = $itemsEnCesta;
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
<?php include_once 'Include/Cabezera.php'; ?>
        <div>
            <form action="CapaNegocios/Vent_RegistrarVenta.php" method="post">
                <table border="1">
                    <tr style="background-color: chocolate">
                        <td colspan="6" >Carrito de Compras</td>
                    </tr>
                    <tr style="background-color: chocolate">
                        <td>Cliente</td>
                        <td colspan="5" ><input type="text" name="txtCliente" value="" /></td>
                    </tr>
                    <tr style="background-color: chocolate">
                        <td>Nombre</td>
                        <td>Cantidad</td>
                        <td>Precio</td>
                        <td>Parcial</td>
                        <td>Descuento</td>
                        <td>Sub.Total</td>
                    </tr>
<?php
if (isset($itemsEnCesta)) {
foreach ($itemsEnCesta as $k => $v) {
?>
                    <tr>
                        <td><?php echo ($v['nombre']); ?></td>
                        <td><?php echo number_format(($v['cantidad']), 2); ?></td>
                        <td><?php echo number_format(($v['pu']), 2); ?></td>
                        <td><?php echo number_format(($v['parcial']), 2); ?></td>
                        <td><?php echo number_format(($v['descuento']), 2); ?></td>
                        <td><?php echo number_format(($v['subtotal']), 2); ?></td>
                    </tr>
<?php
                }
}
?>
                    <tr style="background-color: chocolate">
                        <td colspan="6" ><input type="submit" value="Registrar Venta" name="btnRegistrarVenta" /></td>
                    </tr>
                </table>
            </form>
        </div>
    </body>
</html>


3.6. Archivo verVenta.php

Este archivo nos permite ver todas las ventas en formato HTML. Su código seria el siguiente


<?php
include_once 'CapaDatos/Venta.php';
$ven = new Venta();
$lista = $ven->buscarVenta();
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Programando con Café - Carrito de compras con PHP</title>
    </head>
    <body>
        <?php include_once 'Include/Cabezera.php'; ?>
        <div>
        <table border="1">
            <tr style="background-color: chocolate">
                <td>Código</td>
                <td>Cliente</td>
                <td>Producto</td>
                <td>Precio</td>
                <td>Cantidad</td>
                <td>Parcial</td>
                <td>Descuento</td>
                <td>Sub. Total</td>
                <td>Total</td>
            </tr>
        <?php
         if(count($lista)>0){
             for($i=0;$i<(count($lista));$i++) {
        ?>
            <tr>
                <td><?php echo ($lista[$i]['CodigoVenta']);?></td>
                <td><?php echo ($lista[$i]['Cliente']);?></td>
                <td><?php echo ($lista[$i]['Nombre']);?></td>
                <td><?php echo number_format(($lista[$i]['Precio']),2);?></td>
                <td><?php echo number_format(($lista[$i]['Cantidad']),2);?></td>
                <td><?php echo number_format(($lista[$i]['Parcial']),2);?></td>
                <td><?php echo number_format(($lista[$i]['Descuento']),2);?></td>
                <td><?php echo number_format(($lista[$i]['SubTotal']),2);?></td>
                <td><?php echo number_format(($lista[$i]['TotalPagar']),2);?></td>
            </tr>
        <?php
             }
         }
        ?>
        </table>
        </div>
    </body>
</html>


3.7. Archivo reporteVentas.php

Este archivo PHP nos permite crear un reporte en Excel. Su código fuente es el siguiente


<?php
header('Content-type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename=reporteVentas.xls');
header('Pragma: no-cache');
header('Expires: 0');
include_once 'CapaDatos/Venta.php';
$ven = new Venta();
$lista = $ven->buscarVenta();
?>
<table border="1">
    <tr >
        <td style="background-color: chocolate">Cod</td>
        <td style="background-color: chocolate">Cliente</td>
        <td style="background-color: chocolate">Producto</td>
        <td style="background-color: chocolate">Precio</td>
        <td style="background-color: chocolate">Cantidad</td>
        <td style="background-color: chocolate">Parcial</td>
        <td style="background-color: chocolate">Descuento</td>
        <td style="background-color: chocolate">Sub. Total</td>
        <td style="background-color: chocolate">Total</td>
    </tr>
    <?php
    if (count($lista) > 0) {
        for ($i = 0; $i < (count($lista)); $i++) {
    ?>
            <tr>
                <td><?php echo ($lista[$i]['CodigoVenta']); ?></td>
                <td><?php echo ($lista[$i]['Cliente']); ?></td>
                <td><?php echo ($lista[$i]['Nombre']); ?></td>
                <td><?php echo number_format(($lista[$i]['Precio']), 2); ?></td>
                <td><?php echo number_format(($lista[$i]['Cantidad']), 2); ?></td>
                <td><?php echo number_format(($lista[$i]['Parcial']), 2); ?></td>
                <td><?php echo number_format(($lista[$i]['Descuento']), 2); ?></td>
                <td><?php echo number_format(($lista[$i]['SubTotal']), 2); ?></td>
                <td><?php echo number_format(($lista[$i]['TotalPagar']), 2); ?></td>
            </tr>
    <?php
        }
    }
    ?>
</table>

4. Ejemplo de la Aplicación


27 comentarios:

have to review all chapters :)

http://www.programandoconcafe.com/2011/03/carrito-de-compras-con-php-y-mysql.html

un favor podrias subir el proyecto terminado, porque yo hice como dice en la pasina pero no me sale no se cual sea mi error, por eso me gustaria que subas el proyecto te agradeceria mucho, Saludos desde Lima

Lo subiré todo completo ,mas tarde. Saludos!!!!

Gracias Bien :D
Saludos!!!

Si no seria mucho pedir, podrias avisar o publicar por facebook cuando lo subas, ya que sigo programando con cafe por ahi, esta buenas las publicaciones sobre java y oracle, muy buena, Gracias.
SALUDOS!!!!!!

Hola soy Yesica
yesica_4681@hotmail.com

Ya hice todo lo que esta las paginas una duda la Base de Datos se realiza en NetBeans??o desde phpMyadmin?

Oye me lo puedes psar completo te lo agradeceria.

La base de datos lo hago en phpmyadmin o directamente desde el mysql. El proyecto se me perdió tendría que hacerlo de nuevo, sorry

Para bajar el código pueden bajarlo de aquí: http://dl.dropbox.com/u/8439638/ProgramandoConCafe/PHP_CarritoCompras.rar

Muchas gracias por todos tus tutoriales ^^

Muchas gracias por todos tus tutos y por subir el proyecto completo ^^

Muchas gracias por lo saludos :D

GRACIAS POR TOMARTE EL TIEMPO DE REALIZAR ESTOS TRABAJOS!!! FELICIDADES

Espero que te sirva bastante :D

Estimado Henry, excelente el aporte de PHP - Carrito de compras en su conjunto.
Muchas gracias por compartir.

BUENAS NOCHES, LLEVO VARIOS DIAS INTENTANDO COMUNICARME CON USTED, ESTOY HACIENDO EL CARRITO DE COMPRAS QUE USTED TIENE EN EL TUTORIAL Y ME SALEN ALGUNOS ERRORES QUE NO ENCUENTRO PUEDE AYUDARMA ESTE ES EL LINK
http://www.tritanherramientas.com/carro/index.php

La solución lo podrías encontrar al final de todo los capítulos :D

Muy bueno el tutorial, me ha funcionado muy bien, de ehcho cree una tabla Clientes, y lo enlace con la TB de Venta.

Que bueno que te haya servido

Muchas Gracias, muy completo el tutorial

veryyyyyyyyyyyyyyyyyyyyyyy
excelenttttttttttttttttttt

muchas gracias si paso el ramo de php te hago un monumento
saludos y gracias por el aporte

muchas gracias si paso php te hago un monumento

gracias por el aporte

Muchisimas Gracias!!! no sbaes como me ayudo tu proyecto!!!

Dios te bendiga!!!
y otra vez "GRACIAS"

Mil gracias Henry, a sido una bendicion grandisima tu proyecto... pense que tenia q cambiar de carrera!
gracias por compartir tus conocimientos y tomarte el tiempo para hacerlo.
le agradezco mucho

muchas gracias me va servir mucho como base para un proyecto