Voeg toe in /views/parts/navigatie-menu.view.php
<a href="/klanten" class="<?= isUri("klanten") ? 'underline ' : '' ?>text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md font-medium">klanten</a>
Maak de bestanden
In onze router.php voegen we een route toe naar klanten.php
$route->get('klanten', "controllers/klanten.php");
Haal in de controller klanten.php alle klanten op uit de database en geef mee met de view
<?php $db = new Database(); $result = $db->query("SELECT * FROM klanten ORDER BY achternaam")->fetchAll(); view('klanten', [ 'klanten' => $result ]);
In klanten.view.php maak je een loop door alle klanten heen en schrijft ze op het scherm
<ul> <?php foreach ($klanten as $klant): ?> <li> <?= $klant["voornaam"] . " " . $klant['tussenvoegsel'] . " " . $klant['achternaam'] ?> </li> <?php endforeach; ?> </ul>
Voeg een <a href toe zodat een klant klikbaar wordt. Of voeg een button toe achter/onder de klant.
Zorg ervoor dat er wordt verwezen naar /klanten-edit/<klant_id>
<ul> <?php foreach ($klanten as $klant): ?> <li> <a href="/klanten-edit/<?= $klant['id'] ?>" class="text-indigo-600"> <?= $klant["voornaam"] . " " . $klant['tussenvoegsel'] . " " . $klant['achternaam'] ?> </a> </li> <?php endforeach; ?> </ul>
Route toevoegen aan router.php
$route->get('klanten-edit/{id}', "controllers/klanten-edit.php");
In de controller klanten-edit.php de klant gegevens ophalen
<?php $request->validate([ 'id' => 'required' ]); $db = new Database(); $result = $db->query("SELECT * FROM klanten WHERE id=?", [ $request->id ])->fetch(); view('klanten-edit', [ 'klant' => $result ]);
In klanten-edit.view.php maken we het wijzigingsformulier
<form action="/klanten-update/<?= $klant['id'] ?>" method="post"> <?= csrf() ?> <input type="text" name="voornaam" placeholder="Voornaam" value="<?= old('voornaam', $klant['voornaam']) ?>" class="border"><br> <input type="text" name="tussenvoegsel" placeholder="Tussenvoegsel" value="<?= old('tussenvoegsel', $klant['tussenvoegsel']) ?>" class="border"><br> <input type="text" name="achternaam" placeholder="Achternaam" value="<?= old('achternaam', $klant['achternaam']) ?>" class="border"><br> <input type="text" name="telefoonnr" placeholder="Telefoonnr" value="<?= old('telefoonnr', $klant['telefoonnr']) ?>" class="border"><br> <input type="submit" value="Opslaan" class="border"> </form>
Het formulier heeft vier tekst velden (voornaam, tussenvoegsel, achternaam, telefoonnr)
Als value gebruiken we old(... verstuurde waarde, ...waarde uit database)
In controller klanten-update.php gaan we validatie doen en de wijziging in de database doorvoeren.
<?php $request->validate([ 'id' => 'required', 'voornaam' => 'required|min:2|max:50', 'achternaam' => 'required|max:50', 'telefoonnr' => 'max:15', ]); //database object initialiseren $db = new Database(); $db->query("UPDATE klanten SET voornaam =:voornaam, tussenvoegsel=:tussenvoegsel,achternaam=:achternaam,telefoonnr=:telefoonnr WHERE id = :id", [ 'voornaam' => $request->voornaam, 'achternaam' => $request->achternaam, 'tussenvoegsel' => $request->tussenvoegsel, 'telefoonnr' => $request->telefoonnr, 'id' => $request->id ]); flash('Klant gegevens gewijzigd'); redirect('/klanten');
In het formulier klanten-edit.view.php voegen we validatie meldingen toe. Dit doen we in elk geval bij voornaam en achternaam, maar ook zeker bij tussenvoegsel en telefoonnr.
<form action="/klanten-update/<?= $klant['id'] ?>" method="post"> <?= csrf() ?> <input type="text" name="voornaam" placeholder="Voornaam" value="<?= old('voornaam', $klant['voornaam']) ?>" class="border"><br> <?php if (errors('voornaam')): ?> <p class="text-red-500 text-sm my-2"><?= errors('voornaam') ?></p> <?php endif; ?> <input type="text" name="tussenvoegsel" placeholder="Tussenvoegsel" value="<?= old('tussenvoegsel', $klant['tussenvoegsel']) ?>" class="border"><br> <input type="text" name="achternaam" placeholder="Achternaam" value="<?= old('achternaam', $klant['achternaam']) ?>" class="border"><br> <?php if (errors('achternaam')): ?> <p class="text-red-500 text-sm my-2"><?= errors('achternaam') ?></p> <?php endif; ?> <input type="text" name="telefoonnr" placeholder="Telefoonnr" value="<?= old('telefoonnr', $klant['telefoonnr']) ?>" class="border"><br> <input type="submit" value="Opslaan" class="border"> </form>