Mostrar preferencias guardadas en variable sesión

Tengo un problema que no logro resolver. Me explico: tengo un carrito de compra realizado con php/mysql para seleccionar productos, en este caso camisetas.
Cada comprador puede personalizar su camiseta con un nombre, con un color, etc.
Toda la personalización la hago a través de un formulario que rellena el comprador, y las preferencias elegidas las meto en variable de sesión. Luego muestro el producto elegido con la personalización cuando se muestra el contenido del carrito.
Todo me funciona bien cuando cada comprador elige un solo producto, porque si elige más de uno, al mostrar el contenido del carrito con todos los productos, y cada uno con su personalización, me muestra la personalización del último en todos, es como si la última personalización es la que queda.
Supongo que la cuestión es asociar cada personalización con el producto elegido, pero éso es lo que no logro.
Si alguien puede echarme una mano, se lo agradezco mucho. Estoy completamente atascado.
Pongo los trozos de código que creo necesario para la explicación:
En la página que guarda la personalización:
[php]
session_start();
if(isset($_SESSION['carro']))
$carro=$_SESSION['carro'];else $carro=false;
$carro[md5($id)]=array('identificador'=>md5($id),'personalizar'=>$personalizar);
$_SESSION['personalizar] = $_POST['personalizar'];
[/php]
<form id="personalizar_dibujo" class="form" accept-charset="UNKNOWN" enctype="application/x-www-form-urlencoded" method="post">En un formulario hay un input para personalizar:
<form action="" method="post" name="personalizar_dibujo" class="form" id="personalizar_dibujo">
<input name="personalizar" type="text" id="personalizar" size="50" />
<input type="submit" name="boton_personalizar" id="boton_personalizar" value="Personalizar" />
En la pagina que muestra los productos del carro:
[php]
session_start();
if(isset($_SESSION["carro"]))
$carro=$_SESSION["carro"];else $carro=false;
$personalizar=$_SESSION['personalizar'];
echo $personalizar;
[/php]
Guardar la personalización lo hace bien, pero a la hora de mostrarla es donde hay problemas.
Me muestra bien la personalización si solo hay una id, es decir, un producto.
Pero si hay varios productos me muestra en todos los productos la misma personalización, la que haya puesto para el último producto que haya metido en el carro.
Si alguien me puede ayudar a mostrar correctamente

1 respuesta

Respuesta
1
Lo que tienes que hacer es guardar los datos de personalización indexados PARA CADA PRODUCTO, por ejemplo:
$_SESSION["personalizacion"][$cod_producto] = array(
  "cod_producto" => $cod_producto,
  "dibujo" => $_POST['dibujo'],
  "color" => $_POST['color'],
  "observaciones" => $_POST['observaciones']
);
Ahora si sólo tienes un campo de texto para personalizar el producto, seria así:
$_SESSION["personalizacion"][$cod_producto] = array(
  "observaciones" => $_POST['observaciones']
);
Acceder a las observaciones de un producto dado:
$observaciones = $_SESSION["personalizacion"][$cod_producto][$observaciones]
O bien, acceder a las observaciones de todos los productos personalizados, por ejemplo:
$personalizaciones = $_SESSION["personalizacion"];
foreach($personalizaciones as $resultado) {
  $cod_producto = $resultado["cod_producto"];
  $observaciones = $resultado["observaciones"];
};

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas