Meerdimensionaal associative array vullen en terug lezen
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:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?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
}
}
?>
$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.
Quote:
[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
)
)
(
[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):
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<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>
<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.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?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>';
?>
$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
- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 14/04/2017 13:07:50 door - Ariën -
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.
Gewijzigd op 14/04/2017 18:27:25 door Frank Nietbelangrijk
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;
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
[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
)
(
[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:
Code (php)
1
2
3
4
5
2
3
4
5
$Array['MAIN_1']['SUB_1_x'][] = waarde.
//Dit moest zijn:
$Array['MAIN_1']['SUB_1_x'] = waarde
//Waarbij de x variabel is
//Dit moest zijn:
$Array['MAIN_1']['SUB_1_x'] = waarde
//Waarbij de x variabel is
Tenslotte het uitlezen:
Code (php)
Gewijzigd op 24/04/2017 15:23:09 door nkamp Kamp van de