Ver Mensaje Individual
  #1 (permalink)  
Antiguo 28/04/2013, 04:01
Drummer
 
Fecha de Ingreso: diciembre-2012
Ubicación: Madrid
Mensajes: 21
Antigüedad: 11 años, 11 meses
Puntos: 0
Problema con variable $_SESSION

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 (=> 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-11, 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.