Ik probeer al twee dagen om recursief gegevens uit een database te lezen en in een tweedimensionale array te plaats. Tot nu toe is het me nog niet gelukt
Het gaat om een menustructuur die is opgeslagen in een database. De rubrieken in dit menu worden uit een database gehaald. De tabel ziet er als volgt uit:
Of misschien dat dit makkelijker leest:
Ik heb nu in PHP een functie getParents(rubriek_id) die alle parents van de rubriek met de meegegeven rubriek_id ophaalt en teruggeeft.
De code is als volgt:
de $parent is dus een array met daarin de waarden van de velden uit de tabel:
Deze arrays (van elke parent eentje) wil ik teruggeven in een tweedimensionale array. Zodat het eerste element uit die tweedimensionale array het volgnummer van de parent aangeeft en het tweede element de waarden van die parent. Zoals dit:
Ik dacht dat ik met deze code...
... wel een heel eind zou komen, maar dat blijkt dus niet goed te werken
Met deze menustructuur:
Krijg ik deze output als ik getParents(6) aanroep:
(Excuses voor het om zeep helpen van de layout
)
Ik kom er echt niet meer uit. Ik krijg de meest exotische arrays terug, maar niet eentje werkt zoals ik had gehoopt.
Heeft iemand hier een oplossing voor?
Het gaat om een menustructuur die is opgeslagen in een database. De rubrieken in dit menu worden uit een database gehaald. De tabel ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
| CREATE TABLE rubrieken ( rubriek_id int(10) NOT NULL auto_increment, parent_id int(10) default NULL, module_id int(10) default NULL, naam varchar(255) NOT NULL default '', zichtbaar tinyint(1) NOT NULL default '1', volgorde int(10) NOT NULL default '0', PRIMARY KEY (rubriek_id) ) TYPE=MyISAM; |
Of misschien dat dit makkelijker leest:
code:
1
2
3
4
5
6
7
8
| rubrieken ------------ rubriek_id parent_id module_id naam zichtbaar volgorde |
Ik heb nu in PHP een functie getParents(rubriek_id) die alle parents van de rubriek met de meegegeven rubriek_id ophaalt en teruggeeft.
De code is als volgt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
| function getParents($rubriek_id) { static $counter = 0; $dbc = connect_to_database(); $sql = "SELECT * FROM rubrieken WHERE rubriek_id = 'rubriek_id'"; $result = mysql_query($sql, $dbc); if ($result && mysql_num_rows($result) > 0) { $parent = mysql_fetch_array($result); if ($parent['parent_id']) return array(getParents($parent['parent_id'])) + array($counter++, $parent); else return $parent; } else return; } |
de $parent is dus een array met daarin de waarden van de velden uit de tabel:
PHP:
1
2
3
4
| $parent['rubriek_id'] $parent['parent_id'] $parent['naam'] //etc. |
Deze arrays (van elke parent eentje) wil ik teruggeven in een tweedimensionale array. Zodat het eerste element uit die tweedimensionale array het volgnummer van de parent aangeeft en het tweede element de waarden van die parent. Zoals dit:
PHP:
1
2
3
4
5
6
| $arrParents[0]['rubriek_id'] $arrParents[0]['parent_id'] $arrParents[0]['naam'] $arrParents[1]['rubriek_id'] $arrParents[1]['parent_id'] $arrParents[1]['naam'] |
Ik dacht dat ik met deze code...
PHP:
1
| return array(getParents($parent['parent_id'])) + array($counter++, $parent); |
... wel een heel eind zou komen, maar dat blijkt dus niet goed te werken
Met deze menustructuur:
code:
1
2
3
4
5
6
| Globaal - Welkom - Wie zijn we 2004 - Nieuws - Brieven |
Krijg ik deze output als ik getParents(6) aanroep:
PHP:
1
2
3
4
5
| Array ( [0] => Array ( [0] => Array ( [0] => 3 [rubriek_id] => 3 [1] => [parent_id] => [2] => [module_id] => [3] => 2004 [naam] => 2004 [4] => 1 [zichtbaar] => 1 [5] => 1 [volgorde] => 1 ) [1] => Array ( [0] => 5 [rubriek_id] => 5 [1] => 3 [parent_id] => 3 [2] => 0 [module_id] => 0 [3] => Nieuws [naam] => Nieuws [4] => 1 [zichtbaar] => 1 [5] => 0 [volgorde] => 0 ) ) [1] => Array ( [0] => 6 [rubriek_id] => 6 [1] => 5 [parent_id] => 5 [2] => 0 [module_id] => 0 [3] => Brieven [naam] => Brieven [4] => 1 [zichtbaar] => 1 [5] => 0 [volgorde] => 0 ) ) |
(Excuses voor het om zeep helpen van de layout
Ik kom er echt niet meer uit. Ik krijg de meest exotische arrays terug, maar niet eentje werkt zoals ik had gehoopt.
Heeft iemand hier een oplossing voor?
"If you see a light at the end of a wormhole, it's probably a photon torpedo!"