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)
PHP script in nieuw venster Selecteer het PHP script
1
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

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO Menu (titel) VALUES ('Pagina 1')

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
INSERT INTO Menu (ouder_id, titel) VALUES (1, 'Subpagina 1')


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)
PHP script in nieuw venster Selecteer het PHP script
1
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

Om dit toe te voegen kan de volgende query gebruikt worden.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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')

« Lees de omschrijving en reacties

Inhoudsopgave

  1. Inleiding
  2. Wat zijn geneste items?
  3. Geneste items opslaan
  4. Geneste items ophalen
  5. Opslaan in XML
  6. Slotwoord en referenties

PHP tutorial opties

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.