Ejemplo de carrito en PHP con cookies

La página, del ejemplo, debe llamarse test.php.

<?php
$aCarrito = array();
$sHTML = '';

//Obtenemos los productos anteriores
if(isset($_COOKIE['carrito'])) {
    $aCarrito = unserialize($_COOKIE['carrito']);
}

//Anyado un nuevo articulo al carrito
if(isset($_GET['nombre']) && isset($_GET['precio'])) {
    $iUltimaPos = count($aCarrito);
    $aCarrito[$iUltimaPos]['nombre'] = $_GET['nombre'];
    $aCarrito[$iUltimaPos]['precio'] = $_GET['precio'];
}

//Creamos la cookie (serializamos)
$iTemCad = time() + (60 * 60);
setcookie('carrito', serialize($aCarrito), $iTemCad);

//Imprimimos el contenido del array
foreach ($aCarrito as $key => $value) {
    $sHTML .= '-> ' . $value['nombre'] . ' ' . $value['precio'] . '<br>';
}

?>
<!DOCTYPE html>
<html lang="es-ES">
<head>
    <meta charset="UTF-8">
    <title>Ejemplo de carrito</title>
</head>
<body>
    <div>
        <?php echo $sHTML; ?>
    </div>
    <ul>
        <li><a href="test.php?nombre=zapato&precio=32">Zapato</a></li>
        <li><a href="test.php?nombre=vino&precio=10">Vino.</a></li>
        <li><a href="test.php?nombre=curso&precio=30">Curso online</a></li>
        <li><a href="test.php?nombre=reloj&precio=400">Reloj</a></li>
        <li><a href="test.php?nombre=gafas&precio=20">Gafas</a></li>
        <li><a href="test.php?nombre=ordenador&precio=500">Ordenador</a></li>
    </ul>
</body>
</html>

En esta versión he añadido un botón para vaciar carrito. Además, muestra el precio final.

<?php

$aCarrito = array();
$sHTML = '';
$fPrecioTotal = 0;

//Vaciamos el carrito
if(isset($_GET['vaciar'])) {
    unset($_COOKIE['carrito']);
}

//Obtenemos los productos anteriores
if(isset($_COOKIE['carrito'])) {
    $aCarrito = unserialize($_COOKIE['carrito']);
}

//Anyado un nuevo articulo al carrito
if(isset($_GET['nombre']) && isset($_GET['precio'])) {
    $iUltimaPos = count($aCarrito);
    $aCarrito[$iUltimaPos]['nombre'] = $_GET['nombre'];
    $aCarrito[$iUltimaPos]['precio'] = $_GET['precio'];
}

//Creamos la cookie (serializamos)
$iTemCad = time() + (60 * 60);
setcookie('carrito', serialize($aCarrito), $iTemCad);



//Imprimimos el contenido del array
foreach ($aCarrito as $key => $value) {
    $sHTML .= '-> ' . $value['nombre'] . ' ' . $value['precio'] . '<br>';
    $fPrecioTotal += $value['precio'];
}

//Imprimimos el precio total
$sHTML .= '<br>------------------<br>Precio total: ' . $fPrecioTotal;

?>
<!DOCTYPE html>
<html lang="es-ES">
<head>
    <meta charset="UTF-8">
    <title>Ejemplo de carrito</title>
</head>
<body>
    <div>
        <?php echo $sHTML; ?>
    </div>
    <ul>
        <li><a href="test.php?nombre=zapato&precio=32">Zapato</a></li>
        <li><a href="test.php?nombre=vino&precio=10">Vino.</a></li>
        <li><a href="test.php?nombre=curso&precio=30">Curso online</a></li>
        <li><a href="test.php?nombre=reloj&precio=400">Reloj</a></li>
        <li><a href="test.php?nombre=gafas&precio=20">Gafas</a></li>
        <li><a href="test.php?nombre=ordenador&precio=500">Ordenador</a></li>
        <li><a href="test.php?vaciar=1">vaciar carrito</a></li>
    </ul>
</body>
</html>

This work is under a Attribution-NonCommercial-NoDerivatives 4.0 International license.

Will you buy me a coffee?

You can use the terminal.

ssh customer@andros.dev -p 5555

Written by Andros Fenollosa

November 28, 2014

2 min of reading

You may also like