Geneste items opslaan
Zoals je in het vorige hoofdstuk al hebt kunnen zien, is een veel gebruikte toepassing van geneste items een menu opbouw met subpagina's. Als je een CMS hebt, wil je deze pagina’s natuurlijk in een database opslaan, zodat de website dynamisch blijft.
De database tabel maken
De database maken is een kwestie van maar één tabel.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
CREATE TABLE Menu (
pagina_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ouder_id INT UNSIGNED NOT NULL DEFAULT '0',
titel VARCHAR( 100 ) NOT NULL,
PRIMARY KEY (pagina_id)
) ENGINE=InnoDB AUTO_INCREMENT=1
pagina_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
ouder_id INT UNSIGNED NOT NULL DEFAULT '0',
titel VARCHAR( 100 ) NOT NULL,
PRIMARY KEY (pagina_id)
) ENGINE=InnoDB AUTO_INCREMENT=1
Dit is een sterk vereenvoudigde tabel om de pagina’s in op te slaan. Natuurlijk moeten hier in de praktijk ook nog kolommen aan worden toegevoegd met de inhoud van de pagina, maar voor dit voorbeeld zijn die niet nodig.
De auto_increment waarde wordt op 1 gesteld, zodat we er zeker van zijn dat id 0 (nul) niet bestaat. Die waarde reserveren we namelijk als ouder_id voor de root-items.
Pagina's toevoegen
Het toevoegen van pagina’s is erg gemakkelijk. Eén simpele INSERT-query is genoeg.
Als je geen pagina_id invult, krijgt dit de standaard waarde ‘0’ (nul). Een item met deze standaardwaarde komt dus bovenaan de boomstructuur te staan.
Om subpagina’s van deze pagina te maken, vul je ook het ouder_id in.
Een voorbeeld
Ik zal voor de duidelijkheid de query geven om de paginastructuur van het vorige hoofdstuk op te slaan. Allereerst nog even deze paginastructuur.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1. Informatie
a. Nieuws
b. FAQ
i. Wat is PHPhulp?
ii. Auteursrechten
iii. Hoe voeg ik iets toe?
iv. Welke codes kan ik gebruiken?
A. Ignore
B. Teksten
c. Over PHPhulp
2. PHP stuff
a. PHP tutorials
b. PHP scripts
c. PHP boeken
3. Forum
4. Contact
a. Nieuws
b. FAQ
i. Wat is PHPhulp?
ii. Auteursrechten
iii. Hoe voeg ik iets toe?
iv. Welke codes kan ik gebruiken?
A. Ignore
B. Teksten
c. Over PHPhulp
2. PHP stuff
a. PHP tutorials
b. PHP scripts
c. PHP boeken
3. Forum
4. Contact
Om dit toe te voegen kan de volgende query gebruikt worden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
INSERT INTO Menu (pagina_id, ouder_id, titel) VALUES
(1, 0, 'Informatie'),
(2, 1, 'Nieuws'),
(3, 1, 'FAQ'),
(4, 3, 'Wat is PHPhulp?'),
(5, 3, 'Auteursrechten'),
(6, 3, 'Hoe voeg ik iets toe?'),
(7, 3, 'Welke codes kan ik gebruiken?'),
(8, 7, 'Ignore'),
(9, 7, 'Teksten'),
(10, 1, 'Over PHPhulp'),
(11, 0, 'PHP stuff'),
(12, 11, 'PHP tutorials'),
(13, 11, 'PHP scripts'),
(14, 11, 'PHP boeken'),
(15, 0, 'Forum'),
(16, 0, 'Contact')
(1, 0, 'Informatie'),
(2, 1, 'Nieuws'),
(3, 1, 'FAQ'),
(4, 3, 'Wat is PHPhulp?'),
(5, 3, 'Auteursrechten'),
(6, 3, 'Hoe voeg ik iets toe?'),
(7, 3, 'Welke codes kan ik gebruiken?'),
(8, 7, 'Ignore'),
(9, 7, 'Teksten'),
(10, 1, 'Over PHPhulp'),
(11, 0, 'PHP stuff'),
(12, 11, 'PHP tutorials'),
(13, 11, 'PHP scripts'),
(14, 11, 'PHP boeken'),
(15, 0, 'Forum'),
(16, 0, 'Contact')
« vorige pagina | volgende pagina »
Inhoudsopgave
- Inleiding
- Wat zijn geneste items?
- Geneste items opslaan
- Geneste items ophalen
- Opslaan in XML
- Slotwoord en referenties