Hola a todos:
Estoy teniendo problemas con una variable $_SESSION que parece que nunca llega a tomar valores, y no sé cual puede ser el error.
A ver si me podéis ayudar pq llevo desde ayer a mediodía con esto y no le veo la solución.
En una página php tengo este form:
Código PHP:
<form id="formProducto" name="formProducto" method="post" action="carrito.php">
<input type="hidden" name="idProducto" id="idProducto" value="<?php echo $idProducto;/*<?php echo $talla; ?>*/ ?>" />
<input type="hidden" name="talla" id="talla" value="" />
<input type="image" name="enviar" id="enviar" width="119" height="107" src="estilos/imagenes/carrito.png" />
</form>
Que le manda dos datos al carrito: talla e idProducto.
En la página del carrito se reciben así:
Código PHP:
<?php
if (isset($_POST['$idProducto']))
{
$idProducto = $_POST['$idProducto'];
$talla = "";
if (isset($_POST['$talla']))
{
$talla = mysql_real_escape_string($_POST['$talla']);
}
if (!isset($_SESSION["datosCarrito"]) || count($_SESSION["datosCarrito"]) < 1)
{
//meto todos los datos del carrito en una variable
$_SESSION["datosCarrito"] = array (0 => array("id_producto" => $idProducto, "talla_producto" => $talla, "numero_productos" => 1));
}
else
{
$cont = 0;
$encontrado = false; //bandera para saber si se modifica el array
//recorro los datos del array:
foreach($_SESSION["datosCarrito"] as $entrada)
{
$cont++;
//key es el indice y valor el id de producto
while(list($key, $valor) = each($entrada))
{
if ($key == "id_producto" && $valor == $idProducto) //este producto ya está en el carrito, por lo que le sumo 1 a la cantidad de productos
{
$encontrado = true;
array_splice($_SESSION["datosCarrito"], $cont-1, 1, array(array("id_producto" => $idProducto, "talla_producto" => $talla, $entrada['numero_productos'] + 1)));
}
}
}
if ($encontrado == false) //si no lo ha encontrado en el array, esq es un nuevo producto, y lo añado al array
{
array_push($_SESSION["datosCarrito"], array("id_producto" => $idProducto, "talla_producto" => $talla, "numero_productos" => 1));
}
}
header("location: carrito.php");
exit();
}
?>
Y después se añaden los datos aquí a la variable "carritoPintado" para mostrarlos en la web:
Código PHP:
<?php
//Pintar el carrito
$carritoPintado = "";
if (!isset($_SESSION["datosCarrito"]) || count($_SESSION["datosCarrito"]) < 1)
{
$carritoPintado = "No hay productos añadidos al carrito. Aún. <br />";
}
else
{
$cont = 0;
foreach($_SESSION["datosCarrito"] as $entrada)
{
$cont++;
$carritoPintado .= "$cont";
while (list($key, $valor) = each($entrada))
{
$carritoPintado .= "$key: $valor <br />";
}
}
}
?>
Pero siempre me muestra la frase: "No hay productos añadidos al carrito. Aún.", osea que al llegar al tercer trozo de código la variable datosCarrito nunca está definida, y no veo que haya nada mal. Y voy a la página del carrito añadiendo el producto, debería funcionar, pero no funciona.
Ayuda por favor, ya no sé que hacer.
Muchas gracias ya por adelantado a cualquiera que me de una pista.