Foros del Web » Programando para Internet » PHP »

otra de carrito

Estas en el tema de otra de carrito en el foro de PHP en Foros del Web. hola queria ver si me podias resolver este dilema. Código PHP: <? session_name ( "carrito" ); session_start (); if(!isset( $arts )){ $_SESSION [ 'arts' ]= ...
  #1 (permalink)  
Antiguo 12/04/2005, 14:35
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 14 años, 7 meses
Puntos: 0
otra de carrito

hola queria ver si me podias resolver este dilema.

Código PHP:
<?

session_name
("carrito");
session_start();
if(!isset(
$arts)){
$_SESSION['arts']=0;
}

if(
$sum==1){
$_SESSION['arts']=$_SESSION['arts']+1;
for(
$i=0$i <= $_SESSION['arts']; $i++ ){
$_SESSION['producto['.$_SESSION['arts'].'["id"]]']=$pid;
}


}

?>
ese es el codigo que utilizo para saber cuantos articulos se han ido agregando y que id de producto corresponde a cada articulo agregado.

Código PHP:
<? 
for($i=1$i <= $_SESSION['arts']; $i++ ){ 
echo 
$_SESSION['producto['.$i.'["id"]]']."<br>";


?>
con este otro lo muestro a los id de productos agregados, el tema es que quiero que en vez de asi:
10
9
9
8
10
me aparezca asi
id=10 cantidad=2
id=9 cantidad=2
id=8 cantidad=1

me gustaria que se haga cuando se agrega aunque tambien me sirve si los agrupo a las hora de mostralos.

asi hago el link de los productos:
Código HTML:
<a href="<?=$PHP_SELF?>?pid=<?=$row["ID"]?>&sum=1" class="menu">agregar</a> 
espero me puedas ayudar hace rato que estoy con eso sin resolverlo.
__________________
-----------------
_
__|_|__
º(-_-)º
  #2 (permalink)  
Antiguo 12/04/2005, 19:03
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 14 años, 4 meses
Puntos: 7
Perdoname pero no pudeo percibir tu duda en concreto...
Chaop!
  #3 (permalink)  
Antiguo 13/04/2005, 05:10
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 14 años, 7 meses
Puntos: 0
que en vez de que me muestre los productos que se han agregado de esta manera:
10
9
9
10
8
7

me lo muestre o se guarde en la session (mejor aun) de esta otra manera

id producto/cantidad
10/2
9/2
8/1
7/1

¿se entiende?
__________________
-----------------
_
__|_|__
º(-_-)º
  #4 (permalink)  
Antiguo 13/04/2005, 09:30
 
Fecha de Ingreso: junio-2004
Mensajes: 157
Antigüedad: 13 años, 5 meses
Puntos: 1
a ver si entiendo
vos queres mostrar los productos incorporados con un formato
si es asi podes hacer esto

echo "<B> ID:&nbsp</B>" . $_SESSION['producto['.$i.'["id"]]'] . "<B> Articulo:&nbsp</B>" . $_SESSION['producto['.$i.'["descripcion"]]'] . "<br>";


saludos
  #5 (permalink)  
Antiguo 13/04/2005, 12:47
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 14 años, 7 meses
Puntos: 0
No Jadi NO, gracias por interesarte
__________________
-----------------
_
__|_|__
º(-_-)º
  #6 (permalink)  
Antiguo 13/04/2005, 17:35
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 14 años, 7 meses
Puntos: 0
alguien me ayuda?

Ya heee hecho mas de 4 preguntas sobre el tema y no logro terminar con esto.
el tema es un carrito de compras. los productos se van agregando mediante links los cuales se arman asi:
Código HTML:
<a href="<?=$PHP_SELF?>?pid=<?=$row["ID"]?>&sum=1" > agregar </a> 
quiero que se agreguen los productos y si el producto agregado ya esta en el carro, la cantidad del producto se valla incrementando

Código PHP:
session_name("carrito");
session_start();
if(!isset(
$arts)){
$_SESSION['arts']=count($_SESSION['id_p']);
$id_p=array();
$_SESSION['id_p']=$id_p;
}

if(
$sum==1){

foreach( 
$_SESSION['id_p'] as $i => $v ) {
if(
$_SESSION['id_p['.$i.']']==$pid){
$_SESSION['cant_p['.$i.']']++;
}else{
$a="nuevo";
}
}
if(
$a=="nuevo"){
$_SESSION['arts']=$_SESSION['arts']+1;

$_SESSION['id_p['.$_SESSION['arts'].']']=$pid;
$_SESSION['cant_p['.$_SESSION['arts'].']']=1;
}
}








foreach( 
$_SESSION['id_p'] as $i => $v ) {
echo 
"id: ".$_SESSION['id_p['.$i.']']." cant: ".$_SESSION['cant_p['.$i.']']."<br>";

que puede estar mal que no me agrega nada.
espero una respuesta inteligente please, mentes brillantes.
__________________
-----------------
_
__|_|__
º(-_-)º
  #7 (permalink)  
Antiguo 13/04/2005, 17:53
 
Fecha de Ingreso: julio-2003
Ubicación: Colombia
Mensajes: 591
Antigüedad: 14 años, 4 meses
Puntos: 7
una sugerencia es escribirlo de esta manera...

Código PHP:
<a href="<?php $PHP_SELF ?>?pid=<?=$row['ID']?>&sum=1" > agregar </a>

Chaop!
  #8 (permalink)  
Antiguo 13/04/2005, 17:58
 
Fecha de Ingreso: abril-2003
Ubicación: Córdoba
Mensajes: 160
Antigüedad: 14 años, 7 meses
Puntos: 0
luchope me estas cargando vos????? no es lo que necesito
__________________
-----------------
_
__|_|__
º(-_-)º
  #9 (permalink)  
Antiguo 13/04/2005, 21:38
 
Fecha de Ingreso: abril-2005
Ubicación: Montevideo, Uruguay
Mensajes: 102
Antigüedad: 12 años, 8 meses
Puntos: 0
La primer macana que tenés es que el enlace está mal armado. te falta hacerle el echo al $PHP_SELF y estás haciendo una macana al armar el query string. De todas formas, si querés que te ande con un PHP medio nuevo vas a tener que sacar el PHP_SELF del array $_SERVER. Así que primera nota, el enlace se haría así:

Código:
<a href="<?php echo $_SERVER['PHP_SELF']; ?>?pid=<? echo $row['ID']; ?>&sum=1" > agregar </a>
Eso el aperitivo, de lo que sigue, lo primero que te comento es que estás asumiendo en todo el código que register_globals está encendido, cosa que puede no ser. Es decir, estás asumiendo que las variables de la sesión se registran como globales, que las variables pasadas por GET se registran como globales, etc. Por más que funcione es una reverenda porquería y te puede causar problemas.

Lo que esperás de la sesión, usalo siempre del array $_SESSION, lo que esperás del query string usalo siempre del array $_GET, lo que esperás submitido de un formulario por POST, sacalo siempre del array $_POST, olvidate de las variables globales. Los arrays son más cómodos, seguros y semánticos.

La primera vez que se ve esa macana es en la línea

Código PHP:
if(!isset($arts)){ 
y luego en

Código PHP:
if($sum==1){ 
y creo que en ningún lugar más. Ahora no veo mucho porque me tomé una pizcola y estoy medio dormido.

Tenés otra macana recursiva en como pretendés manejar el array multidimensional que haces con $_SESSION. Todas las veces qeu hicistes algo de la onda:

Código PHP:
$_SESSION['id_p['.$i.']'
Deberías haber hecho:

Código PHP:
$_SESSION['id_p'][$i
pues id_p es un array almacenado en $_SESSION, lo otro que escribes no tiene significado, es un error de parseo.

Haz estas correcciones y va a ser otra cosa, si hay un fallo puede ser de lógica, pero la sintáxis va a andar bastante bien.

Cualquier cosa postea el código correjido.

Saludos
__________________
Mauricio Etcheverry

WebMaster de YoReparo.com
  #10 (permalink)  
Antiguo 14/04/2005, 08:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Si quieres ir sumando .. primero tendras que recorrer tu array para ver si corresponde sumar una unidad a lo que tenga de valor tal indice . .o bien corresponde crear el nuevo indice con su valor 1 prefijado...

Pero .. el problema de implementar eso en tu "modelo" de tu array que tienes con ese tremendo liooooooooooooooo! que te haces .. es complicado.

Revisa este mensaje .. ahí veras como trabajar un array multidimensional o bien N arrays de una dimesión pero bajo mismo indice para "asociar" datos y accederlos.
http://www.forosdelweb.com/f18/guardar-mostrar-datos-array-286681/

Un saludo,
  #11 (permalink)  
Antiguo 14/04/2005, 08:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
gdb7

Uní ambos temas que tienes dando vueltas en el foro sobre tu problema .. Intenta seguir el hilo de los mensajes .. sino sólo haces que confundir a las personas que pretenden ayudarte .. dandote respuestas a ti mismo que es probable que por otro lado te las diesen ya.

Un saludo,
  #12 (permalink)  
Antiguo 14/04/2005, 15:22
 
Fecha de Ingreso: junio-2004
Mensajes: 157
Antigüedad: 13 años, 5 meses
Puntos: 1
gdb7
recien ahora te entendi.
mira lo que tienes que hacer es editar la funcion que agrega un articulo al carrito y antes de agregar uno verificar si el que estas agrergando ya no esta en el array de los articulos

para ello tenes la funcion array_keys() la cual te devuelve los indices del array donde esta la cadena a buscar
ej:
$busqueda=array_keys($this->array_id_prod , $id_prod);

saludos
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 21:10.