Mostrar el carrito PHP

Valoración del artículo:
Función para mostrar los productos almacenados en el carrito de la compra, en PHP.
Publicado: 01/10/04
Atención: Contenido exclusivo de DesarrolloWeb.com. No reproducir. Copyright.
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;
    }
}

Comentarios
Fueron enviados 7 comentarios al artículo
5 comentarios no revisados
2 comentarios revisados:
Por: Bruno Savron
18/10/06
Donde se ingresa este código ??

if (!isset($_SESSION["ocarrito"])){
$_SESSION["ocarrito"] = new carrito();
}

No es en la librería ,después de la definición de clase,..??Donde precisamente ??

RESPUESTA

Obviamente, después de la definición de la clase, porque si no no te funcionará.
Como también utiliza sesiones, tendrás también que iniciar la sesión antes de poder ejecutar ese código.
Ahora bien, el codigo luego lo podrás poner donde lo necesites, siempre que sea antes de trabajar con el carrito y después de haber incluido el código de la clase y haber iniciado la sesión.

josanci...
con los datos del ejemplo deberia funcionar?
25/9/09
hola a todos,
he descargado los scripts con el codigo integro
si doy por ejemplo al ejemplo de silla modelo jupiter 80 euros, despues doy a ver carrito y no sale nada

¿no deberian salir los datos de la silla modelo jupiter 80 euros?
gracias y que vaya bien

Manuales relacionados
Categorias relacionadas
El autor
Lectura recomendada
Compra este libro en Agapea, la librería urgente a domicilio.
Últimas noticias
Alojados en el grupo