New Page
8 CRUD Challenge โ Te laat meldingen
๐ฏ 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()enexecute()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
meldingenmet 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.phpwaarin je alle meldingen toont in een HTML-tabel. - Gebruik
require 'connection.php'voor de databaseverbinding. - Gebruik
query()enfetchAll()om gegevens op te halen. - Voeg bovenaan knoppen toe voor โtoevoegenโ en โzoekenโ (optioneel).
Stap 3 โ Create: melding toevoegen
- Maak
create.phpmet een formulier. - Voeg invoervelden toe voor student, klas, minuten en reden.
- Sla de gegevens op met een
INSERT-query viaprepare()enexecute(). - 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.phpeen 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.phpeen 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. |