Vorwort

Diese Anleitung wurde für Schulungszwecke erstellt, weshalb einiges nicht als fertiger Code zur Verfügung steht. Es soll keine Copy-Paste-Übung werden 😅

Sollte etwas unverständlich oder inkorrekt sein, bitte ich um Feedback um es beheben zu können. Nobody is perfect.

In diesem kleinen Projekt, werden noch keine Abhängigkeiten in der Datenbank berücksichtigt. Das Einbauen der Kategorien folgt in einem der weiteren Teile.
Wenn ich von „Meinem Design/Startseite“ spreche, erkläre ich damit mein Layout, was bei euch natürlich wieder anders aussehen bzw. gelöst werden kann.

Vorbereitung

Die Datenbank

Eine Tabelle 'content' mit den Spalten
id, title, description, teaser, imgpath, created_at

Eine Tabelle 'users' mit den Spalten
id, username, email, password, forename, familyname, created_at

Erstell auch einen Testeintrag in der 'content'-Tabelle in der Datenbank

username und email haben einen Schlüssel dabei, da sie auf „unique“ gesetzt sind in der Datenbank. Bedeutet: dürfen nur einmal vorkommen.

inc/login.inc.php

Die index.php

Die index.php besteht aus einer grundlegenden HTML Struktur. In meinem Beispiel (siehe linker Screenshot) binde ich Bootstrap ein und tausche hier auch gleich die jQuery Versionen aus. Wenn man Bootstrap von der offiziellen Seite einbindet, wird die jQuery Slim Version verwendet. Prinzipiell keine schlechte Idee, sofern man nicht mit Ajax arbeiten will. Daher den Link austauschen durch die minified Version von jQuery.
Außerdem arbeite ich gern mit Icons, weshalb ich mir den CDN Link für Fontawesome hole.
Um nicht die üblichen Verdächtigen bei den Schriften nehmen zu müssen, binde ich über Google Font zwei Schriften ein. Eine Handschrift für die Überschriften und eine gut lesbare (z.B.: Raleway, …). Das deklarier ich dann auch in meinem ‚css/custom.css‘.

Mein Design beginnt mit einem Slider von Bootstrap und Bildern von, da es ein Übungsprojekt ist, Unsplash (Achtung, die Bilder sollten für den Slider im Querformat sein und die selbe Abmessung haben sonst kann es sein, dass die Seite zu hüpfen anfängt), einem animierten Einführungstext (schöne Erklärung dazu von den Kulturbanausen) und den Wiki Einträge, dargestellt mit der Card Column von Bootstrap, die in einer Div-Box mit der Klasse container eingebettet ist.

inc/head.inc.php

Grundgerüst index.php

Um die Daten aus der Datenbank laden zu können, muss das login.inc.php eingebunden werden. PHP hat hierzu die Funktion include();
include('inc/login.inc.php');

Jetzt zu den Datensätzen. Auf der Startseite benötigen wir vorerst mal die id, title, teaser, imgpath. Das Ergebnis wird in eine Variable gespeichert.

$result = $con->query("SELECT id, title, teaser, imgpath FROM content");

Mit var_dump($result); können wir uns anschauen was sich da drin befindet.
Hier seht ihr jetzt ein Objekt. Dieses Objekt zeigt, dass wir 4 Felder haben und (ich hab ein paar mehr Daten schon in der Datenbank) acht Datensätze vorhanden sind.
Um diese Datensätze anzuzeigen brauchen wir eine while-Schleife.
Mit fetch_assoc() wird eine Zeile aus dem Objekt abgerufen und als assoziatives Array in die Variable $entry abgespeichert.
Erklärungen zu den Unterschieden zu: PHP Mysql Fetch Association Vs Fetch Array Vs Fetch Object Performance Analysis