Foros del Web » Programando para Internet » PHP »

No se repita item en carro de compras

Estas en el tema de No se repita item en carro de compras en el foro de PHP en Foros del Web. Hola, estoy haciendo un carro de compras, todo perfecto, pero no puedo lograr que no se repitan los items (es decir si elijo 1 item ...
  #1 (permalink)  
Antiguo 03/12/2013, 10:31
 
Fecha de Ingreso: enero-2013
Mensajes: 32
Antigüedad: 11 años, 3 meses
Puntos: 0
No se repita item en carro de compras

Hola, estoy haciendo un carro de compras, todo perfecto, pero no puedo lograr que no se repitan los items (es decir si elijo 1 item que ya estaba en mi carro se le sume a la cantidad del que ya estaba en vez de aparecer de nuevo).

el carrito lo listo con un for y con las sessiones (es decir recorro la cantidad de sesiones que hay y voy poniendo cada item).

Saludos, gracias!!
  #2 (permalink)  
Antiguo 03/12/2013, 10:38
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No se repita item en carro de compras

Claro y como nosotros a parte de programadores somos adivinos, esperarás que adivinemos cual es el problema. Y tratando de usar mis poderes sobrenaturales me huelo a que es un problema de tu consulta de la base de datos. Así que postea tu código con la consulta que haces para mostrar el carrito.

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.
  #3 (permalink)  
Antiguo 03/12/2013, 11:55
 
Fecha de Ingreso: enero-2013
Mensajes: 32
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No se repita item en carro de compras

Es que tal vez no comprendiste bien. No se trata de base de datos, no listo nada de ahi yo. Lo manejo todo con sessiones.

Es decir, seria muy extenso si pongo el codigo aca, pero sintetizando, cuando alguien apreta click en el boton comprar se guardan los datos del producto en sessiones (Ejemplo $_SESSION["nombre_producto"][] = "nombre se mi producto"). Despues cuando el usuario desea ver su carrito de compras (click en ver carrito), lista las sessiones con un

Código PHP:
for($i=0;$i<count($_SESSION["nombre_producto"];$i++){
     echo 
$_SESSION["nombre_producto"][$i]."<br/>"

Digamos que sintetizando es eso que puse. Lo que yo necesito es que cuando liste, si hay 2 productos que son iguales, no escriba 2 veces su nombre si no que sume la cantidad al que ya estaba antes.

Compro 1 televisor.
Compro otro televisor luego y que no me aparezca.

Carrito:
1 televisor.
1 televisor.

Que aparezca:
2 televisor.

Slds y gracias!

pd: recien guardo en base de datos cuando se confirma el pedido (es decir cuando lo paga (por paypal), sino todo el dia estaria haciendo peticiones para usuarios que tal vez solo agregan productos a su carro y los borran pero que no compran realmente los productos).
  #4 (permalink)  
Antiguo 03/12/2013, 12:26
Avatar de fcarrizalest  
Fecha de Ingreso: diciembre-2013
Mensajes: 10
Antigüedad: 10 años, 5 meses
Puntos: 2
Respuesta: No se repita item en carro de compras

Hola tal como mencionas si estas haciendo esto:

Código PHP:
$_SESSION["television1"][]  = "television1";
$_SESSION["television1"][]  = "television1"
Pues obviamente se te van a repetir. yo pensaria en hacer

Código PHP:
 if(isset($_SESSION["television1"] )  ){
  
$_SESSION["television1"] ++;

}else{
  
$_SESSION["television1"] = 1;


O por que no manejas el id del producto y guardas información del producto.


Código PHP:
$_SESSION["idTelevision"]  = array( "cantidad" => "nombre"=>"Television" "otrainfo"=> "Info");

// y de igual forma con el if incrementas la cantidad. 

Saludos espero y te oriente o mínimo te ayude en algo.
  #5 (permalink)  
Antiguo 03/12/2013, 12:53
 
Fecha de Ingreso: enero-2013
Mensajes: 32
Antigüedad: 11 años, 3 meses
Puntos: 0
Respuesta: No se repita item en carro de compras

Si, pero eso no me sirve por que no es 1 solo producto...

Ahi vos estas haciendo que si:

$_SESSION["nombre_producto"] tiene algo, sume la cantidad y no siempre es asi. Puede tener algo y ser un producto diferente, ej.

puede pongo en el carrito primero 1 televisor, despues 1 equipo de musica.
  #6 (permalink)  
Antiguo 03/12/2013, 13:20
Avatar de jonni09lo
Colaborador
 
Fecha de Ingreso: septiembre-2011
Ubicación: Estigia
Mensajes: 1.471
Antigüedad: 12 años, 7 meses
Puntos: 397
Respuesta: No se repita item en carro de compras

Y donde esta el problema? si sabes que $_SESSION es un array no? si optas por la solución de @fcarrizalest que es la mas optima puedes hacer algo como esto (yo incluso utilizaría un indice para indicar que es del carro de compras):

Código PHP:
Ver original
  1. $_SESSION['cart'] = array();
  2.  
  3. if(isset($_SESSION['cart']["television"] )  ){
  4.   $_SESSION["television"]['cantidad']++;
  5. }else{
  6.   $_SESSION['cart']["television"] = array( "cantidad" => 1 , "nombre"=>"Television" , "otrainfo"=> "Info");
  7. }
  8.  
  9. foreach( $_SESSION['cart'] as $producto ){
  10.     echo "Nombre: {$producto['nombre']} cantidad: {$producto['cantidad']}<br>";
  11. }

Vuelvo y te pregunto que problema tienes de hacerlo así?

Saludos
__________________
Haz preguntas inteligentes-Como ser Hacker
No hacer preguntas por mensaje privado. No sólo no es inteligente sino que es egoísta.

Etiquetas: compras, item
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 23:31.