Carrito de compras con PHP y MYSQL (Parte 1) Antes de empezar veremos, de manera resumida, para qué se utilizan las sesiones: Las sesiones nos permiten registrar un número arbitrario de variables que se conservan durante toda la visita de un usuario a una página web. Dichas variables pueden ser diferentes para cada usuario, ya que están referenciadas por un identificador único que se le asigna a cada visitante. En otras palabras, una sesión es una manera de almacenar variables de manera temporal, semejante a una cookie, pero con ciertas diferencias: las cookies se almacenan en la PC del usuario y pueden desactivarse; las sesiones, en cambio, se almacenan temporalmente en el servidor, en un fichero que se crea en el momento en que almacenamos la variable. Sabiendo esto (y entendiendo el uso de los arreglos vistos en clases anteriores), ya estamos en condiciones de entender cómo va a funcionar nuestro carro de compras. Primero crearemos en mysql (phpmyadmin) una tabla (en la base de datos dpweb ) para nuestro catálogo de artículos: create table catalogo (id int not null auto_increment primary key,producto varchar(100),precio decimal(9,2), imagen varchar(100)); Deberemos agregarle varios registros. También vamos a necesitar algunas imágenes para ayudar visualmente al usuario que va a utilizar nuestro carrito (en el ejemplo vamos a utilizar estas, luego cada uno las reemplaza por las que quieran): Imagen de producto no agregado al carrito: productonoagregado.gif Imagen de producto agregado: productoagregado.gif Botón para eliminar un producto del carrito: trash.gif Botón para actualizar las cantidades de un producto agregado: actualizar.gif Botón para continuar la selección de artículos: continuar.gif Botón para ver el contenido del carrito: vercarrito.gif Las pueden descargar de este link: http://appl.transexpress.com.sv/misdocs/imagenescarrito.rar Luego pueden buscar imágenes de mejor calidad para mejorar su carrito de compras. Con estos elementos, podemos crear los archivos.php, que nos servirán para introducir productos dentro del carro (y para modificar sus cantidades) y que consta de los siguientes archivos:
El ejemplo consta de 5 Archivos. 1) agregacar.php 2) borracar.php
3) catalogo.php ob_start("ob_gzhandler"); session_start(); require('conexion.php'); if(isset($_session['carro'])) $carro=$_session['carro'];else $carro=false; //y hacemos la consulta $qry=mysqli_query($conexion,"select * from catalogo order by producto asc"); <!doctype html> <html lang='es'> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>catalogo</title> </style> </head> <body> <h1 align="center">catálogo de productos</h1> <br> <table width="272" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid #000000;"> <tr valign="middle" bordercolor="#ffffff" bgcolor="#dfdfdf" class="catalogo"> <td width="170"><strong>producto</strong></td> <td width="77"><strong>precio</strong></td> <td width="25" align="right"><a href="vercarrito.php? echo SID " title="ver el contenido del carrito"> <img src="images/vercarrito.gif" width="50" height="50" border="0"></a></td> </tr> while($row=mysqli_fetch_assoc($qry)){ <tr valign="middle" class="catalogo"> <td align="center"> <font color="red" size="6pt"> echo $row['producto'] </font> <img src='images/ echo $row['imagen'] ' width='200' height='200'> </td> <td><font color="red" size="6pt">$ echo $row['precio'] </font></td> <td align="center"> if(!$carro!isset($carro[md5($row['id'])]['identificador']) $carro[md5($row['id'])]['identificador']!=md5($row['id'])){ <a href="agregacar.php? echo SID &id= echo $row['id']; "> <img src="images/productonoagregado.gif" border="0" title="agregar al Carrito" width="50" height="50"></a> }else {<a href="borracar.php? echo SID &id= echo $row['id']; ">
<img src="images/productoagregado.gif" border="0" title="quitar del Carrito" width="50" height="50"></a> } </td> </tr> } </table> </body> </html> ob_end_flush(); El resultado hasta este punto sería más o menos así:
4) vercarrito.php session_start(); if(isset($_session['carro'])) $carro=$_session['carro'];else $carro=false; <!doctype html> <html lang='es'> <title>productos AGREGADOS AL CARRITO</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"> </head> <body> <h1 align="center">carrito de Compras</h1> <br> if($carro){ <table width="720" border="0" cellspacing="0" cellpadding="0" align="center"> <tr bgcolor="#333333" class="tit"> <td width="105">producto</td> <td width="207">precio</td> <td colspan="2" align="center">cantidad de Unidades</td> <td width="100" align="center">borrar</td> <td width="159" align="center">actualizar</td> </tr> $color=array("#ffffff","#f0f0f0"); $contador=0; $suma=0; foreach($carro as $k => $v){ $subto=$v['cantidad']*$v['precio']; $suma=$suma+$subto; $contador++; //Creo una variable de sesion y le asigno el total a pagar $_SESSION['ValorPagar']=$suma; <form name="a echo $v['identificador'] " method="post" action="agregacar.php? echo SID " id="a echo $v['identificador'] "> <tr bgcolor=" echo $color[$contador%2]; " class='prod'> <td> echo $v['producto'] </td> <td> echo $v['precio'] </td> <td width="43" align="center"> echo $v['cantidad'] </td> <td width="136" align="center"> <input name="cantidad" type="text" id="cantidad" value=" echo $v['cantidad'] " size="8"> <input name="id" type="hidden" id="id" value=" echo $v['id'] "> </td> <td align="center"><a href="borracar.php? echo SID &id= echo $v['id']
"><img src="images/trash.gif" width="12" height="14" border="0"></a></td> <td align="center"> <input name="imagefield" type="image" src="images/actualizar.gif" width="20" height="20" border="0"></td> </tr></form> } </table> <div align="center"><span class="prod">total de Artículos: echo count($carro); </span> </div><br> <div align="center"><span class="prod">total: $ echo number_format($suma,2); </span> </div><br> <div align="center"><span class="prod">continuar la selección de productos</span> <a href="catalogo.php? echo SID;"> <img src="images/continuar.gif" width="13" height="13" border="0"></a> </div> <br> <div align="center"> <a href="pagarcompra.php? echo SID;"> <img src="images/comprar.jpg" border="0"></a> </div> }else{ <p align="center"> <span class="prod">no hay productos seleccionados</span> <a href="catalogo.php? echo SID;"> <img src="images/continuar.gif" width="13" height="13" border="0"></a> } </p> </body> </html>
El resultado del carrito de compras o la carretilla seria así: 5) pagarcompra.php Esta parte la haremos en la siguiente guía TAREA: Modifique el archivo catalogo.php para que aparezca al lado del producto la imagen que le corresponde.