Wat leer je deze week?#
In de afgelopen weken heb je geleerd hoe je:
- data toevoegt
- data uitleest
- data aanpast
- data verwijdert
Deze week breng je alles samen in één complete CRUD-app.
Je gaat beter begrijpen hoe alle onderdelen samenwerken en hoe een echte webapplicatie flow heeft tussen formulieren, PHP en de database.
Kernconcepten#
CRUD is eigenlijk de basis van bijna elke webapp.
Denk bijvoorbeeld aan:
- een to-do app
- Instagram posts
- Netflix profielen
- een webshop
- een agenda
Bijna overal gebeurt dit:
iets toevoegen
↓
iets bekijken
↓
iets aanpassen
↓
iets verwijderen
Dat noemen we CRUD.
CRUD staat voor:
Create
Read
Update
Delete
Oftewel:
- iets maken
- iets lezen
- iets aanpassen
- iets verwijderen
Deze week draait vooral om:
“begrijpen hoe alles samenwerkt.”
Wat moet je kennen?#
1. Wat CRUD betekent
Uitleg
CRUD zijn de vier basisacties van een database-applicatie.
Wat moet je kennen
- Create
- Read
- Update
- Delete
- welke SQL-query bij elke actie hoort
Overzicht
| Actie | SQL | Betekenis |
|---|---|---|
| Create | INSERT | Nieuwe data toevoegen |
| Read | SELECT | Data ophalen |
| Update | UPDATE | Data aanpassen |
| Delete | DELETE | Data verwijderen |
Onthoud: Vrijwel elke database-app gebruikt CRUD.
2. De flow van een CRUD-app begrijpen
Uitleg
Een gebruiker doet iets in de browser.
PHP verwerkt die actie en praat met de database.
Wat moet je kennen
- formulieren
- GET en POST
- queries uitvoeren
- redirects gebruiken
Voorbeeldflow
gebruiker vult formulier in
↓
formulier verstuurt data
↓
PHP ontvangt data
↓
query draait
↓
database verandert
↓
redirect
↓
nieuwe data zichtbaar
Onthoud: PHP zit eigenlijk tussen de gebruiker en de database in.
3. Verschillende pagina’s gebruiken
Uitleg
Grote applicaties bestaan meestal uit meerdere bestanden met verschillende verantwoordelijkheden.
Wat moet je kennen
- overzichtspagina
- createpagina
- editpagina
- deletepagina
- includes gebruiken
Voorbeeldstructuur
/includes
db.php
header.php
nav.php
index.php
create.php
edit.php
delete.php
Onthoud: Een duidelijke structuur voorkomt chaos.
4. Redirects gebruiken
Uitleg
Na CREATE, UPDATE of DELETE stuur je de gebruiker meestal terug naar het overzicht.
Wat moet je kennen
header()exit- redirect flow
Voorbeeld
header('Location: index.php');
exit;
Onthoud: Redirects zorgen voor een prettigere flow en voorkomen rare refresh-problemen.
5. CRUD herkennen in een echte applicatie
Uitleg
CRUD zit letterlijk overal op internet.
Voorbeelden
| Situatie | CRUD actie |
|---|---|
| Nieuwe Instagram post maken | Create |
| Posts bekijken | Read |
| Profiel aanpassen | Update |
| Bericht verwijderen | Delete |
Onthoud: CRUD is niet alleen een schoolding. Dit is hoe echte apps werken.
Veelgemaakte fouten (met voorbeelden)#
1. CRUD-acties door elkaar halen
Soms gebruiken studenten per ongeluk de verkeerde query voor een actie.
Fout
UPDATE items
om data op te halen.
Beter
SELECT * FROM items
2. Alles in één gigantisch bestand zetten
Dan wordt je project heel snel onoverzichtelijk.
Fout
index.php doet:
- create
- read
- update
- delete
- login
- alles 😭
Beter
index.php
create.php
edit.php
delete.php
3. Geen redirects gebruiken
Dan blijven gebruikers op rare tussenpagina’s hangen.
Fout
echo "Opgeslagen!";
Beter
header('Location: index.php');
exit;
4. GET en POST door elkaar halen
GET gebruik je meestal voor:
- pagina’s openen
- ids meesturen
POST gebruik je meestal voor:
- data aanpassen
- formulieren versturen
Fout
$title = $_GET['title'];
Beter
$title = $_POST['title'] ?? '';
5. Geen WHERE gebruiken bij UPDATE of DELETE
Dan verander of verwijder je ALLES.
Fout
DELETE FROM items
Beter
DELETE FROM items
WHERE id = ?
Snippets#
CREATE query
$stmt = $pdo->prepare("
INSERT INTO items (title)
VALUES (?)
");
$stmt->execute([$title]);
READ query
$stmt = $pdo->query("
SELECT * FROM items
");
$items = $stmt->fetchAll(PDO::FETCH_ASSOC);
UPDATE query
$stmt = $pdo->prepare("
UPDATE items
SET title = ?
WHERE id = ?
");
$stmt->execute([$title, $id]);
DELETE query
$stmt = $pdo->prepare("
DELETE FROM items
WHERE id = ?
");
$stmt->execute([$id]);
Redirect gebruiken
header('Location: index.php');
exit;