NOF-Forum | Referenzen | Kontakt | Impressum | Sitemap
nach dem Tutorial MySQL Tabelle sortieren von Webbausteine.de - hier nach Datum sortiert
Bitte guckt Euch das Tutorial von Webbausteine.de für alle Erklärungen genau an. Ich zeige hier lediglich das veränderte Skript zur Anzeige der Datenbank und markiere meine Änderungen zum Sortieren hier blau, sowie den Einbau der Links in NOF.
<?php
// Verbindung zur Datenbank aufbauen
include "verbindung.php";
// Anzeige der Datensätze (Nachrichten) pro Seite
$DatensaetzeSeite = 3;
// EDIT Beginn - Tommy - zum auf- oder absteigend Sortieren mittels Link
// Array zum sortieren erstellen
$spalten = array(
'titel',
'autor',
'nachricht',
'datum',
);
// Default-Wert für 'spalte' erstellen für den ersten Aufruf wenn noch nichts über den Link gesendet wurde
$spalte = isset($_GET["spalte"]) ? $_GET["spalte"] : 'datum';
// Default-Wert überprüfen
if (!in_array($spalte, $spalten)) {
$spalte = 'datum'; // Default-Wert
}
// Default-Wert für 'sort' erstellen für den ersten Aufruf wenn noch nichts über den Link gesendet wurde
$sort = isset($_GET["sort"]) ? $_GET["sort"] : 'desc';
// Default-Wert überprüfen
if (!in_array($sort, array('asc', 'desc'))) {
$sort = 'desc'; // Default-Wert
}
// EDIT Ende - Tommy - zum auf- oder absteigend Sortieren mittels Link
// Anzahl der Datensätze ermitteln
$select = $VERBINDUNG->query("SELECT `id` FROM `nachrichten` WHERE `anzeige` = '1'");
$AnzahlDatensaetze = $select->rowCount();
if ($AnzahlDatensaetze > 0) {
// Die Aktuelle Seite und den Versatz ermitteln
$Seitenanzahl = ceil($AnzahlDatensaetze / $DatensaetzeSeite);
$AktuelleSeite = isset($_GET["seite"]) ? intval($_GET["seite"]) : 1;
$AktuelleSeite = $AktuelleSeite < 1 || $AktuelleSeite > $Seitenanzahl ? 1 : $AktuelleSeite;
$Versatz = $AktuelleSeite * $DatensaetzeSeite - $DatensaetzeSeite;
// Alle Datensätze auslesen die in der DB-Spalte `anzeige` den Wert 1 haben.
// Mit LIMIT die Ausgabe der Datensätze begrenzen.
// Die Sortierung ersetzt von:
// ORDER BY `datum` DESC
// ORDER BY `" . $spalte . "` " . $sort . "
$select = $VERBINDUNG->query("SELECT `titel`, `autor`, `nachricht`, `datum`
FROM `nachrichten`
WHERE `anzeige` = '1'
ORDER BY `" . $spalte . "` " . $sort . "
LIMIT " . $Versatz . ", " . $DatensaetzeSeite);
$nachrichten = $select->fetchAll(PDO::FETCH_OBJ);
// Ausgabe über eine Foreach-Schleife
foreach ($nachrichten as $nachricht) {
sscanf($nachricht->datum, "%4s-%2s-%2s", $jahr, $monat, $tag);
echo '<p><small>' . $tag . '.' . $monat . '.' . $jahr .
'</small> - <b>' . $nachricht->titel . '</b><br>' .
' Autor: <em>' . $nachricht->autor . '</em><br>' .
nl2br($nachricht->nachricht) . '</p><br>';
}
// Formular.- und Blätterfunktion
echo '<form action="' . $_SERVER["SCRIPT_NAME"] . '" method="GET" autocomplete="off">' .
(($AktuelleSeite - 1) > 0 ? '<a href="?seite=' . ($AktuelleSeite - 1) . '&spalte=datum&sort=' . $sort .'">◀</a>' :
' ◀') .
' <label>Seite <input type="text" value="' . $AktuelleSeite . '" name="seite" size="3"
title="Seitenzahl eingeben und die Eingabetaste drücken."> von ' . $Seitenanzahl . '</label>' .
(($AktuelleSeite + 1) <= $Seitenanzahl ?
' <a href="?seite=' . ($AktuelleSeite + 1) . '&spalte=datum&sort=' . $sort .'">▶</a>' :
' ▶') . '</form>';
}
else {
echo '<p>Keine Einträge vorhanden!</p>';
}
?>
Die Links zum Sortieren habe ich auf meine “Home” Seite gesetzt (hier meine Startseite “index.php” auf der das Skript eingebaut ist), indem ich einen ganz normalen internen Link gesetzt und die Parameter eingetragen habe. Hier für die aufsteigende Sortierung nach Datum ...
?spalte=datum&sort=asc
asc = ascending = aufsteigende Reihenfolge
... und hier für die absteigende Sortierung nach Datum:
?spalte=datum&sort=desc
desc = descending = absteigende Reihenfolge
Viel Erfolg!