Ik heb al een tijdje geleden een werkend systeem gemaakt om een mooi javascript boompje te bouwen uit een mysql tabel. Deze werkt keurig recursive mbv 2 velden: ID en ID1, waarvan ID1 de koppeling met de parent (ID) is:
Het werkt heel aardig maar ik zou het graag uit wilen breiden met enkele mogelijkheden. Zo is het alleen mogelijk om de desbetreffende records te wijzigen en nieuwe toe te voegen. Na toevoegen wordt ID automatisch opgehoogd en de betreffende parentID wordt ingevuld in ID2
De nieuwe records worden relatief aan ID2 maar met een opgehoogd ID toegevoegd en komen dus altijd onderaan in het treelevel te staan.
Ik wil nu echter de mogelijkheid in bouwen om binnen de childs de records omhoog danwel naar beneden te verplaatsen, met andere woorden de volgorde te veranderen. Het fysiek verplaatsen is geen probleem. Kwestie van ID's omwisselen en zorgen dat de children meeveranderd worden.
Wat ik echter graag zou willen is dat in de tree duidelijk zichtbaar is welke nodes (children) omhoog, danwel naar beneden verplaatst kunnen worden, en wel door middel van een pijltje.
Voorbeeld:
De query waarmee de zaak wordt ingelezen is nu als volgt:
Zoals wel duidelijk zal zijn wordt een array gevuld met de resultaten uit de query. Deze resultaten worden vervolgens met php en javascript in een mooie tree gegoten. De arraywaarden up en down moeten de informatie bevatten of de betreffende node ($a) omhoog, danwel omlaag verplaatst mag worden, wat zichtbaar moet zijn in de vorm van het pijltje in eerder genoemd voorbeeld. De resultaten uit de ene, grote query moeten dus gegroepeerd worden op de een of andere manier. Dit lukt mij niet zonder allerlei extra querys erop los te laten waardoor het geheel buitengewoon inefficient en onoverzichtelijk gaat worden.
Ik heb het idee dat ik langs de oplossing kijk...
code:
etc.1
2
3
4
5
6
7
| id id1 menu_nl 1 0 Hoofdmenu1 2 1 subitem1-1 3 1 subitem1-2 4 0 Hoofdmenu2 5 4 subitem2-1 6 4 subitem2-2 |
Het werkt heel aardig maar ik zou het graag uit wilen breiden met enkele mogelijkheden. Zo is het alleen mogelijk om de desbetreffende records te wijzigen en nieuwe toe te voegen. Na toevoegen wordt ID automatisch opgehoogd en de betreffende parentID wordt ingevuld in ID2
De nieuwe records worden relatief aan ID2 maar met een opgehoogd ID toegevoegd en komen dus altijd onderaan in het treelevel te staan.
Ik wil nu echter de mogelijkheid in bouwen om binnen de childs de records omhoog danwel naar beneden te verplaatsen, met andere woorden de volgorde te veranderen. Het fysiek verplaatsen is geen probleem. Kwestie van ID's omwisselen en zorgen dat de children meeveranderd worden.
Wat ik echter graag zou willen is dat in de tree duidelijk zichtbaar is welke nodes (children) omhoog, danwel naar beneden verplaatst kunnen worden, en wel door middel van een pijltje.
Voorbeeld:
code:
1
2
3
4
5
6
7
| id id1 menu_nl 1 0 Hoofdmenu1 2 1 subitem1-1 v 3 1 subitem1-2 ^ v 4 1 subitem1-3 ^ v 5 1 subitem1-4 ^ v 6 1 subitem1-5 ^ |
De query waarmee de zaak wordt ingelezen is nu als volgt:
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
| $qry1 = "SELECT id, id1, menu_nl, visible, type FROM tabelletje order by id1 asc, id asc"; $result1 = mysql_query($qry1); if (mysql_num_rows($result1)) // Indien resultaat { while($row = mysql_fetch_object($result1)) // Zolang resultaat { $a=0; // Eerste record while ($a < mysql_num_rows($result1)) // Zolang nog records over { $_id = mysql_result($result1, $a, "id"); $_id1 = mysql_result($result1, $a, "id1"); $MenuArray [$a]["id"] = mysql_result($result1, $a, "id"); $MenuArray [$a]["id1"] = mysql_result($result1, $a, "id1"); $MenuArray [$a]["Menu"] = mysql_result($result1, $a, "menu_nl"); $MenuArray [$a]["Link"] = "index.php?object=website&id=$_id"; if(?) $MenuArray [$a]["up"] = "yes"; if(?) $MenuArray [$a]["down"] = "yes"; } ++$a; } } } |
Zoals wel duidelijk zal zijn wordt een array gevuld met de resultaten uit de query. Deze resultaten worden vervolgens met php en javascript in een mooie tree gegoten. De arraywaarden up en down moeten de informatie bevatten of de betreffende node ($a) omhoog, danwel omlaag verplaatst mag worden, wat zichtbaar moet zijn in de vorm van het pijltje in eerder genoemd voorbeeld. De resultaten uit de ene, grote query moeten dus gegroepeerd worden op de een of andere manier. Dit lukt mij niet zonder allerlei extra querys erop los te laten waardoor het geheel buitengewoon inefficient en onoverzichtelijk gaat worden.
Ik heb het idee dat ik langs de oplossing kijk...
[ Voor 8% gewijzigd door klaaz op 31-05-2005 15:05 ]