Opgave - Een post tonen op de homepagina

Opgave I1.1 - controller aanmaken

We gaan nu even testen of onze database connectie werkt en of we gegevens uit de database kunnen halen.

Hiervoor voegen we aan onze controllers/home.php de code toe om de meest recente post uit de database op te halen.

<?php

$db = new Database();
$post = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT 1")->fetch();

view("home", [
    'post' => $post,
]);

Verklaring:
We starten met PHP code

<?php

We maken een database object aan met variabele naam $db (kies hiervoor een logische naam)

$db = new Database();

We gebruiken onze database object om een query op de database uit te voeren. We selecteren in dit geval de meest recente "post" en stoppen dit in $result.

$post = $db->query("SELECT * FROM posts ORDER BY id DESC LIMIT 1")->fetch();

$post is nu een array met keys en values. De key's zijn de kolomnamen uit de tabel "posts" de values zijn de gegevens die bij de laatste "post" staan. De titel van de geselecteerde post is dan bv $post['title']

Daarna geven we de gegevens mee aan de view. In onze view zal nu $post als variabele bestaan.

 

PHP sluiten we alleen af als er nog andere code volgt. Anders laten we dit weg. Dus nu laten ?> kan weggelaten worden.

 

Uitwerking:

app/controllers/home.php

 

Opgave I1.2 - view aanmaken

View home.view.php

We openen het bestand app/views/home.view.php en wijzigen de code in het volgende.

<?php
view("parts/header", ['title' => 'home']);
view("parts/navigatie-menu");
?>

    <div class="sm:mx-10">
        <h1 class="text-3xl my-4">Home</h1>

        <div class="border border-1 rounded p-4 bg-gray-50">
            <h2 class="font-bold"><?= $post['title'] ?></h2>
            <?= $post['content'] ?>
        </div>
    </div>

<?php
view("parts/footer");

Verklaring:

Om het er een beetje uit te laten zien wordt tailwindcss gebruikt voor de opmaak.
- een rand die een beetje rond is border border-1 rounded
- padding van 4px p-4
- lichtgrijze achtergrond bg-gray-50

De gegevens uit de database worden getoond door

<?= $post['title'] ?>

Dit is een snel notatie voor

<?php echo $post['title']; ?>

Met als resultaat

http://localhost

Uiteraard mag je de opmaak ook zelf vormgeven. Probeer wat met de tailwindcss te spelen, zodat het eruit komt te zien als jij graag zou willen.

Uitwerking:

app/views/home.view.php