Wat leer je deze week?

In periode 3 kon je items toevoegen en tonen.

In week 2 leerde je hoe je bestaande items aanpast.

Deze week maak je jouw CRUD-app compleet door items te verwijderen uit de database.

Je leert hoe een deleteflow werkt, waarom een WHERE super belangrijk blijft en waarom delete-acties best gevaarlijk kunnen zijn.

Kernconcepten (in normale mensentaal)

DELETE betekent eigenlijk:

“haal deze rij weg uit de database.”

Stel: iemand heeft per ongeluk een dubbele huiswerkopdracht toegevoegd.

Dan wil je dat item kunnen verwijderen.

Dat werkt meestal zo:

gebruiker klikt op verwijderen
↓
id gaat mee in de URL
↓
PHP leest het id uit
↓
DELETE query draait
↓
item verdwijnt uit database
↓
redirect terug naar overzicht

Belangrijk:

een DELETE query verwijdert data echt uit de database.

Dus:

  • geen undo knop
  • geen prullenbak
  • gone = gone 😭

Wat moet je kennen?

1. Een delete link maken

Uitleg
Op je overzichtspagina toon je meerdere items.
Bij elk item maak je een link waarmee je het juiste id meestuurt.

Wat moet je kennen

  • <a href="">
  • ?id=...
  • associative arrays uitlezen

Voorbeeld

<a href="delete.php?id=<?= $item['id'] ?>">
    Verwijderen
</a>

Onthoud: Zonder id weet PHP niet welk item verwijderd moet worden.

2. Het id uitlezen met GET

Uitleg
Het id komt binnen via de URL.
PHP leest dit uit met $_GET.

Wat moet je kennen

  • $_GET
  • ?? ''
  • query strings

Voorbeeld

$id = $_GET['id'] ?? '';

Onthoud: GET-data staat in de URL en is zichtbaar voor de gebruiker.

3. Een DELETE query schrijven

Uitleg
Met DELETE verwijder je een rij uit een database.

Wat moet je kennen

  • DELETE FROM
  • WHERE
  • prepared statements
  • placeholders ?

Voorbeeld

$stmt = $pdo->prepare("
    DELETE FROM items 
    WHERE id = ?
");

$stmt->execute([$id]);

Onthoud: WHERE bepaalt welke rij verwijderd wordt.

4. Waarom WHERE levensreddend is

Uitleg
Zonder WHERE verwijdert de database ALLE rijen uit de tabel.

Ja. Echt alles 😭

Voorbeeld

❌ Zonder WHERE

DELETE FROM items

Resultaat:

De hele tabel is leeg.

✅ Met WHERE

DELETE FROM items
WHERE id = 3

Resultaat:

Alleen item 3 wordt verwijderd.

Onthoud: Een DELETE zonder WHERE is gevaarlijk.

5. Redirect gebruiken na DELETE

Uitleg
Na het verwijderen stuur je de gebruiker meestal terug naar het overzicht.

Wat moet je kennen

  • header()
  • exit
  • redirect flow

Voorbeeld

header('Location: index.php');
exit;

Onthoud: De gebruiker hoeft niet op een lege deletepagina te blijven hangen.

Veelgemaakte fouten (met voorbeelden)

1. DELETE zonder WHERE gebruiken

Dit is de grootste ramp van deze week 😭

Fout

DELETE FROM items

Beter

DELETE FROM items
WHERE id = ?

2. Het id niet meesturen in de link

Dan weet PHP niet welk item verwijderd moet worden.

Fout

<a href="delete.php">
    Verwijderen
</a>

Beter

<a href="delete.php?id=<?= $item['id'] ?>">
    Verwijderen
</a>

3. $_GET['id'] gebruiken zonder fallback

Dan krijg je warnings als het id ontbreekt.

Fout

$id = $_GET['id'];

Beter

$id = $_GET['id'] ?? '';

4. De query uitvoeren zonder prepare

Directe queries zijn minder veilig en moeilijker uitbreidbaar.

Fout

$pdo->query("DELETE FROM items WHERE id = $id");

Beter

$stmt = $pdo->prepare("
    DELETE FROM items 
    WHERE id = ?
");

$stmt->execute([$id]);

5. Geen redirect gebruiken na DELETE

Dan blijft de gebruiker op een losse deletepagina hangen.

Fout

echo "Verwijderd!";

Beter

header('Location: index.php');
exit;

Snippets

ID uitlezen uit URL

$id = $_GET['id'] ?? '';

Delete link maken

<a href="delete.php?id=<?= $item['id'] ?>">
    Verwijderen
</a>

DELETE query uitvoeren

$stmt = $pdo->prepare("
    DELETE FROM items 
    WHERE id = ?
");

$stmt->execute([$id]);

Redirect gebruiken

header('Location: index.php');
exit;

Checken of item bestaat

if (!$item) {
    echo "Item niet gevonden.";
    exit;
}

Video (coming soon)

Video komt eraan

Zodra de uitlegvideo beschikbaar is, wordt alleen de YouTube-ID vervangen.