Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/07/2012, 13:34
roodriv
 
Fecha de Ingreso: junio-2012
Mensajes: 46
Antigüedad: 12 años, 5 meses
Puntos: 1
Sumar productos en carro de compras

Gente tengo un script de un carro de compras muy simple, funciona con array. Lo que quiero hacer es que cuando agregue un producto 2 veces no me lo duplique, sino que me cuente que lo tengo 2 veces. Les dejo el código con el cual funciona.

Yo lo inserto al carro de ésta forma
<a href="mete_producto.php?id=1&nombre=producto&preci o=10">Producto $10</a>

Este es el mete_producto.php

Código PHP:
Ver original
  1. <?
  2. include("lib_carrito.php");
  3. $_SESSION["ocarrito"]->introduce_producto($_GET["id"], $_GET["nombre"], $_GET["precio"], $_GET["imagen"]);
  4. ?>
  5.  
  6. <html>
  7. <head>
  8.     <title>Introduce Producto</title>
  9. </head>
  10.  
  11. <body>
  12.  
  13. Producto introducido.
  14. <br>
  15. <br>
  16. <a href="index.php">- Volver</a>
  17. <br>
  18. <br>
  19. <a href="ver_carrito.php">- Ver carrito</a>
  20.  
  21. </body>
  22. </html>

Y este es lib_carrito.php

Código PHP:
Ver original
  1. <?
  2. class carrito {
  3.     //atributos de la clase
  4.     var $num_productos;
  5.     var $array_id_prod;
  6.     var $array_nombre_prod;
  7.     var $array_precio_prod;
  8.     var $array_imagen_prod;
  9.     //constructor. Realiza las tareas de inicializar los objetos cuando se instancian
  10.     //inicializa el numero de productos a 0
  11.     function carrito () {
  12.         $this->num_productos=0;
  13.     }
  14.    
  15.     //Introduce un producto en el carrito. Recibe los datos del producto
  16.     //Se encarga de introducir los datos en los arrays del objeto carrito
  17.     //luego aumenta en 1 el numero de productos
  18.     function introduce_producto($id_prod,$nombre_prod,$precio_prod,$imagen_prod){
  19.         $this->array_id_prod[$this->num_productos]=$id_prod;
  20.         $this->array_nombre_prod[$this->num_productos]=$nombre_prod;
  21.         $this->array_precio_prod[$this->num_productos]=$precio_prod;
  22.         $this->array_imagen_prod[$this->num_productos]=$imagen_prod;
  23.         $this->num_productos++;
  24.     }
  25.  
  26.     //Muestra el contenido del carrito de la compra
  27.     //ademas pone los enlaces para eliminar un producto del carrito
  28.     function imprime_carrito(){
  29.         $suma = 0;
  30.         echo '<table border=1 cellpadding="3">
  31.               <tr>
  32.                 <td><b>Nombre producto</b></td>
  33.                 <td><b>Precio</b></td>
  34.                 <td>&nbsp;</td>
  35.               </tr>';
  36.         for ($i=0;$i<$this->num_productos;$i++){
  37.             if($this->array_id_prod[$i]!=0){
  38.                 echo '<tr>';
  39.                 echo "<td>" . $this->array_nombre_prod[$i] . "</td>";
  40.                 echo "<td>" . $this->array_precio_prod[$i] . "</td>";
  41.                 echo "<img src=' . $this->array_imagen_prod[$i] . ' />";
  42.                 echo "<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
  43.                 echo '</tr>';
  44.                 $suma += $this->array_precio_prod[$i];
  45.             }
  46.         }
  47.         //muestro el total
  48.         echo "<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td>&nbsp;</td></tr>";
  49.         //total más IVA
  50.         echo "</table>";
  51.     }
  52.    
  53.     //elimina un producto del carrito. recibe la linea del carrito que debe eliminar
  54.     //no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
  55.     function elimina_producto($linea){
  56.         $this->array_id_prod[$linea]=0;
  57.     }
  58. }
  59. //inicio la sesión
  60. //si no esta creado el objeto carrito en la sesion, lo creo
  61. if (!isset($_SESSION["ocarrito"])){
  62.     $_SESSION["ocarrito"] = new carrito();
  63. }
  64. ?>