Ik heb de volgende tabel genaamd 'tree':

Ik heb een functie geschreven waarmee ik een willekeurig deel van de tree naar het scherm kan schrijven:
Dit geeft als output:
So far so good. Maar nu wil ik een tree laten zien die alleen uitgeklapt is tussen de root en de huidige pagina om weer bij de top te komen. Stel dat iemand naar http://www.mijnsite.com/pagina.php?id=7 ('content management') gaat. Dan wil ik laten zien:
En als hij dan doorklikt naar id=9 ('cool cms') dan moet de tree zijn:
Laatste voorbeeld. Als iemand op 'weblog klikt', moet de navigatie zijn:
Dit alles is afgeleid van de navigatie op http://www.ibm.com. Hieronder een screenshot van http://www-1.ibm.com/busi...us/industries/wholesale/:

Nu ben ik begonnen met het schrijven van de benodigde code, maar ik zie door de bomen het bos niet meer:
Ik zit er nu al uren op, zonder resultaat. Kan iemand mij op weg helpen?
Overigens, ik heb al vele GoT draadjes erop nagelezen, en in elke 'tree' verwante discussie verwijst iemand naar het artikel op sitepoint (Modified Preorder Tree Traversal). Dat artikel ken ik, maar wil desondanks met dit adjacency list model doorgaan. Ook heeft het downloaden van php scripts die dhtml functies vullen voor een dropdown menu me niet verder geholpen.
P.S: Trouwens -- is GoT de laatste dagen nu zo langzaam of is dat alleen bij mij?

Ik heb een functie geschreven waarmee ik een willekeurig deel van de tree naar het scherm kan schrijven:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| function display_tree($parent, $level) { $result = db_query('SELECT node_id, node_name FROM tree WHERE node_pid = "'.$parent.'";', 0, 0); while ($row = db_fetch_array($result)) { echo str_repeat(' ',$level).$row['node_name']."<br>"; display_tree($row['node_id'], $level+1); } } // Laat tree vanaf 'root' node zien display_tree(0,0); |
Dit geeft als output:
HTML:
1
2
3
4
5
6
7
8
9
| root
producten
content management
cool cms
not so cool cms
shopping cart
diensten
weblog
contact |
So far so good. Maar nu wil ik een tree laten zien die alleen uitgeklapt is tussen de root en de huidige pagina om weer bij de top te komen. Stel dat iemand naar http://www.mijnsite.com/pagina.php?id=7 ('content management') gaat. Dan wil ik laten zien:
HTML:
1
2
3
4
5
6
7
| root
producten
> content management
shopping cart
diensten
weblog
contact |
En als hij dan doorklikt naar id=9 ('cool cms') dan moet de tree zijn:
HTML:
1
2
3
4
5
6
7
8
9
| root
producten
content management
> cool cms
not so cool cms
shopping cart
diensten
weblog
contact |
Laatste voorbeeld. Als iemand op 'weblog klikt', moet de navigatie zijn:
HTML:
1
2
3
4
5
| root producten diensten > weblog contact |
Dit alles is afgeleid van de navigatie op http://www.ibm.com. Hieronder een screenshot van http://www-1.ibm.com/busi...us/industries/wholesale/:

Nu ben ik begonnen met het schrijven van de benodigde code, maar ik zie door de bomen het bos niet meer:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
| // Lees id uit querystring: $get_id if (isset ($_GET['id'])) { $get_id = $_GET['id']; } else { $get_id = $_SITE['rootnode_id']; } // Vraag de properties van $get_id op $qry_get_props = "SELECT node_pid, node_name FROM tree WHERE node_id = '".$get_id."' LIMIT 1"; $res_get_props = db_query($qry_get_props, 1, 0); $row_get_props = db_fetch_array($res_get_props); // Vraag alle nodes op die dezelfde parent id hebben als $get_id $gry_get_sis = "SELECT node_id, node_name FROM tree WHERE node_pid = '".$row_get_props['node_pid']."'"; $res_get_sis = db_query($gry_get_sis, 1, 0); $num_get_sis = db_num_rows($res_get_sis); // Vraag het pad op naar de rootnode: //... // Schrijf navigatie naar het scherm //... |
Ik zit er nu al uren op, zonder resultaat. Kan iemand mij op weg helpen?
Overigens, ik heb al vele GoT draadjes erop nagelezen, en in elke 'tree' verwante discussie verwijst iemand naar het artikel op sitepoint (Modified Preorder Tree Traversal). Dat artikel ken ik, maar wil desondanks met dit adjacency list model doorgaan. Ook heeft het downloaden van php scripts die dhtml functies vullen voor een dropdown menu me niet verder geholpen.
P.S: Trouwens -- is GoT de laatste dagen nu zo langzaam of is dat alleen bij mij?
[ Voor 19% gewijzigd door Reveller op 28-10-2006 15:04 ]
"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."