Foros del Web » Programando para Internet » PHP »

Agregar un array a otro array

Estas en el tema de Agregar un array a otro array en el foro de PHP en Foros del Web. Hola gente! Estoy tratando de armar un carrito de compras y tengo un problema al agregar un producto al carrito (array). Abajo esta el pedazo ...
  #1 (permalink)  
Antiguo 31/10/2005, 09:56
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Agregar un array a otro array

Hola gente!

Estoy tratando de armar un carrito de compras y tengo un problema al agregar un producto al carrito (array). Abajo esta el pedazo de codigo que tendria que agregar un elemento al array.
Lo que quiero hacer es:

Código PHP:
<?php
session_register
('productos');
$elementos=count($productos);
$id=$_POST["id"];
$cantidad=$_POST["cantidad"];
if (
$elementos!=0)
    {
        
//Si el array ya tiene elementos, le agrego otro elemento
    
$productos_tmp = array("$id" => "$cantidad");
    
$productos array_merge($productos$productos_tmp);
    }
    else
    {
        
//Si es la primera vez creo el array
    
$productos=array("$id"=>"$cantidad");
    } 
?>
Luego al hacer un count, no me sale la cantidad que deberia tener realmente.
Hay algo mal ahi o hay otra forma de hacerlo?

Saludos
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #2 (permalink)  
Antiguo 31/10/2005, 11:10
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
mm Para lo que haces te vendría mejor usar:

array_push()
www.php.net/array_push

Un saludo,
  #3 (permalink)  
Antiguo 31/10/2005, 11:24
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Ya lo he probado pero no me sirvio :(

Asi:
array_push($productos, $id => $cantidad);

en vez de:

$productos_tmp = array("$id" => "$cantidad");
$productos = array_merge($productos, $productos_tmp);
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #4 (permalink)  
Antiguo 31/10/2005, 11:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Por otro lado .. estás seguro de trabajar bien con ese array que llega desde tu sesión? .. El uso de session_register() está en deshuso y no es nada recomendable seguir usandolo por compatibilidad.

Revisa este mensaje:
http://www.forosdelweb.com/f18/guardar-mostrar-datos-array-286681/

Un saludo,
  #5 (permalink)  
Antiguo 01/11/2005, 08:29
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Este es el codigo que uso con array_push() y no me funciona:

Código PHP:
<?php
session_register
('productos');
$elementos=count($productos);
$id=$_POST["id"];
$cantidad=$_POST["cantidad"];
if (
$elementos!=0)
    {
        
//Si el array ya tiene elementos, le agrego otro elemento
    
$productos_tmp = array("$id" => "$cantidad");
    
array_push($productos$productos_tmp);
    }
    else
    {
        
//Si es la primera vez creo el array
    
$productos=array("$id"=>"$cantidad");
    }
?>
Al leerlo con (foreach ($productos as $producto_id=>$cantidad)) solo me lee el primer valor del array.
Si le saco el session_register('productos'); y pongo $productos=$_SESSION['productos']; no me pasa la variable

No se que mas hacer, ya probe de todo y no me funciona
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #6 (permalink)  
Antiguo 02/11/2005, 06:11
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Y no probastes el código que te indiqué (el del mensaje que dejo el link) .. Creo que está mucho más completo de lo que pretendes hacer y lo mejor es que ya lo tienes hecho!.

Para solventar tus problemas .. primero hay que ver el uso de sesiones, usar los arrays superglobales con ejemplos simples .. (en las FAQ's tienes ayuda al respecto) .. de ahí hacer ejemplos de controlar un array simple con las funciones de arrays (www.php.net/array) .. ver el uso de arrays asociativos (el link que te dejé ahí tienes un ejemplo de uso aplicado a un carrito de compra) ..

Un saludo,
  #7 (permalink)  
Antiguo 02/11/2005, 07:31
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Hola Cluster,

Gracias por todo, pero al final cambie la forma que lo hice. Lo hice asi y me funciono :)

Código PHP:
session_start();
session_register('producto');
session_register('cantidad_prod');
$elementos=count($producto);
$id=$_POST["prod"];
$cant=$_POST["cant"];

$elementos++;
//Hago este while para que agregue el nuevo indice en algun lugar vacio o uno nuevo al final
while($producto["$elementos"]!=""
    {
    
$elementos++;
    }
$producto["$elementos"]=$id;
$cantidad_prod["$elementos"]=$cant
Gracias por todo, sos un capo!
Un abrazo
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #8 (permalink)  
Antiguo 02/11/2005, 07:50
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Ok, .. pero te insisto que deberías $_SESSION para gestionar tus sesiones, el uso que haces con session_register() NO te va a funcionar en muchos servidores (por ya no usar register_globals a ON .. ) Mejor dá solución al problema ahora . no cuando subas tu código a un servicio de hosting o te cambies a otro ...

Un saludo,
  #9 (permalink)  
Antiguo 02/11/2005, 07:54
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
Ok, lo intentare porque como dije antes no me habia funcionado :( Entonces el codigo podria quedar asi?

Código PHP:
session_start();
$producto=$_SESSION['producto'];
$cantidad_prod=$_SESSION['cantidad_prod'];
$elementos=count($producto);
$id=$_POST["prod"];
$cant=$_POST["cant"];

$elementos++;
//Hago este while para que agregue el nuevo indice en algun lugar vacio o uno nuevo al final
while($producto["$elementos"]!="")
    {
    
$elementos++;
    }
$producto["$elementos"]=$id;
$cantidad_prod["$elementos"]=$cant
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #10 (permalink)  
Antiguo 02/11/2005, 08:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
$_SESSION es un array .. el cual vas ingresando tus variables y sus valores a lo largo de tu script .. cuando cambias de script (redireccionas a otro .. etc) ahí quedan registradas tus variables. NO es como cuando usas "session_register()" que le dices al principio o donde quieras en tu script "registra tal variable" y cuando le das valor ya queda registrada. Aquí .. con el uso del array $_SESSION .. se le dá valor cuando corresponda como si de cualquier otra variable se tratase ...

Código PHP:
session_start(); 
$producto=$_SESSION['producto']; 
$cantidad_prod=$_SESSION['cantidad_prod']; 
$elementos=count($producto); 
$id=$_POST["prod"]; 
$cant=$_POST["cant"]; 

$elementos++; 
//Hago este while para que agregue el nuevo indice en algun lugar vacio o uno nuevo al final 
while($producto["$elementos"]!=""
    { 
    
$elementos++; 
    } 
$producto["$elementos"]=$id
$cantidad_prod["$elementos"]=$cant

// y como te comenté .. si lo usas tal cual deberías volver hacer:
$_SESSION['producto'] = $producto;
$_SESSION['cantidad_prod'] = $cantidad_prod;

?> 
Pero .. para todo esto es más sencillo y claro hacer lo que propong en el dichoso link que te dejé sobre el mensaje que hago referencia:

Código PHP:
// aquí leemos nuestro carrito
session_start(); 
if (isset(
$_SESSION['mi_carrito'])){ 
   
$carrito=$_SESSION['mi_carrito']; 
} else { 
   
$carrito=array(); 

// trabajar con $carrito ...

//y al final (parece que se me quedó en el tintero en el ejemplo que dí aquella vez)
// registramos nuestra "variable" de sesión si es que alteramos sus valores (como es tu caso)
$_SESSION['mi_carrito']=$pedido;
// y redireccionar hacia donde corresponda: por un link .. o header("location ...") .. etc 
Un saludo,
  #11 (permalink)  
Antiguo 02/11/2005, 08:20
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años, 7 meses
Puntos: 0
OK, ya entendi :D La ultima y no jodo mas :P

Se puede usar?

Código PHP:
$_SESSION['producto'][$indice]=algo
para trabajarla directamente y no andar diciendole al script el valor que tiene al principio y al final.
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #12 (permalink)  
Antiguo 03/11/2005, 09:53
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Cita:
Iniciado por fermar21
OK, ya entendi :D La ultima y no jodo mas :P

Se puede usar?

Código PHP:
$_SESSION['producto'][$indice]=algo
para trabajarla directamente y no andar diciendole al script el valor que tiene al principio y al final.
Si, .. perfectamente.

Un saludo,
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 22:26.