> Manuales > Carrito de la compra en PHP

Función para mostrar los productos almacenados en el carrito de la compra, en PHP.

La última función de las que vamos a ver aquí sirve para mostrar todos los productos del carrito. Tiene que hacer un simple bucle que recorra los arrays de productos, que se han ido rellenando al meter productos en el carrito. Debe mostrar los datos de cada producto según se recorre con el bucle. Además, debe proporcionar el importe total de la compra y un enlace para quitar cualquier producto del carrito.

function imprime_carrito(){
    $suma = 0;
    echo '<table border=1 cellpadding="3">
    <tr>
    <td><b>Nombre producto</b></td>
    <td><b>Precio</b></td>
    <td> </td>
    </tr>';
    for ($i=0;$i<$this->num_productos;$i++){
       if($this->array_id_prod[$i]!=0){
          echo '<tr>';
          echo "<td>" . $this->array_nombre_prod[$i] . "</td>";
          echo "<td>" . $this->array_precio_prod[$i] . "</td>";
          echo "<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
          echo '</tr>';
          $suma += $this->array_precio_prod[$i];
       }
    }
    //muestro el total
    echo "<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td> </td></tr>";
    //total más IVA
    echo "<tr><td><b>IVA (16%):</b></td><td> <b>" . $suma * 1.16 . "</b></td><td> </td></tr>";
    echo "</table>";
}


La función declara primero la variable suma donde se guardará la suma de importes de los productos.

Se muestran todos los productos con un bucle que recorre las líneas del carrito, desde la primera hasta el número de productos. En cada línea del carrito se muestran sus datos, teniendo cuidado porque si el identificador del producto era cero quería decir que ese producto había sido borrado del carrito. Además, acumulamos en la variable suma el importe de todos los productos del carrito que no han sido borrados previamente.

Todavía dentro del bucle que recorre los productos del carrito, colocamos un enlace para que el visitante pueda eliminar un producto. Hay que darse cuenta que el enlace para borrar un producto indica como parámetro la línea del carrito que se debe borrar, que era lo que nosotros necesitábamos en la función creada para borrar los productos.

Ya fuera del bucle, imprimimos el importe total con la suma de los importes de los productos que hemos ido acumulando durante el bucle.

Código completo de la clase

Veamos a continuación cómo quedaría la clase carrito completa, para que no se nos pase ningún detalle.

class carrito {
    //atributos de la clase
    var $num_productos;
    var $array_id_prod;
    var $array_nombre_prod;
    var $array_precio_prod;

    //constructor. Realiza las tareas de inicializar los objetos cuando se instancian
    //inicializa el numero de productos a 0
    function carrito () {
       $this->num_productos=0;
    }

    //Introduce un producto en el carrito. Recibe los datos del producto
    //Se encarga de introducir los datos en los arrays del objeto carrito
    //luego aumenta en 1 el numero de productos
    function introduce_producto($id_prod,$nombre_prod,$precio_prod){
       $this->array_id_prod[$this->num_productos]=$id_prod;
       $this->array_nombre_prod[$this->num_productos]=$nombre_prod;
       $this->array_precio_prod[$this->num_productos]=$precio_prod;
       $this->num_productos++;
    }

    //Muestra el contenido del carrito de la compra
    //ademas pone los enlaces para eliminar un producto del carrito
    function imprime_carrito(){
       $suma = 0;
       echo '<table border=1 cellpadding="3">
       <tr>
       <td><b>Nombre producto</b></td>
       <td><b>Precio</b></td>
       <td> </td>
       </tr>';
       for ($i=0;$i<$this->num_productos;$i++){
          if($this->array_id_prod[$i]!=0){
             echo '<tr>';
             echo "<td>" . $this->array_nombre_prod[$i] . "</td>";
             echo "<td>" . $this->array_precio_prod[$i] . "</td>";
             echo "<td><a href='eliminar_producto.php?linea=$i'>Eliminar producto</td>";
             echo '</tr>';
             $suma += $this->array_precio_prod[$i];
          }
       }
       //muestro el total
       echo "<tr><td><b>TOTAL:</b></td><td> <b>$suma</b></td><td> </td></tr>";
       //total más IVA
       echo "<tr><td><b>IVA (16%):</b></td><td> <b>" . $suma * 1.16 . "</b></td><td> </td></tr>";
       echo "</table>";
    }

    //elimina un producto del carrito. recibe la linea del carrito que debe eliminar
    //no lo elimina realmente, simplemente pone a cero el id, para saber que esta en estado retirado
    function elimina_producto($linea){
       $this->array_id_prod[$linea]=0;
    }
}

Miguel Angel Alvarez

Miguel es fundador de DesarrolloWeb.com y la plataforma de formación online Escu...

Manual