Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear Array con Datos de BD

Estas en el tema de Crear Array con Datos de BD en el foro de PHP en Foros del Web. Saludos amigo del Foro, estoy en la necesidad de pedirle una ayuda, respecto a como crear o armar un array con datos extraidos desde la ...
  #1 (permalink)  
Antiguo 20/03/2020, 11:33
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 8 años
Puntos: 1
Pregunta Crear Array con Datos de BD

Saludos amigo del Foro, estoy en la necesidad de pedirle una ayuda, respecto a como crear o armar un array con datos extraidos desde la bd, el array esta conformado por una cabecera donde lleva los detalle de una venta, y aparte los detalles de productos relacionados a esa venta, mi problema viene en esta parte de como cargar los productos relacionados en esa venta. Actualmente tengo un ejemplo de como deberia ir o estar estructurado ese array, en el siguiente ejemplo.

Código PHP:
Ver original
  1. $postData = [
  2.      "ID" => "R76987753-3T56F21",
  3.      "Encabezado" => [
  4.            "IdDoc" => [
  5.               "TipoDTE" => 39,
  6.               "Folio" => 22,  
  7.               "FchEmis" => "2019-06-03",
  8.               "FmaPago" => "1",
  9.               "FchVenc" => "2019-06-03"
  10.            ],
  11.            "Emisor" => [
  12.                  "RUTEmisor" => "76987753-3",
  13.                  "RznSocEmisor" => "APPNET TECHNOLOGY LIMITADA",
  14.                  "GiroEmisor" => "EDICION DE PROGRAMAS INFORMATICOS",
  15.                  "Acteco" => "465100",
  16.                  "DirOrigen" => "VARAS MENA 980",
  17.                  "CmnaOrigen" => "SAN MIGUEL",
  18.                  "CiudadOrigen" => "SANTIAGO"
  19.               ],
  20.            "Receptor" => [
  21.                     "RUTRecep" => "18927902-7",
  22.                     "RznSocRecep" => "IVAN ANDRES SAAVEDRA VALENZUELA",
  23.                     "GiroRecep" => "ACTIVIDADES DE PROGRAMACION INFORMATICA",
  24.                     "DirRecep" => "AURORA DE CHILE 1475",
  25.                     "CmnaRecep" => "RECOLETA",
  26.                     "CiudadRecep" => "SANTIAGO"
  27.                  ],
  28.            "Totales" => [
  29.                        "MntExe" => 0,
  30.                        "MntNeto" => 8403,
  31.                        "TasaIVA" => 19,
  32.                        "IVA" => 1597,
  33.                        "MntTotal" => 10000
  34.                     ]
  35.         ],
  36.      "Detalle" => [
  37.                           [
  38.                              "NroLinDet" => iddetalle,
  39.                              "CdgItem" => [
  40.                                 "VlrCodigo" => "codigoproducto",
  41.                                 "TpoCodigo" => "INTERNO POR DEFECTO"
  42.                              ],
  43.                              "NmbItem" => "nombre de producto",
  44.                              "QtyItem" => cantidad,
  45.                              "PrcItem" => precio,
  46.                              "DescuentoMonto" => descuento,
  47.                              "MontoItem" => totalimporte
  48.                           ],
  49.                           [
  50.                                    "NroLinDet" => 2,
  51.                                    "CdgItem" => [
  52.                                       "VlrCodigo" => "ACEITUNA",
  53.                                       "TpoCodigo" => "INTERNO"
  54.                                    ],
  55.                                    "NmbItem" => "Servicio 2",
  56.                                    "QtyItem" => 100,
  57.                                    "PrcItem" => 84,
  58.                                    "DescuentoMonto" => 0,
  59.                                    "MontoItem" => 8403
  60.                                 ]
  61.                        ],
  62.      "DscRcgGlobal" => [
  63.                                          [
  64.                                             "NroLinDR" => 1,
  65.                                             "TpoMov" => "D",
  66.                                             "GlosaDR" => "DESCUENTO GLOBAL AL DOCUMENTO",
  67.                                             "TpoValor" => "$",
  68.                                             "ValorDR" => 10000
  69.                                          ]
  70.                                       ]
  71.   ];

Ahora bien, actualmente hago dos consultas, una para obtener los datos de cabecera y crear el array, y otra para obtener los detalles de productos, mi problema es en esta parte en como poder mostrar los detalles de productos solamente los q se ven en el ejemplo que publique en la parte de arrriba,

Código PHP:
Ver original
  1. array('ID'=> $id,
  2.       "Encabezado" => [
  3.         "IdDoc" => [
  4.           'TipoDTE'=> '39',
  5.           'Folio'=> $folio,
  6.           'FchEmis'=> $fechaemite,
  7.           'FmaPago'=> $formapago,
  8.           'FchVenc'=> $fechavence
  9.         ],
  10.         "Emisor" => [
  11.           'RUTEmisor'=> $rucemisor,
  12.           'RznSocEmisor'=> $razonsocial,
  13.           'GiroEmisor'=> $giroemisor,
  14.           'Acteco'=> $actecoemisor,
  15.           'DirOrigen'=> $direcemisor,
  16.           'CmnaOrigen'=> $direcemisor,
  17.           'CiudadOrigen'=> $direcemisor
  18.         ],
  19.         "Receptor" => [
  20.           'RUTRecep'=> '66666666-6',
  21.           'RznSocRecep'=> $razonsocial,
  22.           'GiroRecep'=> $giroemisor,
  23.           'DirRecep'=> $direcemisor,
  24.           'CmnaRecep'=> $direcemisor,
  25.           'CiudadRecep'=> $direcemisor
  26.         ],
  27.         "Totales" => [
  28.           'MntExe'=> '0',
  29.           'MntNeto'=> $totalneto,
  30.           'TasaIVA'=> $iva,
  31.           'IVA'=> $totaliva,
  32.           'MntTotal'=> $totalpago
  33.         ]
  34.       ], "Detalle"=>$data)

Como pueden ver al final del array esta la parte Detalle y la variable $data dodne obtengo los detalles de productos, pero quisiera es poder mostrarlo a como estan en el ejemplo arriba, les agradezco me puedan dar una mano
  #2 (permalink)  
Antiguo 21/03/2020, 09:17
Avatar de zerpico_01  
Fecha de Ingreso: enero-2008
Ubicación: Wilde - Avellaneda -
Mensajes: 400
Antigüedad: 12 años, 2 meses
Puntos: 11
Respuesta: Crear Array con Datos de BD

No se si lo he entendí bien, pero en fin, tomado su código,
lo he modificado para que sea funcional para el siguiente ejemplo.
Su código:

Código PHP:

$postData 
= [
    
'ID' => 'R76987753-3T56F21',
        
'Encabezado' => [
            
'IdDoc' => [
                
'TipoDTE' => 39,
                
'Folio' => 22,
                
'FchEmis' => '2019-06-03',
                
'FmaPago' => '1',
                
'FchVenc' => '2019-06-03'
            
],
            
'Emisor' => [
                
'RUTEmisor' => '76987753-3',
                
'RznSocEmisor' => 'APPNET TECHNOLOGY LIMITADA',
                
'GiroEmisor' => 'EDICION DE PROGRAMAS INFORMATICOS',
                
'Acteco' => '465100',
                
'DirOrigen' => 'VARAS MENA 980',
                
'CmnaOrigen' => 'SAN MIGUEL',
                
'CiudadOrigen' => 'SANTIAGO'
            
],
            
'Receptor' => [
                
'RUTRecep' => '18927902-7',
                
'RznSocRecep' => 'IVAN ANDRES SAAVEDRA VALENZUELA',
                
'GiroRecep' => 'ACTIVIDADES DE PROGRAMACION INFORMATICA',
                
'DirRecep' => 'AURORA DE CHILE 1475',
                
'CmnaRecep' => 'RECOLETA',
                
'CiudadRecep' => 'SANTIAGO'
            
],
            
'Totales' => [
                
'MntExe' => 0,
                
'MntNeto' => 8403,
                
'TasaIVA' => 19,
                
'IVA' => 1597,
                
'MntTotal' => 10000
            
]
        ],
        
'Detalle' => [
            [
                
'NroLinDet' => 'iddetalle',
                
'CdgItem' => [
                    
'VlrCodigo' => 'codigoproducto',
                    
'TpoCodigo' => 'INTERNO POR DEFECTO'
                
],
                
'NmbItem' => 'nombre de producto',
                
'QtyItem' => 'cantidad',
                
'PrcItem' => 'precio',
                
'DescuentoMonto' => 'descuento',
                
'MontoItem' => 'totalimporte'
            
],
            [
                
'NroLinDet' => 2,
                
'CdgItem' => [
                    
'VlrCodigo' => 'ACEITUNA',
                    
'TpoCodigo' => 'INTERNO'
                
],
                
'NmbItem' => 'Servicio 2',
                
'QtyItem' => 100,
                
'PrcItem' => 84,
                
'DescuentoMonto' => 0,
                
'MontoItem' => 8403
            
]
        ],
        
'DscRcgGlobal' => [
            [
                
'NroLinDR' => 1,
                
'TpoMov' => 'D',
                
'GlosaDR' => 'DESCUENTO GLOBAL AL DOCUMENTO',
                
'TpoValor' => '$',
                
'ValorDR' => 10000
            
]
        ]
    ]; 
Una forma de hacer lo que necesita seria:

Código PHP:
foreach ($postData as $key => $value) {
    echo 
$key.PHP_EOL;
    if (
is_array($value)) {
        foreach (
$value as $sub_key => $sub_val) {
            if (
is_array($sub_val)) {
                echo 
$sub_key ' : '.PHP_EOL;
                foreach (
$sub_val as $sub_sub_key => $sub_sub_value) {
                    if (!
is_array($sub_sub_value)) {
                        echo 
$sub_sub_key " = " $sub_sub_value PHP_EOL;
                    } else {
                        
/** joder tio aca si es array otro foreach!! */
                        /** si si yo tambien tomo el mismo Whisky :-D */
                    
}
                }
            } else {
                echo 
$sub_key.' = '$sub_val PHP_EOL;
            }
        }
    }

de todos modos no creo que sea la mejor opción la que esta utilizando para imprimir
la respuesta a la consulta de su DB

Mi recomendación es que optimice su consulta y obtenga los datos sin tanto anidado.
Pero en fin va en usted.
saludos.
__________________
Es duro fracasar en algo, pero es mucho peor no haberlo intentado. - Si crees todo lo que lees, mejor no leas -

Última edición por zerpico_01; 21/03/2020 a las 09:19 Razón: ortografia
  #3 (permalink)  
Antiguo 31/03/2020, 18:21
 
Fecha de Ingreso: marzo-2012
Ubicación: El Vigia Edo Merida
Mensajes: 147
Antigüedad: 8 años
Puntos: 1
Respuesta: Crear Array con Datos de BD

Muchas gracias amigo, perfecto esa funcion , te agradezco, pero ya habia solucionado con array_merge uniendo dos array, pero muchas gracias con esa funcion igual trabajo bien, saludos



La zona horaria es GMT -6. Ahora son las 10:59.