Opgave 3

Navigatie links en routes aanmaken

Video 01

Maak de gevraagde controllers en views

Voeg aan router.php de routes toe

$route->get('afspraken', "controllers/afspraken.php"); //(1p)
$route->post('afspraak-destroy/{id}', "controllers/afspraak-destroy.php");  //(1p)

Maak een zoekveld

Video 02

Maak in afspraken.view.php een formulier met een datum veld en zoek button

<form action="/afspraken" method="get">
    <input type="date" name="datum" required class="border">
    <input type="submit" value="Zoek" class="border">
</form>

Resultaten tonen

Video 03

Vul de controller afspraken.php met de logica om alle afspraken met de betreffende datum op te halen.

<?php
//database object initialiseren
$db = new Database();

//query uitvoeren (met meerdere resultaten) en opslaan in een variabele $result (array)
$result = $db->query("SELECT afspraken.id, van, tot, voornaam, tussenvoegsel, achternaam 
                        FROM afspraken, klanten 
                        WHERE afspraken.klant_id=klanten.id AND van LIKE ? 
                        ORDER BY van", [
    $request->datum ?? '' . "%"
])->fetchAll();

view('afspraken', [
    'afspraken' => $result
]);

Gebruik in je query een koppeling tussen de afspraken en klanten tabel, want uit beide tabellen wil je gegevens hebben. En maak gebruik van een LIKE om op de betreffende datum te zoeken

Maak in afspraken een loop die door alle afspraken heen gaat en toont

<ul>
    <?php foreach ($afspraken as $afspraak): ?>
        <li>
            <?= $afspraak['voornaam'] . " " . $afspraak['tussenvoegsel'] . " " . $afspraak['achternaam'] . " " . $afspraak["van"] . " " . $afspraak['tot'] ?>
        </li>
    <?php endforeach; ?>
</ul>

Verwijderen van een afspraak

Video 04 met gewone button

Video 05 met bevestigingsbutton

Voeg een verwijder button toe. Het meest eenvoudige is om hier voor de view /parts/delete-button te gebruiken.

<ul>
    <?php foreach ($afspraken as $afspraak): ?>
        <li class="flex gap-4">
            <?= $afspraak['voornaam'] . " " . $afspraak['tussenvoegsel'] . " " . $afspraak['achternaam'] . " " . $afspraak["van"] . " " . $afspraak['tot'] ?>

            <?php
            view('parts/delete-button', [
                'action' => "/afspraak-destroy/" . $afspraak['id']
            ]);
            ?>

        </li>
    <?php endforeach; ?>
</ul>

In de controller afspraak-destroy.php moet het doorvoeren op de database worden toegevoegd.

<?php
$request->validate([
    'id' => 'required'
]);

//database object initialiseren
$db = new Database();

$db->query("DELETE FROM afspraken WHERE id = ?", [
    $request->id
]);

flash('Afspraak verwijderd');

redirect('/afspraken');