|
|
(4 revisiones intermedias por el mismo usuario no mostrado) |
Línea 1: |
Línea 1: |
| {{:Usuario:ManuelRomero/php/smarty/tienda/nav}} | | {{:Usuario:ManuelRomero/php/smarty/tienda/nav}} |
| __NOTOC__ | | __NOTOC__ |
| + | <div class="parrafo"> |
| ===Probando el ejemplo=== | | ===Probando el ejemplo=== |
| *Puedes ver esta parte del ejercicio ejecutándose en la web: | | *Puedes ver esta parte del ejercicio ejecutándose en la web: |
− | http://manuel.infenlaces.com/dwes/tienda/TiendaProductos/login.php | + | http://manuel.infenlaces.com/dwes/practicas/tienda/2.-%20TiendaProductos/productos.php |
| + | |
| | | |
| ===Lista productos=== | | ===Lista productos=== |
Línea 14: |
Línea 16: |
| *Para ello añadiremos el método pública obtieneProductos() en la clase DB.php que quedará con lo que tenía | | *Para ello añadiremos el método pública obtieneProductos() en la clase DB.php que quedará con lo que tenía |
| [[Archivo:DB2_.png]] | | [[Archivo:DB2_.png]] |
− | *escribimos el código
| |
− |
| |
− | <source lang=php>
| |
− | <?php
| |
− | require_once('Producto.php');
| |
− |
| |
− | class DB {
| |
− |
| |
− | //..... lo que había
| |
− |
| |
− | /*======================obtieneProducto ()======================================
| |
− | Accion: obtiene un array con todos los productos de la bd.
| |
− | Parámetros:
| |
− | Retorna un array de objetos de productos con todos los productos
| |
− | * ***********************************************************************************************/
| |
− |
| |
− | public static function obtieneProductos() {
| |
− | //....
| |
− |
| |
− | </source>
| |
− |
| |
− |
| |
− |
| |
− |
| |
− |
| |
− | <!-- $sql = "SELECT cod, nombre_corto, nombre, PVP FROM producto;";
| |
− | $resultado = self::ejecutaConsulta ($sql);
| |
− | $productos = array();
| |
− |
| |
− | if($resultado) {
| |
− | // Añadimos un elemento por cada producto obtenido
| |
− | while ($row=$resultado->fetch()) {
| |
− | $productos[] = new Producto($row);
| |
− | }
| |
− | }
| |
− |
| |
− | return $productos;
| |
− | }
| |
− | </source>
| |
− | -->
| |
− | ;La clase Producto.php
| |
− | [[Archivo:producto.png]]<br />
| |
− | Esta clase implementa los atributos de la tabla productos y la posibilidad de obtener cada uno de sus atributos.
| |
− | {{Plegable|hide|Producto.php|
| |
− | <source lang=php>
| |
− | <?php
| |
− | class Producto {
| |
− | protected $codigo;
| |
− | protected $nombre;
| |
− | protected $nombre_corto;
| |
− | protected $PVP;
| |
− | </source>
| |
− |
| |
− | public function getcodigo() {return $this->codigo; }
| |
− | public function getnombre() {return $this->nombre; }
| |
− | public function getnombrecorto() {return $this->nombre_corto; }
| |
− | public function getPVP() {return $this->PVP; }
| |
− |
| |
− | public function __construct($row) {
| |
− | $this->codigo = $row['cod'];
| |
− | $this->nombre = $row['nombre'];
| |
− | $this->nombre_corto = $row['nombre_corto'];
| |
− | $this->PVP = $row['PVP'];
| |
− | }
| |
− | }
| |
− | ?>
| |
− | </source>
| |
− | }}
| |
− | ;productos.php
| |
− | *Esta parte del código simplemente accede a la base de datos y obtiene todos los productos
| |
− | *Los productos quedan disponibles para la plantilla en una variable '''''$productos''''' que es un array asociativo
| |
− | {{Plegable|hide|productos.php|
| |
− | <source lang=php>
| |
− | <?php
| |
− | require_once('./../include/DB.php');
| |
− | require_once('Smarty.class.php');
| |
− |
| |
− | // Recuperamos la información de la sesión
| |
− | session_start();
| |
− | ....
| |
− |
| |
− |
| |
− | // Y comprobamos que el usuario se haya autentificado, para evitar que puedan acceder directamente
| |
− | //a esta pagina sin pasar por el login
| |
− | if (!isset($_SESSION['usuario']))
| |
− | die("Error - debe <a href='login.php'>identificarse</a>.<br />");
| |
− |
| |
− |
| |
− | // Cargamos la librería de Smarty
| |
− |
| |
− | $smarty = new Smarty;
| |
− | $smarty->template_dir = '/web/smarty/tiendaSmarty2/templates/';
| |
− | $smarty->compile_dir = '/web/smarty/tiendaSmarty2/templates_c/';
| |
− | $smarty->config_dir = '/web/smarty/tiendaSmarty2/configs/';
| |
− | $smarty->cache_dir = '/web/smarty/tiendaSmarty2/cache/';
| |
− |
| |
− | // Ponemos a disposición de la plantilla los datos necesarios
| |
− |
| |
− | //.....
| |
− |
| |
− | $smarty->assign('usuario', $_SESSION['usuario']);
| |
− | $smarty->assign('productos', DB::obtieneProductos());
| |
− |
| |
− | // Mostramos la plantilla
| |
− | $smarty->display('producto.tpl');
| |
− | ?>
| |
− | </source>
| |
− | }}
| |
− |
| |
− | ;producto.tpl
| |
− | *Esta es la plantilla de los productos
| |
− | *En este caso debemos recorrer un array usando smarty
| |
− | *Como se vio en la teoría la estructura from de smarty queda reflejada en el siguiente código
| |
− | {{Plegable|hide|producto.tpl, la plantilla|
| |
− | <source lang=php>
| |
− | <!DOCTYPE html >
| |
− | <html>
| |
− | <head>
| |
− | <meta http-equiv="content-type" content="text/html; charset=UTF-8">
| |
− | <title>Listado de Productos con Plantillas</title>
| |
− | <link href="tienda.css" rel="stylesheet" type="text/css">
| |
− | </head>
| |
− |
| |
− | <body class="pagproductos">
| |
− |
| |
− | <div id="contenedor">
| |
− | <div id="encabezado">
| |
− | <h1>Listado de productos</h1>
| |
− | </div>
| |
− |
| |
− | <div id="productos">
| |
− | {foreach from=$productos item=producto}
| |
− | <p>
| |
− | <form id='{$producto->getcodigo()}' action='productos.php' method='post'>
| |
− | <input type='hidden' name='cod' value='{$producto->getcodigo()}'/>
| |
− | <input type='submit' name='enviar' value='Añadir'/>
| |
− | {$producto->getnombrecorto()}: {$producto->getPVP()} euros.</form>
| |
− | </p>
| |
− | {/foreach}
| |
− | </div>
| |
− |
| |
| </div> | | </div> |
− | </body>
| |
− | </html>
| |
− | </source>
| |
− | }}
| |