Eine MySQL-Tabelle über Links sortieren
![[Bildschirmfoto / Grafik]
Eine MySQL-Tabelle über Links sortieren [Bildschirmfoto / Grafik]
Eine MySQL-Tabelle über Links sortieren](scripts/tabelle_sortieren/tabelle_sortieren.png)
Tabellen haben oft den Nachteil das diese nicht vom Benutzer sortiert werden können, dabei ist es eigentlich ganz einfach, an PHP wird über einem Link nur der Name der DB-Tabellenspalte gesendet und ob diese aufsteigend oder absteigend sortiert werden soll.
Der Link dazu sieht etwa so aus:
datei.php?spalte=datum&sort=asc
Damit nun keine gefährlichen Anweisungen über den Link in unsere DB-Tabelle eingeschleust werden können, nehmen wir ein Array zu Hilfe in dem alle Spalten darin stehen die angezeigt und sortiert werden sollen:
$spalten = array( 'titel', 'autor', 'nachricht', 'datum', );
Nun müssen wir einen Default-Wert für die Spalte $spalte (PHP-Variable) setzen wenn noch nichts über dem Link gesendet wurde:
$spalte = isset($_GET["spalte"]) ? $_GET["spalte"] : 'datum'; // Default-Wert
Dabei ist hier 'datum'
der Default-Wert für die Spalte.
➤
Jetzt überprüfen wir zur Sicherheit ob der gesendete Wert $spalte sich in unserem Array
$spalten befindet, wenn "false" von der in_array()
-Funktion
zurück gegeben wurde, wird der Default-Wert gesetzt:
if (!in_array($spalte, $spalten)) { $spalte = 'datum'; // Default-Wert }
Das gleiche machen wir nun mit $sort, also mit dem die Tabelle aufsteigend oder
absteigend sortiert werden kann. Da es nur zwei Möglichkeiten (asc
und desc
) gibt, schreiben wir das
Array direkt in die Abfrage:
$sort = isset($_GET["sort"]) ? $_GET["sort"] : 'desc'; if (!in_array($sort, array('asc', 'desc'))) { $sort = 'desc'; // Default-Wert }
Jetzt lesen wir die Datensätze von der DB-Tabelle aus, dieses wird hier über die PDO-Schnittstelle gemacht, weitere Infos zu PDO und der MySQL-Datenbank unter » Erster Eintrag in eine MySQL-Datenbank mit PDO
In der Anweisung fügen wir nachORDER BY
die Variablen $spalte und
$sort hinzu.
$db = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', ''); $select = $db->query("SELECT `titel`, `autor`, `nachricht`, `datum` FROM `nachrichten` ORDER BY `" . $spalte . "` " . $sort); $nachrichten = $select->fetchAll(PDO::FETCH_OBJ);
Mit dem folgenden Anweisungen erzeugen wir nun die Links um die Tabelle zu sortieren.
Dabei lesen wir das Array $spalten über eine foreach
-Schleife
aus und verknüpfen die Variablen und die Spalten-Namen zu einem Link.
echo '<table border="1"><tr>'; foreach ($spalten as$spalte) { echo '<th>' . ucfirst($spalte) . ' <a href="?spalte=' .$spalte. '&sort=asc" title="Aufsteigend sortieren">▲</a>' . '<a href="?spalte=' .$spalte. '&sort=desc" title="Absteigend sortieren">▼</a>' . '</th>'; } echo '</tr>';
Nun werden die Daten der sortierten Tabelle noch ausgegeben:
foreach ($nachrichten as $nachricht) { echo '<tr><td>' . $nachricht->titel . '</td>' . '<td>' . $nachricht->autor . '</td>' . '<td>' . $nachricht->nachricht . '</td>' . '<td>' . $nachricht->datum . '</td></tr>'; } echo '</table>';
Demo
Und so sollte das ganze dann in etwa aussehen:

Tipps
- Zeitansage in JavaScript
- Dieses JavaScript gibt die aktuelle Uhrzeit in Worten aus.
- Artikel über Checkboxen auswählen
- Hier können Artikel (Bilder) ausgewählt werden die bestimmte Kriterien der Checkboxen erfüllen. Die Daten werden in einer CSV-Datei gespeichert und können individuell angepasst werden.
- Einfache Kalender mit PHP erstellen
- PHP-Kalender können nützlich sein. Sie können so einfach sein wie das Datum anzeigen oder so komplex wie das Einrichten eines Online-Buchungssystems. Diese beiden PHP-Scripte zeigen wie Sie einfache Kalender erstellen. Wenn Sie wissen, wie das geht, können Sie dieselben Konzepte auf komplexe Kalender anwenden, die Sie möglicherweise benötigen.
- Zeitbalken
- Dieses Script zeigt die vergangene Zeit mit einem farbigen Fortschrittsbalken an. Mit JavaScript oder PHP kann man die vergangene Zeit berechnen lassen und mit CSS wird dann der Fortschrittsbalken farbig angezeigt.
Abonniere meinen RSS-Feed
um über aktuelle Seiten benachrichtigt zu werden.
Key Codes Mimetypen localStorage Rahmen Fotoalbum SQLite Animation Keyframes Parallax Scrolling-Effekt Seitenformatierung Operatoren Authentifizierung Formular Generator EVA-Prinzip Zoom Funktion Wasserzeichen Sicherheit Passwortschutz CSS-Counter Neon Buchstaben Lokaler Webserver Gästebuch Mnemonisches Passwort Mehrfachauswahl Inhaltsverzeichnis