Hallo

Ik ben bezig met een applicatie waarvoor ik iets moet maken en dacht dat is iets voor een Meer dimensionaal Associative array. Alleen ik heb hier niet veel ervaring mee.

Voor het vullen heb ik een main query en een subquery. Dit gaat op zich goed al kan het misschien beter.
Vullen:

<?php
$SQLMainQuery = "SELECT...";
$RSM=($con, $SQLMainQuery)

while (odbc_fetch_array($ResultMainQuery) {

//vullen array MAIN deel
$aMwa = [odbc_result($RSM, field)][] = odbc_result($RSM, field) //Array main idex [0]
$aMwa = etc.
//
$SQLSubQuery = "SELECT... FROM VIEW WHERE Subquery_value = Mainquery_value";
$RSS=($con, $SQLSubQuery)

while (odbc_fetch_array($ResultQuery) {

//Aanvullen array met SUB query deel. Hier onstaat meerdimensionaal array
$aMwa = [odbc_result($RSM, field)][odbc_result($RSS, field)][] = odbc_result($RSS, field) //Sub Array idex [field name] => ARRAY ( [0]
$aMwa = [odbc_result($RSM, field)][odbc_result($RSS, field)][] = etc. vullen

}
}
?>


Het Resultaat wat ik nu krijg ben ik in eerste instantie niet ontevreden over.

[MAIN_1] => Array
(
[0] => 11.12
[1] => 22.775000000
[2] => 33.895
[SUB_1_1] => Array
(
[0] => 22.12
[1] => 12.23000000
[2] => 23.895
)
)
[MAIN_2] => Array
(
[0] => 1.12
[1] => 33.775000000
[2] => 44.895
[SUB_2_1] => Array
(
[0] => 23.30
[1] => .000000000
[2] => 997.3
)
)

Waar ik wel over twijfel is dat in het MAIN_ deel een index [0], [1], [2] en dan opeens [SUB_] index heeft.Ik weet niet of ik dit anders moet doen.
In dit voorbeeld zit voor beide MAIN records maar één SUB_ record. Maar ieder Main record kan meerdere SUB records hebben

Het resultaat moet worden in HTML moet dan worden (ik weet niet hoe ik dit in HTML moet tonen, sorry):

<HTML>
<table>
<tr>
<th> kolom 1</th><th>Kolom 2</th><th>Kolom 4</th><th>Kolom 4</td>
</tr>
<tr>
<td>MAIN_1</td><td>11.12</td><td>22.775000000</td><td>33.895</td>
</tr>
<tr>
<td>- SUB_1_1</td><td>22.12</td><td>12.23000000</td><td>23.895</td>
</tr>
<tr>
<td>- evt. SUB_1_n</td><td>22.12</td><td>12.23000000</td><td>23.895</td>
</tr>
<tr>
<td>MAIN_2</td><td>1.12</td><td>33.775000000</td><td>44.895</td>
</tr>
<tr>
<td>- SUB_2_1</td><td>23.30</td><td>.000000000</td><td>997.3</td>
</tr>
</table>
</HTML>

Afgezien of ik mijn array wel op de juiste manier en of er geen betere manier is loop ik vast in het uitlezen van het subdeel. Daar ontbreekt ook een stukje kennis van opzetten (meer dimensionaal) associative array.

<?PHP
$HTML = '<table>';
foreach ($aMwa as $sMainLevel => $aSublevel) {
$HTML .= '<tr><td>'.$sMainLevel.'</td>';

for ($i=0; $i < 3; $i++) {
$HTML .= '<td>'.$aMwa[$sMainLevel][$i].'</td>';
}
$HTML .= '</tr>'; // Afsluiten MAIN regel

// En nu moet hier het SUB array uitgelezen worden. Hier zit dus de bottleneck
foreach ($aSublevel as $key => $value) {
$HTML .= '<tr><td> - '.$key.'</td>';
for ($j=0; $j < 3; $j++) {
$HTML .= '<td>'.$aSublevel[$key][$j].'</td>'; 
}
$HTML .= '</tr>'; // Afsluiten MAIN regel
}
}
$HTML = '/<table>';
?>

Ik weet niet of ik het goed uitgelegd heb maar ik hoop van wel.

Bedankt,

Nico
Hmm volgens mij maak je het allemaal wel erg moeilijk.

een aantal dingen die ik me zo bedenk:
- main query / sub query is uiteindelijk 1 verzoek aan de database server.
- $RSM=($con, $SQLMainQuery) Dit is geen geldige PHP code
- Al maak je een super ingewikkelde query, het antwoord van de database is altijd (en anders bijna altijd) een twee dimensionale array. Namelijk Rij, Kolom.

Misschien een optie om gewoon even je indeling van je tabellen weer te geven waar dit topic over gaat en vervolgens vertellen welke informatie je uit die tabellen wilt halen? We kunnen je dan veel beter helpen. Het juist weergeven van de HTML is dan weer de stap die daarop volgt. De eerste kunst is namelijk om ENKEL die info uit je database te krijgen die je DAADWERKELIJK nodig hebt.
Hallo,

Ik heb het opgelost.
De Query's.
Ik heb twee query's. Een 'buiten' query (om het dan maar even zo te noemen en een 'binnen' query. Hierbij is de binnen query afhankelijk van de buiten query, door in de where clause de waarde van de buiten query op te nemen.[/list]

Ik bedoel met een meer dimensionaal array, misschien niet helemaal correct verwoord, dat een of meerdere elementen weer een array zijn dus;

[MAIN_1] => Array
(
[0] => 11.12
[1] => 22.775000000
[2] => 33.895
[SUB_1_1] => Array
(
[0] => 22.12
[1] => 12.23000000
[2] => 23.895
)


Mijn fout was dat ik in principe een drie dimensionaal, althans dat denk ik dat dit zo is, aan het vullen was:

$Array['MAIN_1']['SUB_1_x'][] = waarde. 
//Dit moest zijn:
 $Array['MAIN_1']['SUB_1_x'] = waarde 

//Waarbij de x variabel is


Tenslotte het uitlezen:
<?php
foreach($aArray as $key => $value) {
if (!is_array($value) {
//Doe wat je moet doen met de discrete waarden
else
foreach($value as $key2 => $value2) {
// Doe hier wat je met 2e array moet doen
}
}
}
?>

Reageren