Añadido el 07/01/2007
Continuamos con esta pequeña guía para manejar sesiones. En el capítulo anterior vimos como manejar de forma genérica las sesiones con PHP, ahora nos proponemos realizar un pequeño y simple script para gestionar un carro de compra con PHP.
Utilizaremos tres parámetros por producto:
- ID.
- Nombre del producto.
- Precio del producto.
La estructura que vamos a utilizar es bien sencilla, por la que podrás añadir otros parámetros como: cantidad, descripcion,...
Empezaremos con el código para añadir productos:
<?
$itemsEnCesta<$item> = array(
"titulo" => $title,
"precio" => $price,
);
$_SESSION<"itemsEnCesta"> = $itemsEnCesta;
?>
Lo que hace el codigo es recoger los parametros $item, $title y $price que enviamos desde el formulario, y los guardamos en la sesión.
El código para borrar un producto sería:
<?
foreach($_SESSION["itemsEnCesta"] as $buscar => $k){
if ($item == $buscar){
$_SESSION["itemsEnCesta"][$item] = NULL;
}
}
?>
Lo que hemos hecho es poner en NULL (vacio), el contenido de la sesión correspondiente a nuestro ID ($item). Al hacer esto, lo que conseguimos es que al mostrar el carro, le diremos que muestre solo aquellos cuyo contenido sea != NULL.
También debemos tener una opción para finalizar sesión y reinicializar el carro de la compra:
<?
session_destroy();
header("Location:index.php");
?>
Destruimos la sesión, y refrescamos la página.
Ahora lo que tenemos que hacer es crear un archivo que se llame por ejemplo: pasarela.php, en el que uniremos todo el codigo:
<?
session_start();
if($modo == "nuevo"){
$itemsEnCesta[$item] = array(
"titulo" => $title,
"precio" => $price,
);
$_SESSION["itemsEnCesta"] = $itemsEnCesta;
header("Location:cesta.php");
// Borramos producto
}elseif($modo == "borrar"){
foreach($_SESSION["itemsEnCesta"] as $buscar => $k){
if ($item == $buscar){
$_SESSION["itemsEnCesta"][$item] = NULL;
}
}
header("Location:cesta.php");
}elseif($modo == "off"){
session_destroy();
header("Location:cesta.php");
}
?>
El funcionamiento del archivo sería:
- Para añadir un producto:
pasarela.php?item=29&title=ordenador dell 203&price=300&modo=nuevo
- Para borrar un producto:
pasarela.php?item=29&modo=borrar
- Para vaciar la cesta:
pasarela.php?modo=off
Ahora nos quedaría el codigo para mostrar el contenido de la cesta:
<?
function ConstructorCesta($session){
if($session > 0){
foreach($session as $resultado){
print "<div>".$resultado[title]." -> Precio: ".$resultado[price]." -> ID: ".$resultado[item]."</div>";
}
}else{
print "Su cesta esta vacia";
}
}
?>
El funcionamiento de la función ConstructorCesta es bien sencillo, y tendrás que adaptarlo al diseño de tu web, pero la filosofía básica es esta.
Como ves, lo primero que hacemos es comprobar si la sesión existe, y por tanto si hay elementos en la cesta, si no, lo que hacemos es indicar que esta vacia.
Esperamos que este articulo os sirva de algo para vuestros desarrollos en PHP, por lo menos esa es nuestra intención.
Un saludo.