Tutorial MySQL Datenbank aufsteigend oder absteigend sortieren

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 .'">&#9664;</a>' :
  ' &#9664;') .
 ' <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 .'">&#9654;</a>' :
' &#9654;') . '</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

Link aufsteigend

... und hier für die absteigende Sortierung nach Datum:

?spalte=datum&sort=desc

desc = descending = absteigende Reihenfolge

Link absteigend

Viel Erfolg!

Tutorials von Thomas Frei-Herrmann

diese Seite weiter empfehlen


Counter Statistik