Foros del Web » Programando para Internet » PHP »

Mi carrito de la compra es muy raro...

Estas en el tema de Mi carrito de la compra es muy raro... en el foro de PHP en Foros del Web. Saludos a todos, espero que podais ayudarme. Simplemente quiero guardar en una matriz varios elementos para un carrito, pero solo me guarda el ultimo que ...
  #1 (permalink)  
Antiguo 20/07/2007, 02:29
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Mi carrito de la compra es muy raro...

Saludos a todos, espero que podais ayudarme.

Simplemente quiero guardar en una matriz varios elementos para un carrito, pero solo me guarda el ultimo que meto en el formulario... ¿por que? creo que es por que no le pongo indice a la matriz, pero de esta manera tengo Nombre de campo=> valor y me va mejor, pero si le pongo indice no se como recorrerlo (de tipo items[referencia][color]=rojo) ahi va el codigo:

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["itemsencesta"]))
{
    
session_register('itemsencesta');
    
$_SESSION["itemsencesta"];
    
$itemsencesta=$_SESSION['itemsencesta'];
}
$item=$_POST['item'];
$talla=$_POST['talla'];
$color=$_POST['color'];
if (
$item)
    {
            
$itemsencesta = array(
            
referencia=>$item,
            
color=>$color,
            
talla=>$talla,
            
cantidad=>1
            
);
            
$_SESSION["itemsencesta"]=$itemsencesta;
    }
    else
    {

    }


?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Referencia: <input type="text" name="item" size="20"><br>
Talla: <input type="text" name="talla" size="20"><br>
Color: <input type="text" name="color" size="20"><br>
<input type="submit" value="Añadir al Carrito"><br>
</form>
<?
    
echo'El contenido del carrito es:<br>';
    foreach(
$itemsencesta as $ku=>$v)
    {
        echo 
"Items[" $ku "] = " $v "<br>";
    }

?>
</body>
</html>
Gracias a todos. Un saludo.
  #2 (permalink)  
Antiguo 20/07/2007, 03:58
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Mi carrito de la compra es muy raro...

Prueba así:
Código PHP:
$_SESSION["itemsencesta"][] = $itemsencesta
  #3 (permalink)  
Antiguo 20/07/2007, 04:19
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

Pues no, asi no va. Solo me sigue mostrando el ultimo que he metido. En teoría debería ir asi no? Por que problema del foreach para mostrar los elementos no será no?

Otra cosa que probé era algo así:

Código PHP:
if ($item)
{
$itemsencesta[$item] = $color;
);
$_SESSION["itemsencesta"]=$itemsencesta;

era algo sencillo pero si le metia mas atributos (talla, cantidad) nada de nada, pero asi si que me mostraba todo bien. (con el
Código PHP:
foreach $itemsencesta as $k=>$v 
)

Gracias
  #4 (permalink)  
Antiguo 20/07/2007, 04:31
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Mi carrito de la compra es muy raro...

Lo que yo veo es que $_SESSION["itemsencesta"] es un arrays de arrays. (Para comprobar el contenido de esa variable utiliza print_r)
El foreach yo lo pondría así:
Código PHP:
    foreach($itemsencesta as $ku=>$v)
    {
        echo 
"Items[" $ku "] = ";

        foreach( 
$v as $index => $value )
        {
                 echo = 
$value "<br>";
        }
    } 
  #5 (permalink)  
Antiguo 20/07/2007, 04:55
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

me estoy desesperando....me sigue mostrando el ultimo solo ...voy a intentar hacerlo de otra manera desde el principio pero...si puedo solucionar esto mejor.


gracias jerkan
  #6 (permalink)  
Antiguo 20/07/2007, 05:13
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

Cuando alimentes la cesta prueba esto:
Código PHP:
// anyadimos un elemento mas a itemsencesta
array_push($_SESSION["itemsencesta"],$itemsencesta); 
Otra forma de hacer lo mismo es:
Código PHP:
// anyadimos un elemento mas a itemsencesta
$_SESSION["numitemsencesta"]++;
$items $_SESSION["numitemsencesta"];
$_SESSION["itemsencesta"][$items] = $itemsencesta
Espero que sirva, saludos.
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #7 (permalink)  
Antiguo 20/07/2007, 05:43
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

este finde lo pruebo...a ver si hay suerte

gracias a todos de verdad!!

El Lunes os cuento

Un saludo
  #8 (permalink)  
Antiguo 20/07/2007, 09:15
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Re: Mi carrito de la compra es muy raro...

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["itemsencesta"]))
{
    
session_register('itemsencesta');
    
$_SESSION["itemsencesta"];
    
$itemencesta = array();
    
$itemsencesta=$_SESSION['itemsencesta'];
}
$item=$_POST['item'];
$talla=$_POST['talla'];
$color=$_POST['color'];
if (isset(
$item))
    {
            
$itemsencesta = array(
            
referencia=>$item,
            
color=>$color,
            
talla=>$talla,
            
cantidad=>1
            
);
            
$_SESSION["itemsencesta"][]=$itemsencesta;
    }
    else
    {

    }


?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."".$SID?>" method="post">
Referencia: <input type="text" name="item" size="20"><br>
Talla: <input type="text" name="talla" size="20"><br>
Color: <input type="text" name="color" size="20"><br>
<input type="submit" value="Añadir al Carrito"><br>
</form>
<?
    
echo'El contenido del carrito es:<br>';
   foreach(
$_SESSION["itemsencesta"] as $ku=>$v)
    {
        echo 
"Producto[" $ku "] = " $v "";
        echo 
"<pre>";
        foreach(
$v as $key=> $value)
            {
            echo 
"      Key[" $key "] = " $value "<br>";
            }
        echo 
"</pre>";
    }

?>
</body>
</html>
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #9 (permalink)  
Antiguo 24/07/2007, 03:25
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

Pues creo que he probado ya todo lo que me habeis sugerido, pero me sigue mostrando, o añadiendo, solo un elemento...en lugar del contador le puesto como indice la referencia del elemento para probar y nada. Además esto no me sirve ya que si meto dos camisetas iguales con distinta talla, por ej., no me sirve con lo que necesito el contador o el array_push. Aqui os dejo el codigo entero para que lo probeis si os parece. a ver si voy a tener un problema con las sesiones...

Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["itemsencesta"]))
{
    
session_register("itemsencesta");
    
$_SESSION["itemsencesta"];
    
$itemsencesta=array();
    
$itemsencesta=$_SESSION["itemsencesta"];
}
$item=$_POST['item'];
$talla=$_POST['talla'];
$color=$_POST['color'];
if (isset(
$item))
    {
            
$itemsencesta = array(
            
referencia=>$item,
            
color=>$color,
            
talla=>$talla,
            
cantidad=>1
            
);
            
$_SESSION["itemsencesta"][]=$itemsencesta;
            
array_push($_SESSION["itemsencesta"],$itemsencesta);
    }
    else
    {

    }


?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Referencia: <input type="text" name="item" size="20"><br>
Talla: <input type="text" name="talla" size="20"><br>
Color: <input type="text" name="color" size="20"><br>
<input type="submit" value="Añadir al Carrito"><br>
</form>
<?
    
echo'El contenido del carrito es:<br>';
    foreach(
$itemsencesta as $ku=>$v)
    {
        echo 
"Producto[" $ku "] = " $v "";
        echo 
"<pre>";
        foreach( 
$v as $key => $value )
        {
            echo 
"Key[" $key "] = " $value "<br>";
        }
        echo 
"</pre>";
    }
?>
</tt>
</body>
</html>
Un saludo a todos y muchísimas gracias
  #10 (permalink)  
Antiguo 24/07/2007, 03:34
Avatar de jerkan  
Fecha de Ingreso: septiembre-2005
Mensajes: 1.607
Antigüedad: 18 años, 7 meses
Puntos: 19
Re: Mi carrito de la compra es muy raro...

En en el anterior código tienes un buen cacao (maravillao). Creo que lo correcto es ponerlo así:
Código PHP:
session_start();
if (!isset(
$_SESSION["itemsencesta"]))
{
    
$_SESSION["itemsencesta"] = array();
}

if (isset(
$_POST['item']))
    {
$item=$_POST['item'];
$talla=$_POST['talla'];
$color=$_POST['color'];
            
$itemsencesta = array(
            
referencia=>$item,
            
color=>$color,
            
talla=>$talla,
            
cantidad=>1
            
);
            
array_push($_SESSION["itemsencesta"],$itemsencesta);
    }
    else
    {

    } 
De todas formas, al principio de este script página pon un print_r($_POST) y muéstralo aquí.
  #11 (permalink)  
Antiguo 24/07/2007, 03:55
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 384
Antigüedad: 19 años, 2 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

Cita:
Iniciado por albalate Ver Mensaje
Código PHP:
<?
session_start
();
if (!isset(
$_SESSION["itemsencesta"]))
{
    
session_register("itemsencesta");
    
$_SESSION["itemsencesta"];
    
$itemsencesta=array();
    
$itemsencesta=$_SESSION["itemsencesta"];
}
$item=$_POST['item'];
$talla=$_POST['talla'];
$color=$_POST['color'];
if (isset(
$item))
    {
            
$itemsencesta = array(
            
referencia=>$item,
            
color=>$color,
            
talla=>$talla,
            
cantidad=>1
            
);
            
$_SESSION["itemsencesta"][]=$itemsencesta;
            
array_push($_SESSION["itemsencesta"],$itemsencesta);
    }
    else
    {

    }


?>
<html>
<body>
<tt>
<form action="<?=$PHP_SELF."?".$SID?>" method="post">
Referencia: <input type="text" name="item" size="20"><br>
Talla: <input type="text" name="talla" size="20"><br>
Color: <input type="text" name="color" size="20"><br>
<input type="submit" value="Añadir al Carrito"><br>
</form>
<?
    
echo'El contenido del carrito es:<br>';
    foreach(
$itemsencesta as $ku=>$v)
    {
        echo 
"Producto[" $ku "] = " $v "";
        echo 
"<pre>";
        foreach( 
$v as $key => $value )
        {
            echo 
"Key[" $key "] = " $value "<br>";
        }
        echo 
"</pre>";
    }
?>
</tt>
</body>
</html>
Quita el
Código PHP:
$_SESSION["itemsencesta"][]=$itemsencesta
que es lo que esta machacando las cosas que guardas. Y arriba declara la $_SESSION["itemsencesta"] como array
Código PHP:
$_SESSION["itemsencesta"] = array(); 
__________________
m!ketrix
CINE25 - Red Social de Cine
byinspiroh
  #12 (permalink)  
Antiguo 24/07/2007, 04:37
 
Fecha de Ingreso: junio-2005
Mensajes: 9
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: Mi carrito de la compra es muy raro...

Albricias!!no se para que cambio los datos de la variable de sesión. al verla en pantalla me he dado cuenta que estaba llena de toda la basurilla que he estado probando y he puesto:

Código PHP:
foreach($_SESSION["itemsencesta"] as $ku=>$v)
    {
        echo 
"Producto[" $ku "] = " $v "";
        echo 
"<pre>";
        foreach( 
$v as $key => $value )
        {
            echo 
"Key[" $key "] = " $value "<br>";
        }
        echo 
"</pre>";
    } 
cojo los datos directamente de la variable de sesión y punto. de momento solucionado y em muestra todo como quería...espero no tener muchos más problemas.

mil gracias a todos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:30.