Foros del Web » Programando para Internet » PHP »

Formar un array dentro de otro desde MySQL

Estas en el tema de Formar un array dentro de otro desde MySQL en el foro de PHP en Foros del Web. Hola foreros, a ver si alguien me puede echar una mano. No consigo desentrañar esto. Necesito formar dinámicamente desde una consulta a una tabla MySQL ...
  #1 (permalink)  
Antiguo 20/10/2010, 12:40
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 9 meses
Puntos: 3
Formar un array dentro de otro desde MySQL

Hola foreros, a ver si alguien me puede echar una mano. No consigo desentrañar esto.

Necesito formar dinámicamente desde una consulta a una tabla MySQL un array con este formato :
Código PHP:
$datos= array(
        array(
'Producto'=>'Producto1','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>15),
        array(
'Producto'=>'Producto3','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>16),
        ); 
Los pares de valores Producto, Cantidad, y Precio Ud. son sólo el nombre asociativo del valor que le acompaña que es el que tengo que extraer de la tabla de la base de datos. Cada línea es un array que tengo que introducir en el array $datos.

Se supone que sería algo así:
Código PHP:
$qp "Select * from pedidos where numeroPedido='" $idNumeroPedido "'";
$rp mysql_query($qp);
    
while(
$rwp mysql_fetch_array($rp)){
    
$pedido[] = array('Producto'=>$rwp['idProducto'],'Cantidad'=>$rwp['cantidad'],'Precio Ud.'=>$rwp['precio']);
    

Lo hago así pero no me funciona.

¿Alguna idea?

Muchas gracias de antemano.

  #2 (permalink)  
Antiguo 20/10/2010, 12:44
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Formar un array dentro de otro desde MySQL

y se puede saber algo mas de información?

¿porque dices que no funciona? ¿que hace y que no hace? ¿muestra algún mensaje de error? ¿algo mas útil?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 20/10/2010, 12:55
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 9 meses
Puntos: 3
Respuesta: Formar un array dentro de otro desde MySQL

Hola Pateketrueke, gracias por la rápida respuesta.

El problema es que ese array es el que se envía a un script para pintar una tabla en un pdf y lo único que me devuelve es un error en la formación del pdf por lo que el array no se forma bien.

Como no sé cómo recorrer un array de ese tipo no puedo ver qué datos se han generado o si lo ha hecho o no bien.

Lo único que necesito saber es si estoy formando bien el array de arriba con el while de la consulta a la BD de abajo.
  #4 (permalink)  
Antiguo 20/10/2010, 13:19
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Formar un array dentro de otro desde MySQL

bueno, para comprobar dicho array deberías hacer lo siguiente después del bucle:
Código PHP:
print_r($pedido); 
se debería ayudarte de algo...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 20/10/2010, 13:45
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 9 meses
Puntos: 3
Respuesta: Formar un array dentro de otro desde MySQL

Con print_r($pedido) en una consulta a la BD me devuelve esto:

Array ( [0] => Array ( [Producto] => 2 [Cantidad] => 1 [Precio Ud.] => 10 ) [1] => Array ( [Producto] => 1 [Cantidad] => 1 [Precio Ud.] => 10 ) )

Y este formato no me sirve para meterlo en el array principal $datos.
  #6 (permalink)  
Antiguo 20/10/2010, 14:15
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Formar un array dentro de otro desde MySQL

pero amigo, usa el sentido común... es exactamente el mismo formato que decías que necesitabas!!
Código PHP:
$datos= array(
        array(
'Producto'=>'Producto1','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>15),
        array(
'Producto'=>'Producto3','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>16),
        );  

print_r($datos); 
este es el resultado de dicha estructura:
Cita:
Array
(
[0] => Array
(
[Producto] => Producto1
[Cantidad] => 1
[Precio Ud.] => 14
)

[1] => Array
(
[Producto] => Producto2
[Cantidad] => 2
[Precio Ud.] => 15
)

[2] => Array
(
[Producto] => Producto3
[Cantidad] => 1
[Precio Ud.] => 14
)

[3] => Array
(
[Producto] => Producto2
[Cantidad] => 2
[Precio Ud.] => 16
)

)
¿notas las similitudes?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 20/10/2010, 14:39
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 9 meses
Puntos: 3
Respuesta: Formar un array dentro de otro desde MySQL

Yo es que con los arrays pierdo el sentido común, lo siento, .

Pues chico, yo meto manualmente esta estructura:
Código PHP:
$datos= array(
        array(
'Producto'=>'Producto1','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>15),
        array(
'Producto'=>'Producto3','Cantidad'=>1,'Precio Ud.'=>14),
        array(
'Producto'=>'Producto2','Cantidad'=>2,'Precio Ud.'=>16),
        ); 
Y me lo carga sin problemas. Pero si hago esto:

Código PHP:
while($rwp mysql_fetch_array($rp)){
    
$pedido[]= array('Producto'=>$rwp['idProducto'],'Cantidad'=>$rwp['cantidad'],'Precio Ud.'=>10);
    
}

$datos = array($pedido); 
es decir, construir el mismo array de forma dinámica no me lo carga, por lo que no serán tan idénticas estas estructuras.

Última edición por damargon; 20/10/2010 a las 14:47
  #8 (permalink)  
Antiguo 20/10/2010, 16:02
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 15 años, 11 meses
Puntos: 2534
Respuesta: Formar un array dentro de otro desde MySQL

lo que sucede es que cometes un error gravísimo:
Código PHP:
// MAL
$datos = array($pedido);  

// BIEN
$datos $pedido
ya que con la primer linea estarías insertando otra dimensión al arreglo previamente creado, pues $pedido ya tiene la estructura, no necesitas meterla en otro array...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 21/10/2010, 08:37
Avatar de damargon  
Fecha de Ingreso: junio-2003
Ubicación: Madrid
Mensajes: 386
Antigüedad: 20 años, 9 meses
Puntos: 3
Respuesta: Formar un array dentro de otro desde MySQL

Bueno, ya lo resolví por mi cuenta:

Código PHP:
while($rwp mysql_fetch_array($rp)){
    
        
$datos[]=array_merge($rwp);
    

Que lo que hace es añadir en el array $datos todo el array de datos extraído de la BD ($rwp) y así ya puedo llevarlo a la aplicación que los utiliza.

Etiquetas: formar, mysql
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 16:43.