Ir al contenido principal

gambas3: collections of collections as php array of arrays

Those guys that code in php will find funny that making objects of data in tables are easy.. arrays, arrays.. that's why in php an array can handle any value, and the index can be any type, not only integer indexs. The article was inspired in a problem in gambas mail list:
http://gambas.8142.n7.nabble.com/collection-of-collection-problem-tp58654p58659.html

But wait, in php, an array can handle multiple arrays, that its not the same of a multidimensional array! care! That its the better in this special case of this article!

I mean: an array inside an array! and the values and key of those arrays can be any type.. great!
In java, ther's some difficulty, a collection its the only way to do that and there's another, only one type of values can handle in a collection.

Unfortunatelly in Gambas its more harded yet: must be collections and must iterate twice to handle values in.

An Example:

..lets get simple: a registry "order" that have many "products" so :
In java, there's DAO objects, but with collections, and in php more easy, only an array in array! 

The Data example:

* Main object: object (1 element with many attrs) and one of those attrs, its the cod_contenido , of the products of the order 
* Second objects: attr:cod_contenido-> (object with many elements, and each element many atrrs) 

|-----------------------------|
|   ORD101                    |
|-----------------------------|
| cod_orde:101                |
| des_order:description bla bl|----------------------------|
| cod_contents:1011           |        CON1011             |
|-----------------------------|----------------------------|
                              |    cod_product:101,        |
                              |    cod_order:101,          |
                              |    can_product:2           |
                              |----------------------------|
                              |    cod_product:102         |
                              |    cod_order:101           |
                              |    can_product:12          |
                              |----------------------------|

The make it on php:

In php only has to convert to array each recordset and then iterate each element,, the trick that makes php easy to use its that in the interesting key "cod_contenido" we can stop, iterate again and put inside the main array.. lets see:

$conn = mysqli_connect($servername, $username, $password, $dbname);
$orders = "SELECT * FROM almorder WHERE cod_order = '001'";
$ordersproducts = "SELECT * FROM alorderproducts WHERE cod_order = '001'";
$result = mysqli_query($conn, $orders);
foreach($result as $keyname => $valuename) 
{
    $orderarray[$keyname] = $valuename; 
    if ( $keyname == 'cod_contenido' )
    {
        $resultdet = mysqli_query($conn, $ordersproducts);
        foreach($resultdet as $keynamedet => $valuenamedet)
        {
            $orderdetail[$keynamedet] = $valuenamedet;
        }
        $orderarray[$keyname] = $valuename;
    }
}

The make it on Gambas:

In gambas there's quite more complicated due inside the key name, we will have and reference, an the real value will be another object, in php we can access directly no matter if are other king of data, in gambas we must iterate for each object that will put in collection:

orders = "SELECT * FROM almorder WHERE cod_order = '001'";
ordersproducts = "SELECT * FROM alorderproducts WHERE cod_order = '001'";
rset = $conexion.Exec(orders)
For Each rset
    columnas = New Collection(gb.IgnoreCase)
    For Each hField In rset.Fields
        columnas.Add(hField.Name), rset[hField.Name])
        if ( Comp(hField.Name, "cod_contenido") == 0 ) then
            rsetdet = $conexion.Exec(ordersproduts)
            filasdet = New Collection(gb.IgnoreCase)
            For Each rsetdet
                columnasdet = New Collection(gb.IgnoreCase)
                For Each hFieldet In rsetdet.Fields
                    columnasdet.Add(hFieldet.Name), rsetet[hFieldet.Name])
                Netx
                filasdet.Add(columnaset, rset!cod_contenido)
            Next
            columnas.Add(filasdet, "cod_contenido")
        Endif
    Next
    filas.Add(columnas, rset!cod_despacho)
Next

In the mail list the error was stupid, a typo in the line that added the "cod_contenido" object to the main collection object.. was added the same eveer!




Comentarios

Entradas más populares de este blog

R.U.S.N.I.E.S. http://rusnies.opsu.gob.ve/

(ACTUALIZADO) la pagina fue reestablecida hay muchos cambios pero los usuarios no lo notaran, para verlos o informacion haz click aqui rusnies cambios y consejos para verlos 1) primer dia no se pudo hacer login, ni recuperando password! 2) segundo dia (mas abajo) al fin logeado! 3) para poder aunquesea ver tu planilla, pulsa aqui: planilla rusnies, soluciones algunas! 4)y aqui: tercer dia, algunos detalles arreglado, pero... todos los defectos son algo raros! -si no puedes entrar lee mas abajo, se explica porque y como acceder a tu cuenta en el R.U.N.E.S. -ojo quiero aclarar que un monton de inutiles no ingresaban bien la direccion y por ello no llegaban a ver nunca la pagina! porque ponian la "gov" en vez de "gob" ya que el pedazo de periodico no sabe escribir! 1) Primer dia del R.U.N.I.E.S. : (powered by apache+php+debian, pero estupidizado por los TSU y ingenieros informaticos graduados, que creen saber de programacion!) Cuan triste es ver m...

planilla de rusnies, algunas soluciones! principalmente para los que ya la hicieron!

(ACTUALIZADO) LEER PRIMERO ANTES DE COMENTAR POR FAVOR! la pagina del rusnies ya esta activa hay muchos cambios que los usuarios no notaran perro estan listados, para verlos haz clik aqui rusnies cambios un tip para los que ya la generaron! si conoces la URL de tu planilla (termina en letras mayusculas) puedes ingresarla directamente y obtendras la planilla! Los que tenga el gran Konqueror podran guardarla como si fuese un archivo cualquiera! el resto se les empotrara en los navegadores! pudiendo imprimirla pero no guardarla! esto se puede porque creo la peticion se hace directamente al php y este genera el postscript de la planilla! para los que no han generado su planilla pueden usar la chache de google y listo, como! hagan una busqueda del google para rusnies! pero no le den click al link, en la misma entrada esta unas letricas que dicen "en cache", si dan click ally podran entrar (funciona en la mayoria de los casos) Lo de la cahce sirve mas de noche, de di...

rusnies actualizada, nuevo php y apache actualizado!

AL parecer los ineptos tardaron mas de 5 dias normalizando una actualizacion de apache y php, aparte de ajustar configuraciones para evitar DOS y cuellos de botellas! ANALISIS PROFUNDO, algunos consejos Y ESPECTATIVAS POSITIVAS: Me complace felicitar a los "tecnicos" encargados ya que lograron reestablecer la normalidad en la web! (hasta ahora)! pero.... LAstimosamente las personas que hayan hecho la planilla deberan realizarla de nuevo CUIDADOSAMENTE,porque ineptamente los datos anteriores ahora no coordinaran! (eso era obvio de esperar!) debido a las actualizaciones que hicieron en los codigos fuentes relacionadas con la DB y los datos actuales! (los cuales estaban bien viejitos) LASTIMOSAMENTE TAMBIEN.. los datos se generan mal, deben tener cuidado y no imprimir a la ligera aunque esta informacion esta de mas pues cualquier persona con 4 dedos de frente revisa dos veces un evento tan importante como dicho registro! PARA LOS PROGRAMADORES les recomiendo lean el fina...

Venezuela Real : cuidado con basura mediatica

El miundo entero esta lleno de gente "pila", "avispada", en pocas palabras gente que solo vive de aprovechar oportunidades, llamandole a esta actividad burda "trabajo"! y venezuela desgraciadamente no es la excepcion, pue que en cualquier pais hay gente asi! Buscando informacion del sistema de educacion superior llege a una pagina estilo periodico (poco original, hacer de las entradas de un blog, un "multiperiodico") El blog es puro criticar, leyendo las primeras lineas hay objetividad, pero los articulos intentan demostrar desde un "falso punto neutral" oposicionismo, pero ninguna solucion.. Es facil criticar, dificil es mejorar... aprende a ser gente, no chismosa! Los gerentes y "profesionales" en el mundo entero es lo que hacer, criticar y culpar, esperando que les solucionen los problemas, justo como el marco usuario-guindo, donde el usuario estupidamente espera que un "flamante" encorbatado, le solucione la ...

Debian vs Devuan - the complete guide to choose

Devuan project aims to made a complete Linux distribution, but the fact its that tracks 90% of the Debian work. This article are up to date to Aug 2021 with release of bullseye. Debian its the mother of most famous distros, including Devuan! But must be considering that Devuan are now more faster but more. so lest see some important thing respect the recently "/usr merge" and "systemd home invassion" incoming things in future: We have two parts, overall differences, and more deep technical differences, recommended for those that will be used more than only to see movies or browse the internet! Before read the complete article , i currently used Devuan as main system, but please take in consideration that almost all notes seems negative; why? well Devuan are more efficient rather than Debian .. but if we take the overall user vision.. Devuan will fail as complete solution .

RTPmedia managers: rtpengine vs rtpproxy complete quick info

The idea is to permanently listen internally on the UDP port or on a local socket, controlling SIP signals messages. That is to say to control the flow of information and to where the answers are sent by means of these commands. Since these signals do not go directly to the SIP service but to the RTP NAT software, then the SIP service can tell the RTP service "give me that media stream, I know what to do" after sending it internally (to some other service) and receive an answer and then deliver it again and say "here is the flow response, send it to that device".

iso linux debian venenux tools

VNZ CD EMU tools suite now for i386(sarge-etch-lenny) and amd64(etch-lenny) ahora para i386(sarge-etch-lenny) y amd64(etch-lenny) For one reason or another, you may have image files laying around that you would like to access under Linux. Here are some nifty utilities to convert those pesky 'GUINdows' images into something Linux can understand (standard .iso format). Por una razon u otra, tu puedes tener que quisieras acceder en linux, Estas son algunas utilidades para convertir estas pestilentes 'GUINdows' imagenes en algo que linux pueda entender (imagen iso estandar) archivos imagenes Don't expect error correction codes and the like to be preserved, just the data... Generally speaking, these types of things are pretty irrelevant on linux to begin with. If you legally backed up some software of yours and made a 1:1 image of it under Windows, more than likely, your resulting ISO from the programs below will not contain this copy protection data. For o...

lista de chavista para aporrealos busquense aqui

NOTA : este no es un sitio escualido ! favor los chavistas leer primero, la estupidez agrava la situacion de chavez! la idea es ver lo que los escualidos hacen.... para restringir los chavistas n la red. lista fanatica de el sitio que restringe los mail y ip con tendencia chavista, segun ellos, este servicio es un favor publicado para aporrealos.. gracias sr PICCORO http://www.noolvidaremos.com/emailschavistas.html Lista de emails de chavistas actualizado 2008-Enero-15. No se han agregado mas emails solo se ha reformateado la lista para que sea mas agradable a la vista. Actualmente tenemos listas de otras comunidades, estamos esperando recaudar mas informacion para integrarlas todas. 7518521@hotmail.com a_paries@hotmail.com aangel497@gmail.com aantonio27@yahoo.com aarismendi14@hotmail.com abdallahdlp@hotpop.com abrilinsondable@gmail.com acjdoc14@hotmail.com acosta.ali@hotmail.com adelaca3101@gmail.com administrystaff@hotmail.com adolfogil2021@hotmail.com adritacjm@yahoo.es a...

Silverhawks+Thndercats : por que nos gusto a pesar de tener cosas ilogicas y mongolicas? E IBAN ESTAR JUNTOS!!!

Recientemente se realizo el Wondercon que ahora le dicen ThunderCon pero eso lo digo al final, esto es mas importante (para llorar) porque los nuevos thundercats son una cagada, no se emocionen el argumento es peor!! Pero hay mas los nuevos silverhawks (en preproduccion) es una basura!!!  De todas manera los viejos no eran la gran vaina, aqui explico porque: jejej les voy hacer recorda tiempos atras, si asi de malo soy, pero entre "tundelcats" y "j-alcones galacticos" despues de años analizo la "vaina" y me doy cuenta que quitando ciertos detalles el producto animado de los cuales cito son ESTUPIDOS! Eso no es nada, estas dos producciones iban estar juntas en un dia proximo (que llego tarde) vean esta foto del promo: Pero la pregunta es : ¿Porque gusto? La respuesta es simple: ciertos secuencias de animacion y la apariencia de los personajes. Antes de escribir de manera tecnica el porque le dejo este mensage a los tres que seguro les dara un inf...

Javascript: forms sin/without submit

Javascript : enviar formulario sin boton submit / form without submit button This code is a formulary, but submit button are a simple link!. Can be used better designed websites. Este codigo es un formulario, pero el boton submit es un link simple. Puede ser usado para mejorar el diseno. <FORM NAME="myForm" METHOD='GET'> input <INPUT TYPE="text" NAME="parameter1" VALUE='value1' SIZE=20> <BR> <P onClick="javascript:document.myForm.submit();" style='cursor:hand;' >click aqui</P> and sent whitout button submit.. </FORM> the trick is that the mouse event "onclick" defines at click release the execution of submit event document, adicionaly, the style is definet as "cursor:hand" for better multibrowser support that the "onmouseover" event, but this last is better for old browsers. El truco es...

Popular

R.U.S.N.I.E.S. http://rusnies.opsu.gob.ve/

(ACTUALIZADO) la pagina fue reestablecida hay muchos cambios pero los usuarios no lo notaran, para verlos o informacion haz click aqui rusnies cambios y consejos para verlos 1) primer dia no se pudo hacer login, ni recuperando password! 2) segundo dia (mas abajo) al fin logeado! 3) para poder aunquesea ver tu planilla, pulsa aqui: planilla rusnies, soluciones algunas! 4)y aqui: tercer dia, algunos detalles arreglado, pero... todos los defectos son algo raros! -si no puedes entrar lee mas abajo, se explica porque y como acceder a tu cuenta en el R.U.N.E.S. -ojo quiero aclarar que un monton de inutiles no ingresaban bien la direccion y por ello no llegaban a ver nunca la pagina! porque ponian la "gov" en vez de "gob" ya que el pedazo de periodico no sabe escribir! 1) Primer dia del R.U.N.I.E.S. : (powered by apache+php+debian, pero estupidizado por los TSU y ingenieros informaticos graduados, que creen saber de programacion!) Cuan triste es ver m...

planilla de rusnies, algunas soluciones! principalmente para los que ya la hicieron!

(ACTUALIZADO) LEER PRIMERO ANTES DE COMENTAR POR FAVOR! la pagina del rusnies ya esta activa hay muchos cambios que los usuarios no notaran perro estan listados, para verlos haz clik aqui rusnies cambios un tip para los que ya la generaron! si conoces la URL de tu planilla (termina en letras mayusculas) puedes ingresarla directamente y obtendras la planilla! Los que tenga el gran Konqueror podran guardarla como si fuese un archivo cualquiera! el resto se les empotrara en los navegadores! pudiendo imprimirla pero no guardarla! esto se puede porque creo la peticion se hace directamente al php y este genera el postscript de la planilla! para los que no han generado su planilla pueden usar la chache de google y listo, como! hagan una busqueda del google para rusnies! pero no le den click al link, en la misma entrada esta unas letricas que dicen "en cache", si dan click ally podran entrar (funciona en la mayoria de los casos) Lo de la cahce sirve mas de noche, de di...

rusnies actualizada, nuevo php y apache actualizado!

AL parecer los ineptos tardaron mas de 5 dias normalizando una actualizacion de apache y php, aparte de ajustar configuraciones para evitar DOS y cuellos de botellas! ANALISIS PROFUNDO, algunos consejos Y ESPECTATIVAS POSITIVAS: Me complace felicitar a los "tecnicos" encargados ya que lograron reestablecer la normalidad en la web! (hasta ahora)! pero.... LAstimosamente las personas que hayan hecho la planilla deberan realizarla de nuevo CUIDADOSAMENTE,porque ineptamente los datos anteriores ahora no coordinaran! (eso era obvio de esperar!) debido a las actualizaciones que hicieron en los codigos fuentes relacionadas con la DB y los datos actuales! (los cuales estaban bien viejitos) LASTIMOSAMENTE TAMBIEN.. los datos se generan mal, deben tener cuidado y no imprimir a la ligera aunque esta informacion esta de mas pues cualquier persona con 4 dedos de frente revisa dos veces un evento tan importante como dicho registro! PARA LOS PROGRAMADORES les recomiendo lean el fina...

Venezuela Real : cuidado con basura mediatica

El miundo entero esta lleno de gente "pila", "avispada", en pocas palabras gente que solo vive de aprovechar oportunidades, llamandole a esta actividad burda "trabajo"! y venezuela desgraciadamente no es la excepcion, pue que en cualquier pais hay gente asi! Buscando informacion del sistema de educacion superior llege a una pagina estilo periodico (poco original, hacer de las entradas de un blog, un "multiperiodico") El blog es puro criticar, leyendo las primeras lineas hay objetividad, pero los articulos intentan demostrar desde un "falso punto neutral" oposicionismo, pero ninguna solucion.. Es facil criticar, dificil es mejorar... aprende a ser gente, no chismosa! Los gerentes y "profesionales" en el mundo entero es lo que hacer, criticar y culpar, esperando que les solucionen los problemas, justo como el marco usuario-guindo, donde el usuario estupidamente espera que un "flamante" encorbatado, le solucione la ...

Debian vs Devuan - the complete guide to choose

Devuan project aims to made a complete Linux distribution, but the fact its that tracks 90% of the Debian work. This article are up to date to Aug 2021 with release of bullseye. Debian its the mother of most famous distros, including Devuan! But must be considering that Devuan are now more faster but more. so lest see some important thing respect the recently "/usr merge" and "systemd home invassion" incoming things in future: We have two parts, overall differences, and more deep technical differences, recommended for those that will be used more than only to see movies or browse the internet! Before read the complete article , i currently used Devuan as main system, but please take in consideration that almost all notes seems negative; why? well Devuan are more efficient rather than Debian .. but if we take the overall user vision.. Devuan will fail as complete solution .