Foros del Web » Programando para Internet » PHP »

carrito webestilo ¿ampliarlo?

Estas en el tema de carrito webestilo ¿ampliarlo? en el foro de PHP en Foros del Web. estoy haciendo pruebas con el carrito de webestilo, y me funciona perfectamente y me preguntaba como podria hacer para añadir 2 campos por producto mas, ...
  #1 (permalink)  
Antiguo 15/12/2004, 03:51
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
carrito webestilo ¿ampliarlo?

estoy haciendo pruebas con el carrito de webestilo, y me funciona perfectamente y me preguntaba como podria hacer para añadir 2 campos por producto mas, (color y tamaño).

aparte de la cantidad que el usuario pueda elegir color y tamaño.

la info vendria de dos jump menu con las opciones. p, ejemplo asi:

jump - color (rojo-verde-amarillo)
jump - tamano (p - m - g)

he estado haciendo pruevas pero mi nivel de php todavia no es suficiente para entenderlo, si alguien me puede ayudar a hacerlo?????
¿alguna sugerencia?


Código PHP:
<?php // Manual de PHP de WebEstilo.com
session_start();
session_register('itemsEnCesta');
$item=$_POST['item'];
$cantidad=$_POST['cantidad'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if (
$item){
   if (!isset(
$itemsEnCesta)){
      
$itemsEnCesta[$item]=$cantidad;
   }else{
      foreach(
$itemsEnCesta as $k => $v){
         if (
$item==$k){
         
$itemsEnCesta[$k]+=$cantidad;
         
$encontrado=1;
         }
      }
      if (!
$encontrado$itemsEnCesta[$item]=$cantidad;
   }
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>



muchas gracias.
  #2 (permalink)  
Antiguo 16/12/2004, 05:10
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
¿¿¿¿a nadie se le ocurre nada????


ni una pista, por donde atacar! soy un poco nuevo en esto asi que cualquier pista seria de gran ayuda.

please ayuda!!!!!
  #3 (permalink)  
Antiguo 16/12/2004, 05:45
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 7 meses
Puntos: 102
es todo el código??? falta el html no?... y.. perdona mi ignorancia; ¿a qué te refieres con "jump"?? evidentemente no soy maestro...
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 16/12/2004, 05:53
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
si falta el html. pero da igual no????


tengo un form que le envia los datos a este codigo

y los envia bien. pero lo que quiero saber es como añado al carrito y que se queden memorizados dichos datos en la sesion.

jump= <select name:color>
<option........bla bla bla>


gracias.
  #5 (permalink)  
Antiguo 16/12/2004, 06:15
 
Fecha de Ingreso: junio-2003
Ubicación: Santiago
Mensajes: 105
Antigüedad: 20 años, 9 meses
Puntos: 1
Cita:
Iniciado por alexei
si falta el html. pero da igual no????


tengo un form que le envia los datos a este codigo

y los envia bien. pero lo que quiero saber es como añado al carrito y que se queden memorizados dichos datos en la sesion.

jump= <select name:color>
<option........bla bla bla>


gracias.
Pero no te funciona este codigo?, es que me parece que deberia funcionar bien, a ver intentare explicarte algo.

Código PHP:
<?php // Manual de PHP de WebEstilo.com 
session_start(); //inicia la session
session_register('itemsEnCesta'); //esto me parece que no esta muy recomendado
$item=$_POST['item']; //aqui guarda las variables que recibes del form
$cantidad=$_POST['cantidad']; 
$itemsEnCesta=$_SESSION['itemsEnCesta']; //simple asignacion

if ($item){ //entra siempre que este seteada la var
   
if (!isset($itemsEnCesta)){ //si viene por 1ra vez (no hay array de session)
      
$itemsEnCesta[$item]=$cantidad//guarda la cantidad
   
}else{ //sino recorre el array de session hasta encontrar el prod y lo incrementa
      
foreach($itemsEnCesta as $k => $v){ 
         if (
$item==$k){ 
         
$itemsEnCesta[$k]+=$cantidad
         
$encontrado=1
         } 
      } 
      if (!
$encontrado$itemsEnCesta[$item]=$cantidadsi no se encontro el prodcrea un nuevo campo en el rray
   


$_SESSION['itemsEnCesta']=$itemsEnCesta;  //vuelve  a asignar al array de session para el proximo ingreso
?>
Eso seria.
Ahora lo de los jumps, tampoco entendi la idea...

Un saludo!
  #6 (permalink)  
Antiguo 16/12/2004, 06:23
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
si me funciona perfectamente

pero lo que yo quiero es que el usuario aparte de seleccionar la cantidad, tambien puedan seleccionar el color y el tamaño.

color y tamaño (estos datos vienen de un jump menu).


eso es lo que necesito!
  #7 (permalink)  
Antiguo 16/12/2004, 06:52
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Por lo que veo tu carrito es un array de valores. Tendrias que "transformarlo" en un array de registros (array de arrays). Mas o menos, tendrias en cada elemento del carrito un array de registros, para cada id_item tendras varios registros, uno para cada combinacion de talla-color distintos, cada uno de estos con una cantidad independiente (vas a tener 5 camisas L rojas y 6 camisas L azules, como elementos separados.

Con los arrays asociativos de PHP, puedes usar un array multidimensional de 3 dimensiones, por ejemplo $carrito[item][talla][color] almacenaria la cantidad de ese item, talla y color. Basicamente en tu codigo tendrias que cambiar $itemsEnCesta[$item] por $itemsEnCesta[$item][$talla][$color]. $talla y $color lo leerias via POST como haces con $item.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #8 (permalink)  
Antiguo 16/12/2004, 07:14
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
Código PHP:
<?php 
//print_r($_POST);
include ("productos/login.php");
include (
"productos/conectar.php");
session_start();
session_register('itemsEnCesta');
$id=$_GET['id'];
unset (
$_SESSION['itemsEnCesta'][$id]);
$item=$_POST['item'];
$cantidad=$_POST['cantidad'];
$tamano=$_POST['tamano'];
$color=$_POST['color'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if (
$item){
   if (!isset(
$itemsEnCesta)){
      
$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }else{
      foreach(
$itemsEnCesta as $k => $v){
         if (
$item==$k){
         
$itemsEnCesta[$k]=$cantidad;
         
$encontrado=1;
         }
      }
      if (!
$encontrado$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }
}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>

hola he añadido lo que me has dicho, o he entendido que has dicho. pero no me cosserva los datos cuando salgo del carrito y vuelvo a entrar.

igual tengo un error al imprimir los datos los pongo por si acas:


Código PHP:
<? 
foreach($itemsEnCesta as $k => $v){ 
$cantidad "" .$v"";
?>

<? echo "".$k.""?> 
<? echo $color;?>
<? 
echo $tamano;?>
<? 
echo $cantidad?>
  #9 (permalink)  
Antiguo 16/12/2004, 07:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Primero, se te ha olvidado el itemsencesta del for.

Segundo, haz un var_dump() de itemsencesta para entender el array que tienes ahora. Haz tambien un var_dump() de los $v que obtienes con el foreach (el de impresion).

Debes entender en que se ha transformado el array.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 16/12/2004, 07:41
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
como bien dices tengo que entender lo que tengo entre manos, y creo que no lo entiendo, mejor dicho se que no lo entiendo....

Código PHP:
<?php 
//print_r($_POST);
include ("productos/login.php");
include (
"productos/conectar.php");
session_start();
session_register('itemsEnCesta');
$id=$_GET['id'];
unset (
$_SESSION['itemsEnCesta'][$id]);
$item=$_POST['item'];
$cantidad=$_POST['cantidad'];
$tamano=$_POST['tamano'];
$color=$_POST['color'];
$itemsEnCesta=$_SESSION['itemsEnCesta'];

if (
$item){
   if (!isset(
$itemsEnCesta)){
      
$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }else{
      foreach(
$itemsEnCesta as $k => $v){
         if (
$item==$k){
         
$itemsEnCesta[$k][$tamano][$color]=$cantidad;
         
$encontrado=1;
         }}
      if (!
$encontrado$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?>

he hecho el var dump() y me ha liado mas este hecho......


Código PHP:
<? 
//var_dump($itemsEnCesta);
foreach($itemsEnCesta as $k => $v){ 
$cantidad "" .$v"";
?>
alguna pistita mas, gracias.
  #11 (permalink)  
Antiguo 17/12/2004, 03:56
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
hola:

he estado comiendo el tarro desde ayer y nada, no lo consigo sacar, no se lo suficiente. he probado de muchas maneras pero nada, siempre falla por algun lado.


ne cesssssssiiiiiiito ayuda!!!!!, gracias.
  #12 (permalink)  
Antiguo 17/12/2004, 05:03
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
El var_dump() te muestra la estructura del array. Lo mejor en estos casos es empezar desde 0 e ir viendo como se va creando.

En un script nuevo pon:
Código PHP:
<?php
$lista
=array(); // inicializa el array
echo '<pre>';
var_dump($lista); // mostramos el estado actual de la lista
echo '</pre>';
// ahora metemos un item en la lista
$lista['item1']['grande']['azul']=4// 4 item1 de tamaño grande azul
echo '<pre>';
var_dump($lista); // mostramos el estado actual de la lista
echo '</pre>';
// ahora metemos de otro color
$lista['item1']['grande']['verde']=7// 7 item1 de tamaño grande verde
echo '<pre>';
var_dump($lista); // mostramos el estado actual de la lista
echo '</pre>';
// ahora metemos de otro item2
$lista['item2']['L']['gris marengo']=1// 1 item2 de tamaño L gris marengo
?>
Asi puedes ir viendo como crece el array.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 17/12/2004, 05:39
 
Fecha de Ingreso: marzo-2003
Mensajes: 34
Antigüedad: 21 años
Puntos: 0
esto va a peor o no se llevarlo a mejor puerto que este:


Código PHP:
if ($item){
   if (!isset(
$itemsEnCesta)){
       
$itemsEnCesta=array();
        
$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }else{
      foreach(
$itemsEnCesta as $k => $v){
       if (
$item==$k){
           
$itemsEnCesta=array();
         
$itemsEnCesta[$k][$tamano][$color]=$cantidad;
         
$encontrado=1;
         }}
      if (!
$encontrado
      
$itemsEnCesta=array();
       
$itemsEnCesta[$item][$tamano][$color]=$cantidad;
   }}
$_SESSION['itemsEnCesta']=$itemsEnCesta;
?> 

todo sigue igual, con lo del var_dump() alcanzo a ver el resultado del array

es este:
----------------------------
array(1) {
[510963]=>
array(1) {
[grande]=>
array(1) {
["Verde"]=>
string(5) "Array"
}
}
}----------------------------------

el proble es que en cantidad ahora me da como resultado "array" ?????? (mi no comprende.

y cada vez que añado otro objeto me lo substituye.


gracias por todas las molestias que te estas tomando.
algo multidimensional (me sobrepasa).

no se que hago mal, empiezo a entender, pero es muy abstracto entabia.


¡¡¡¡¡mil gracias!!!!!
(mi no comprende.)
  #14 (permalink)  
Antiguo 17/12/2004, 06:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Cita:
el proble es que en cantidad
Veamos, porque en tu codigo solo lees el contenido de $itemsencesta[$item].Y eso ahora es un array cuyos elementos son los tamaños, que a su vez son arrays cuyos elementos son los colores y la cantidad.

Un array tridimensional es un espacio tridimensional. En el espacio tridimensional cada punto lo tienes que identificar con 3 coordenadas (x, y, z), En tu caso, x=item, y=tamaño y z=color. ¿Que hace foreach de $itemsencesta? Va cogiendo el contenido de $itemencesta[$i], que es el array array(1) {
[grande]=>
array(1) {
["Verde"]=>
string(5) "Array"
}
} , en el simil del espacio seria coger el conjunto de puntos que estan en el plano x=$i. Ahora tendrias que recorrer ese array, para cada tamaño. Asi obtienes el array de tamaños de ese item (la linea de x=$i e y=$t). Y finalmente tienes las cantidades para cada color de ese tamaño de ese item.

El foreach seria algo como:
Código PHP:
foreach($itemsEnCesta as $k => $v){
  foreach (
$v as $tamano => $c) {
    foreach (
$c as $color => $cantidad) {
      echo 
$k.' '.$tamano.' '.$color.' Cantidad= '.$cantidad.'<br>';
    }
  }

Es decir, ahora tienes cantidades para la tripleta (item,tamaño,color), no para item solo.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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 04:05.