Skip to main content

New Page

8 CRUD Challenge โ€“ Te laat meldingen

datasource

๐ŸŽฏ Leerdoelen

  • Je kunt een volledige CRUD-toepassing bouwen met PDO en PHP.
  • Je past invoercontrole en gebruikersinteractie toe in formulieren.
  • Je begrijpt en gebruikt prepare() en execute() voor veilige queryโ€™s.

๐Ÿ’ก Uitleg

In deze challenge bouw je een complete toepassing waarin te laat meldingen van studenten worden bijgehouden. Je gebruikt alles wat je hebt geleerd over formulieren, PDO, databaseverwerking en CRUD-operaties.

Het eindresultaat is een overzichtspagina met alle meldingen. Je kunt nieuwe meldingen toevoegen, bestaande meldingen aanpassen en meldingen verwijderen (met bevestiging).

Voorbeeld

Bekijk het voorbeeld op: https://stampwerk.nl. Probeer de knop 'Weer eentje te laat' en kijk wat er gebeurt.

Wat is een CRUD?

CRUD staat voor Create, Read, Update en Delete.

Dit zijn de vier basisbewerkingen op een database:

  • Create: gegevens toevoegen
  • Read: gegevens ophalen en tonen
  • Update: gegevens aanpassen
  • Delete: gegevens verwijderen

In deze opdracht maak je een CRUD-toepassing voor te laat meldingen. Je slaat per melding de volgende gegevens op:

  • naam van de student
  • klas
  • aantal minuten te laat
  • reden van het te laat komen

๐Ÿ› ๏ธ Stappenplan

Stap 1 โ€“ Database maken

  • Maak een database en een tabel meldingen met de volgende velden:
    • id (INT, AUTO_INCREMENT, PRIMARY KEY)
    • student (VARCHAR)
    • klas (VARCHAR)
    • minuten (INT)
    • reden (TEXT)
  • Voeg zelf enkele testregels toe via PHPMyAdmin.

Stap 2 โ€“ Read: overzicht maken

  • Maak read.php waarin je alle meldingen toont in een HTML-tabel.
  • Gebruik require 'connection.php' voor de databaseverbinding.
  • Gebruik query() en fetchAll() om gegevens op te halen.
  • Voeg bovenaan knoppen toe voor โ€œtoevoegenโ€ en โ€œzoekenโ€ (optioneel).

Stap 3 โ€“ Create: melding toevoegen

  • Maak create.php met een formulier.
  • Voeg invoervelden toe voor student, klas, minuten en reden.
  • Sla de gegevens op met een INSERT-query via prepare() en execute().
  • Controleer invoer:
    • geen lege velden
    • minuten is een positief getal
  • Toon een foutmelding bij ongeldige invoer en een succesmelding bij correcte invoer.

Stap 4 โ€“ Delete: melding verwijderen

  • Voeg op read.php een knop โ€œverwijderโ€ toe per rij.
  • Laat deze verwijzen naar delete.php?id=....
  • Toon eerst een bevestigingspagina met de gegevens van de melding.
  • Voer pas na bevestiging de DELETE-query uit.

Stap 5 โ€“ Update

  • Voeg op read.php een knop โ€œwijzigโ€ toe per rij.
  • Laat deze verwijzen naar update.php?id=....
  • Haal de bestaande gegevens op met een SELECT-query.
  • Toon een formulier met ingevulde waarden.
  • Werk de gegevens bij met een UPDATE-query.

๐Ÿง  Reflectie

  • Wat heb je geleerd over het werken met databases in PHP?
  • Wat ging goed en waar liep je tegenaan?
  • Wat zou je de volgende keer anders aanpakken?
  • Hoe zorg je voor veilige verwerking van gebruikersinvoer?

๐Ÿ“ค Inleveren

  • Screenshot van je overzichtspagina (read.php).
  • Screenshot van je invoerpagina (create.php).
  • Screenshot van je wijzigpagina (update.php).
  • Alle PHP-bestanden, SQL-export en eventuele CSS.
  • Een reflectieverslag (.txt of .pdf).
  • Wees voorbereid om je code mondeling toe te lichten.

๐Ÿ“Š Puntentelling

Je moet minimaal 81 van de 100 punten halen om te slagen.

Punten Onderdeel
10 Database: juiste tabel, velden en datatypes.
10 Read: overzicht werkt correct.
10 Layout: duidelijke en verzorgde opmaak.
20 Create: toevoegen werkt inclusief validatie.
10 Validatie: ongeldige invoer wordt afgehandeld.
10 Delete: verwijderen werkt met bevestiging.
20 Update: aanpassen werkt correct.
10 Codekwaliteit & veiligheid: gebruik van prepared statements en nette structuur.