We maken de benodigde bestanden aan
Toevoegen link aan navigatie-menu.view.php
<a href="/afspraak-create" class="<?= isUri("afspraak-create") ? 'underline ' : '' ?>text-gray-300 hover:bg-gray-700 hover:text-white px-3 py-2 rounded-md font-medium">Afspraak maken</a>
Maak in router.php de volgende routes
$route->get('afspraak-create', "controllers/afspraak-create.php"); //(1p) $route->post('afspraak-store', "controllers/afspraak-store.php"); //(1p)
Maak in afspraak-create-view.php het formulier met de benodigde velden
<form action="/afspraak-store" method="post"> <?= csrf() ?> <select name="klant_id" class="border"> <?php foreach ($klanten as $klant): ?> <option value="<?= $klant['id'] ?>"> <?= $klant['voornaam'] ?> <?= $klant['tussenvoegsel'] ?> <?= $klant['achternaam'] ?> </option> <?php endforeach; ?> </select><br> Datum <input type="date" class="border" name="datum" placeholder="Datum" value="<?= old('datum') ?>"><br><!-- 1p --> Van tijd<input type="time" class="border" name="van" placeholder="van" value="<?= old('van') ?>"><br><!-- 1p --> Tot tijd<input type="time" class="border" name="tot" placeholder="Tot" value="<?= old('tot') ?>"><br><!-- 1p --> <textarea name="opmerking" class="border" placeholder="Opmerkingen"><?=old('opmerking')?></textarea><br><!-- 2p --> <input type="submit" class="border" value="Opslaan"><!-- 1p --> </form>
Vul de controller afspraak-store.php zodat een afspraak opgeslagen wordt in de database
<?php $request->validate([ 'datum' => 'required', //1p 'van' => 'required', //1p 'tot' => 'required', //1p 'klant_id' => 'required', //1p ]); $db = new Database(); $db->query("INSERT INTO afspraken (van, tot, klant_id, opmerking) VALUES (?, ?, ?, ?)", [ $request->datum . " " . $request->van, $request->datum . " " . $request->tot, $request->klant_id, $request->opmerking, ]); flash("Afspraak is gemaakt", true, 3000); redirect("/afspraak-create");
Voeg de validatie meldingen toe aan afspraak-create.view.php
<form action="/afspraak-store" method="post"> <?= csrf() ?> <select name="klant_id" class="border"> <?php foreach ($klanten as $klant): ?> <option value="<?= $klant['id'] ?>"> <?= $klant['voornaam'] ?> <?= $klant['tussenvoegsel'] ?> <?= $klant['achternaam'] ?> </option> <?php endforeach; ?> </select><br> Datum <input type="date" class="border" name="datum" placeholder="Datum" value="<?= old('datum') ?>"><br><!-- 1p --> <?php if (errors('datum')): ?> <p class="text-red-500 text-sm my-2"><?= errors('datum') ?></p> <?php endif; ?> Van tijd<input type="time" class="border" name="van" placeholder="van" value="<?= old('van') ?>"><br><!-- 1p --> <?php if (errors('van')): ?> <p class="text-red-500 text-sm my-2"><?= errors('van') ?></p> <?php endif; ?> Tot tijd<input type="time" class="border" name="tot" placeholder="Tot" value="<?= old('tot') ?>"><br><!-- 1p --> <?php if (errors('tot')): ?> <p class="text-red-500 text-sm my-2"><?= errors('tot') ?></p> <?php endif; ?> <textarea name="opmerking" class="border" placeholder="Opmerkingen"><?=old('opmerking')?></textarea><br><!-- 2p --> <input type="submit" class="border" value="Opslaan"><!-- 1p --> </form>
Een selectbox option wordt standaard geselecteerd met de tekst 'selected' als attribute
<option value="1" selected>Piet</option>
Dus wij willen de tekst 'selected' toevoegen als de klant uit de loop overeen komt met de klant die was geselecteerd.
<?= ($klant['id'] == old('klant_id') ? 'selected' : '') ?>
De volledige code wordt dan
<select name="klant_id" class="border"> <?php foreach ($klanten as $klant): ?> <option <?= ($klant['id'] == old('klant_id') ? 'selected' : '') ?> value="<?= $klant['id'] ?>"> <?= $klant['voornaam'] ?> <?= $klant['tussenvoegsel'] ?> <?= $klant['achternaam'] ?> </option> <?php endforeach; ?> </select><br>