Foros del Web » Programando para Internet » PHP »

Insertar en array

Estas en el tema de Insertar en array en el foro de PHP en Foros del Web. Hola. Tengo un problema al insertar valores en un array. El codigo que tengo es el siguiente: $compra=array($referencia=>$cantidad); donde $referencia y $cantidad las recojo de ...
  #1 (permalink)  
Antiguo 03/06/2004, 05:51
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
Insertar en array

Hola. Tengo un problema al insertar valores en un array. El codigo que tengo es el siguiente:

$compra=array($referencia=>$cantidad);

donde $referencia y $cantidad las recojo de un formulario.
Ej :$referencia = 1234 $cantidad=5

$micompra=array_merge($micompra,$compra);

Para añadir lo nuevo a lo que tenia anteriormente.

al visualizar el array total los valores que muestra son:
ref. cant.
0 --- 5
1 --- 2
....

Es decir, no inserta bien las referencias. Alguien podria ayudarme, estoy en un apuro!!
Gracias.
  #2 (permalink)  
Antiguo 03/06/2004, 07:30
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues eso ...

Con array_merge sería algo como esto:
Código PHP:
<?php 
$array1 
= array("color" => "red"24); 
$array2 = array("a""b""color" => "verde""shape" => "trapezoide"4); 
$result array_merge($array1$array2); 
print_r($result); 
?>
sin embargo no veo por ningún lado que elementos tiene el arreglo $micompra. LO que podrías hacer es meter los valores de $referencia en un arreglo y los de $cantidad en otro y entonces sería algo como esto:
Código PHP:
$cantidad = array($val_cantidad);
$referencia = array($val_referencia);
$micompra array_merge($referencia,$cantidad); 
Salu2
__________________
Ing. Reynier Pérez Mira
  #3 (permalink)  
Antiguo 03/06/2004, 11:25
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
Hola de nuevo!
Gracias por tu respuesta, es algo parecido, pero no exactamente lo que quiero.
De la forma que tu me has explicado inserto la referencia en una fila y la cantidad en otra. A mi me gustaria insertar en la misma fila la referencia (como índice) y la cantidad.

Sera algo parecido, pero no consigo rematarlo:
  #4 (permalink)  
Antiguo 03/06/2004, 11:36
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Explica mejor lo que quieres hacer a ver si entiendo y te puedo ayudar mejor
Salu2
__________________
Ing. Reynier Pérez Mira
  #5 (permalink)  
Antiguo 03/06/2004, 11:41
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Explica ...

Explica mejor lo que quieres hacer a ver si entiendo y te puedo ayudar mejor
Salu2
__________________
Ing. Reynier Pérez Mira
  #6 (permalink)  
Antiguo 03/06/2004, 11:50
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
Mensaje Explicacion.

Siento que no me entiendas, es un poco complicado explicarlo asi.
Vayamos por partes:
Lo que quiero hacer es como un carro de la compra.
En un array necesito insertar las referencias y las cantidades solicitadas de un producto. Asi pues, por cada vez q piden un producto añadiria la referencia y la cantidad en la misma fila o registro del array. en total el array con todos los productos que selecciones deberia quedar asi
referencias cantidades
12354 5
35241 2
68425 3

Sigamos.
Las variables $referencia y $cantidad las paso por un formulario a una pagina "agregar.php" donde las añado al array

en el codigo de agregar.php yo tengo puesto:

$carrito = array ($referencia => $cantidad); // la nueva compra
$compra = array_merge($compra,$carrito); // añado a lo que ya habia comprado

Como se entiende $compra es una variable de sesion, pero eso no viene al tema.
El error que tengo es que no inserta $ refencia. Al visulizar el array compra:
foreach ($compra as $indice => $seleccion)
echo $indice."---".$seleccion."<br>";

deberia obtener
251454 --- 2
541584 --- 3
587426 --- 1

pero obtengo
0 --- 2
1 --- 3
2 --- 1

Espero que ahora entiendas el problema. Si no es asi, dimelo y buscaremos otra solucion!
MUCHAS GRACIAS
  #7 (permalink)  
Antiguo 03/06/2004, 12:12
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
A ver vamos por parte

Lo que pasa es que sigo sin entender. A ver lo que quieres hacer es algo como un Nodo donde tengas en una parte del mismo la referencia y en la otra la cantidad de articulos de ese tipo de referencia. Primero pon el código haber porque me dices que $compra es una variable de sesion no podes hacer esa suma. Ponme el código haber que es lo que haces. Es decir,ponme como conformas esa variable de sesión.
Salu2
__________________
Ing. Reynier Pérez Mira
  #8 (permalink)  
Antiguo 03/06/2004, 12:33
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
codigo

Agradezco tu paciencia con mi duda!
vamos alla:

session_start();
$tmp_carrito = $_SESSION['carrito'];

$carrito = array ($referencia => $cantidad); // la nueva compra
$compra = array_merge($tmp_carrito,$carrito); // añado a lo que ya habia comprado

// recorro para visualizar el array

foreach ($compra as $indice => $seleccion)
echo $indice."---".$seleccion."<br>";

// añado a la session
$_SESSION['carrito']=$micarro;


UN SALUDO!
  #9 (permalink)  
Antiguo 03/06/2004, 13:13
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pues nada

Vamos por partes. Lo primero que haces es crear una variable llamada $tmp_carrito y le das por valor $_SESSION['carrito'], pero ahora que es lo que contiene $_SESSION['carrito'] ¿nada?. Seguimos añades la nueva compra colocandola en la variable $carrito y declarando esta como un arreglo. Luego tratas de agregar a lo que tenías la nueva compra. Pero me he dado cuenta de una cosa. He parseado el código con algunas modificaciones y me he dado cuenta que la variable $tmp_carrito está vacía es por eso que te devuelve 0. Fíjate en el código:
Código PHP:
<?
 session_start
();
 
$tmp_carrito $_SESSION['carrito'];  #Aquí la variable $tmp_carrito esta vacía. No se que tratas de hacer con esto
 
$referencia 0;
 
$cantidad 0;
 for(
$i=0$i<5$i++){
  
$referencia += 05;
  
$cantidad += 1;
  
$carrito = array ($referencia => $cantidad);
  
$compra array_merge($tmp_carrito,$carrito); # Cuando tratas de añadir la nueva compra como la variable $tmp_carrito
                                                # es 0 entonces no es un arreglo por eso no adiciona nada porque $tmp_carrito
                                                # no es un arreglo
 
}
 foreach (
$compra as $indice => $seleccion)
  echo 
$indice."---".$seleccion."<br>";
 
$_SESSION['carrito']=$micarro;
?>
Si me dijeras el contenido de la variable $_SESSION['carrito'] a lo mejor te puedo ayudar. Porque no se que es lo que contenía antes de asignarla a $tmp_carrito
Salu2
__________________
Ing. Reynier Pérez Mira
  #10 (permalink)  
Antiguo 03/06/2004, 13:45
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
ok, creo que ya queda poco para la solucion!!!!

La primera vez que se realiza una compra, $_SESSION['carrito'] , esta vacia, no tiene valor. Como se solucionaria? con un if ?? si esta vacia que no realice el array_merge ?? mmm... Si me ayudaras a rematarlo te lo agradeceria!

La segunda vez que añadas ya no habra problema no? porque al asignarle a $_SESSION['carrito']=$micarrito ya no estara vacia no?

Un saludo
  #11 (permalink)  
Antiguo 03/06/2004, 14:00
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Prueba así

Prueba así a ver si te da resultado:
Código PHP:
<?
 session_start
();
 if(empty(
$_SESSION['carrito'])){
  
#Lo que vayas a hacer
 
}else{
  
$carrito = array ($referencia => $cantidad);
  
$compra array_merge($tmp_carrito,$carrito);
 }
 foreach (
$compra as $indice => $seleccion)
  echo 
$indice."---".$seleccion."<br>";
 
$_SESSION['carrito']=$micarro;
 
?>
Salu2
__________________
Ing. Reynier Pérez Mira
  #12 (permalink)  
Antiguo 03/06/2004, 14:29
 
Fecha de Ingreso: agosto-2003
Mensajes: 75
Antigüedad: 14 años, 3 meses
Puntos: 0
Por Fin!!

POR FIN!!!!!!!!!!
MUCHAS GRACIAS, POR FIN FUNCIONA TODO!!!
ME HAS SACADO DE UN APURO, TE LO AGRADEZCO MUXO!
Como decimos por aki: ERES EL PUTO AMO!!!
Muchas gracias por tu interes!
Hasta otra!
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:03.