Usuario:ManuelRomero/php/smarty/enunciado

DESCRIPCIÓN DE LA PRÁCTICA DE LA TIENDA ON LINE

 * Vamos a hacer un ejemplo práctico en el que vamos a usar sesiones
 * Consiste en implementar una tienda on line con los datos siguientes
 * Diagrama de entidades

que venimos trabajando
 * El siguiente diagrama muestra el escenario que queremos representar
 * El programa debe de ser en la medida de lo posible orientado a objetos (Ver en sección más abajo clases que se recomienda utilizar)
 * Explicación funcional de las páginas


 * Login (login.php).
 * Su función es autentificar al usuario de la aplicación web.
 * Todos los usuarios de la aplicación deberán autentificarse utilizando esta página antes de poder acceder al resto de páginas.


 * Listado de productos (productos.php).
 * Presenta un listado de los productos de la tienda, y permite al usuario seleccionar aquellos que va a comprar.


 * Cesta de compra (cesta.php).
 * Muestra un resumen de los productos escogidos por el usuario para su compra y da acceso a la página de pago.


 * Pagar (pagar.php).
 * Una vez confirmada la compra, la última página debería ser la que permitiera al usuario escoger el método de pago y la forma de envío.
 * En esta aplicación simplemente mostrará un mensaje de tipo "Gracias por su compra" y ofrecerá un enlace para comenzar una nueva compra.


 * Logoff (logoff.php).
 * Esta página desconecta al usuario de la aplicación y redirige al usuario de forma automática a la pantalla de autentificación.
 * No muestra ninguna información en pantalla, por lo que no es visible para el usuario.

http://www.manuel.infenlaces.com/tienda/loginW.php
 * Para realizar esta práctiva vamos a utilizar la siguiente hoja de estilo, disponible en un fichero puesto en el moodle
 * Observa los diferentes div definidos para poderlos utilizar como es el caso de error
 * Podemos ver el ejercicio funcionando en esta url

Especificaciones adcionales

 * Para este ejercicio vamos a separar la lógica del negocio de la presentación.
 * El resultado será un proyecto con varios fichero, estructurados en una organización previa lo que generarará un despliegue más organizado y estructurado
 * Las especificaciones no funcionales de este ejercicio son:

Clases a utilizar

 * Se recomienda usar las siguientes clases, se aportan ejemplos de los métodos
 * BD.php

Acciones relacionadas con la cesta de la compra nuevoArticulo getProductos getUnidades getCoste vaciar
 * Clase con los métodos necesarios para acceder/consultar/validar en la base de datos. Por ejemplo
 * Fuera de este fichero no se debe de acceder a la base de datos ni a objetos mysqli ni msqli_result, por lo que las consultas deberán de retornar un array de elementos (objetos o filas)
 * Producto.php
 * Clase para interactuar con un producto concreto
 * Deberá de tener todos los atributos que tenga la tabla producto (Al menos todos los que necesitemos en nuestra aplicación.
 * CestaCompra.php
 * BD.php
 * Clase con los métodos necesarios para acceder/consultar/validar en la base de datos. Por ejemplo


 * Producto.php
 * Clase para interactuar con un prodcuto concreto


 * CestaCompra.php
 * Acciones relacionadas con la cesta de la compra

PLANTILLAS

 * Es la parte de interfaz de cliente
 * Normalmente cada parte php tendrá su plantilla, de modo que los ficheros php solo tienen código de control y de acceso y gestión de la base de datos
 * login.tpl
 * productos.tpl (listaProductos.tpl y productosCesta.tpl)
 * cesta.tpl

NEGOCIO o LÓGICA

 * 5 plantillas tendremos 5 ficheros php, aunque esto no tendría que ser necesariamente así
 * cesta.php
 * login.php
 * logoff.php
 * pagar.php
 * productos.php
 * La funcionalidad queda descrita en el enunciado

Forma de proceder

 * Vamos a hacer este ejercicio de forma incremental, realizando cada parte con el fin de ir asimilando bien los conceptos de plantillas y la separación de negocio o lógicay presentación.
 * 1) Login ==> Nos identificaremos para acceder al sitio web
 * 2) Productos ==> Se visualizarán una lista de todos los productos
 * 3) Logoff ==> Tendremos la opción de desconectarnos
 * 4) Cesta ==> Aparecerá la posibilidad de ir incorporando nuevos elementos a la cesta
 * 5) Opciones de Cesta ==> Podremos o pagar y terminar la app o bien vaciar la cesta de la compra
 * 6) Descripción ==> Algunos productos pueden tener una descripción que querremos visualizar
 * Cada una de estas cinco acciones deben de constituir una aplicación.