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."