Ik heb de volgende code:
Met deze functie bepaal ik recursief het pad van een node in de tree naar de rootnode. Zie hieronder een stuk van de tabel "nodes":
Door het aanroepen van bijvoorbeeld path(10) krijg ik:
Ik probeer nu al een tijdje om de path() functie uit te breiden zodat ik de volgende output krijg:
Ik kom hier echter helemaal niet uit. Kan iemand mij op weg helpen?
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
| function path($nid, $level=0) { global $path; $result = db_query("SELECT pid FROM nodes WHERE nid = %d", $nid); if ($level == 0) $path[] = $nid; if (db_num_rows($result) == 0) { if ($level == 0) { $path[0] = 1; $path[1] = 0; } } else { $pid = db_result($result, 0); $path[] = $pid; if ($pid != 0) { path($pid, $level+1); } } } |
Met deze functie bepaal ik recursief het pad van een node in de tree naar de rootnode. Zie hieronder een stuk van de tabel "nodes":
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| +-----+-----+-------------+--------------------+ | nid | pid | title | alias | +-----+-----+-------------+--------------------+ | 1 | 0 | Home | over | +-----+-----+-------------+--------------------+ | 2 | 1 | Over Ons | oplossingen | +-----+-----+-------------+--------------------+ | 4 | 1 | Oplossingen | | +-----+-----+-------------+--------------------+ | 7 | 1 | Contact | | +-----+-----+-------------+--------------------+ | 10 | 7 | Gastenboek | contact/gastenboek | +-----+-----+-------------+--------------------+ | 58 | 2 | Testpagina | | +-----+-----+-------------+--------------------+ | 59 | 1 | Sitemap | sitemap | +-----+-----+-------------+--------------------+ |
Door het aanroepen van bijvoorbeeld path(10) krijg ik:
code:
1
2
3
4
5
6
7
| Array ( [0] => 10 [1] => 7 [2] => 1 [3] => 0 ) |
Ik probeer nu al een tijdje om de path() functie uit te breiden zodat ik de volgende output krijg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
| (in de functie path() natuurlijk aanpassen: $result = db_query("SELECT pid, title, alias FROM nodes WHERE nid = %d", $nid)) Array ( [0] => Array ( [nid] => 10 [title] => Gastenboek [alias] => contact/gastenboek ) [1] => Array ( [nid] => 7 [title] => Contact [alias] => ) [2] => Array ( [nid] => 1 [title] => Home [alias] => ) ) |
Ik kom hier echter helemaal niet uit. Kan iemand mij op weg helpen?
"Real software engineers work from 9 to 5, because that is the way the job is described in the formal spec. Working late would feel like using an undocumented external procedure."