Stappenplan
In de router.php
$route->get('items-edit/{id}', 'controllers/items-edit.php'); $route->post('items-update/{id}', 'controllers/items-update.php');
In controller items-edit.php
<?php $request->validate([ 'id' => 'required' ]); $db = new Database(); view('items-edit', [ 'item' => $db->query("SELECT * FROM items WHERE id=:id", [ "id"=>$request->id ])->fetch() ]);
In view items-edit.view.php
Zonder validatie
<?php view("parts/header", ['title' => 'item wijzigen']); view("parts/navigatie-menu"); ?> <h1 class="text-3xl my-4">Item <?= $item['naam'] ?> wijzigen</h1> <form action="/items/<?= $item['id'] ?>" method="post"> <?= csrf(); ?> <?= method_put() ?> <label for="naam">Naam</label><br> <input type="text" name="naam" id="naam" placeholder="naam" value="<?= old('naam', $item['naam']) ?>"><br> <label for="beschrijving">Beschrijving</label><br> <textarea name="beschrijving" id="beschrijving" cols="30" rows="3" placeholder="beschrijving"><?= old('beschrijving', $item['beschrijving']) ?></textarea> <br> <label for="prijs">Prijs</label><br> <input type="number" step="0.01" name="prijs" id="prijs" placeholder="prijs" value="<?= old('prijs', $item['prijs']) ?>"> <br> <input type="submit" value="Wijzigen" class="border b-gray-600 rounded py-1 px-2 hover:bg-gray-100 cursor-pointer"> </form> <?php view("parts/footer");
Met validatie
<?php view("parts/header", ['title' => 'item wijzigen']); view("parts/navigatie-menu"); ?> <h1 class="text-3xl my-4">Item <?= $item['naam'] ?> wijzigen</h1> <form action="/items-update/<?= $item['id'] ?>" method="post"> <?= csrf(); ?> <label for="naam">Naam</label><br> <input type="text" name="naam" id="naam" placeholder="naam" value="<?= old('naam', $item['naam']) ?>"> <?php if (errors('naam')): ?> <p class="text-red-500 text-sm my-2"><?= errors('naam') ?></p> <?php endif; ?> <br> <label for="beschrijving">Beschrijving</label><br> <textarea name="beschrijving" id="beschrijving" cols="30" rows="3" placeholder="beschrijving"><?= old('beschrijving', $item['beschrijving']) ?></textarea> <?php if (errors('beschrijving')): ?> <p class="text-red-500 text-sm my-2"><?= errors('beschrijving') ?></p> <?php endif; ?> <br> <label for="prijs">Prijs</label><br> <input type="number" step="0.01" name="prijs" id="prijs" placeholder="prijs" value="<?= old('prijs', $item['prijs']) ?>"> <?php if (errors('prijs')): ?> <p class="text-red-500 text-sm my-2"><?= errors('prijs') ?></p> <?php endif; ?> <br> <input type="submit" value="Wijzigen" class="border b-gray-600 rounded py-1 px-2 hover:bg-gray-100 cursor-pointer"> </form> <?php view("parts/footer");
In controller items-update.php
<?php //validatie van de gegevens $request->validate([ 'naam' => 'required|length:0,50', 'prijs' => 'required|numeric|between:0.01,1000000' ]); //wijzigen doorvoeren $db = new Database(); $db->query("UPDATE items SET naam = :naam, beschrijving = :beschrijving, prijs = :prijs WHERE id = :id", [ 'naam' => $request->naam, 'beschrijving' => $request->beschrijving, 'prijs' => $request->prijs, 'id' => $request->id, ]); flash("Item " . $request->naam . " is gewijzigd"); //terugsturen naar de detail pagina van het item redirect("/items-show/" . $request->id);
Test wijzigen ga naar http://localhost/items-edit/1