Http://gambas.8142.n7.nabble.com/collection-of-collection-problem-tp58654p58659.html
Pero espera, en php, una matriz puede manejar múltiples matrices, que no es lo mismo de una matriz multidimensional! ¡cuidado! Que es el mejor en este caso especial de este artículo!
Quiero decir: una matriz dentro de una matriz! Y los valores y la clave de los arrays pueden ser de cualquier tipo .. genial!
En java, hay alguna dificultad, una colección es la única manera de hacer eso y hay otro, sólo un tipo de valores pueden manejar en una colección.
Desafortunadamente en Gambas su más duro todavía: debe ser colecciones y debe iterar dos veces para manejar otro.
Un Ejemplo:
..un objeto "orden" que tiene asociado muchos "productos" entonces:
La data ejemplo:
* Main object: object (1 elemento con muchos atributos) y uno de estos es el cod_contenido, de los productos de la orden* Second objects: attr:cod_contenido varios objetos con muchos atributos y muchos de esos objetos
|----------------------------- |
| 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 |
|----------------------------|
Hacerlo con php:
muy facil dentro del arreglo inicial se coloca como un valor el otro arreglo solo dos iteraciones:$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;
}
}
Hacerlo con Gambas:
En gamgas es una complicacion, hay que iterar dos veces por cada objeto, y no se puede usar arreglos, sino colleciones.. puesto que los arreglos son de un solo tipo: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
!
No hay comentarios:
Publicar un comentario
Complacidos de que te expreses, por favor identificate si es posible!