MySQL und das Schicksal – oder: Zufallsausgabe

Im Wunschbuch kam die Frage auf, wie man einzelne Elemente – also beispielsweise Sätze, Bilder oder Links – zufällig ausgeben kann. Das Schicksal soll also entscheiden, was angezeigt wird. ;-)

Hier bietet sich die PHP-Funktion rand() an.
rand steht für random, zu deutsch: zufällig. Genau das also, was wir brauchen.

Zunächst müssen die auszugebenden Elemente dafür natürlich in eine Datenbank gepackt werden. In eine Tabelle namens zufall trägt man die einzelnen Werte ein – hier nehmen wir jetzt einmal ein ganz einfaches Beispiel mit zwei Spalten; ID und “blubb”. blubb kann hierbei zum Beispiel eine URL sein, der Pfad zu einem Bild, ein Name, ein Willkommenstext für deine Besucher oder was auch immer. Selbstverständlich kannst du der Tabelle je nach Bedarf auch mehrere Spalten hinzufügen – hier geht es nun, wie gesagt, nur um’s Prinzip.

Nachdem die Tablle mitsamt Spalten angelegt und mit Daten gefüllt worden ist, können wir sie jetzt mit einen PHP-Skript wieder auslesen.

<?php
include ("db.php");

$zufallsausgabe = "SELECT blubb FROM zufall ORDER BY RAND() LIMIT 1";
$ausgabe = mysql_query($zufallsausgabe);
while ($row = mysql_fetch_assoc($ausgabe)) {
?>

<?= $row['blubb']; ?>
<?
}
?>

Das Herzstück des Ganzen ist diese Zeile:

SELECT blubb FROM zufall ORDER BY RAND() LIMIT 1

Durch diesen Befehl werden alle Einträge in der Spalte “blubb” der Tabelle zufall ausgewählt, nach dem Zufallsprinzip geordnet (und nicht etwa nach dem Alphabet oder sonstigen Kriterien) und schlussendlich wird ein einziges Element ausgegeben.

Außenherum befinden sich die Anweisung, eine Verbindung zur Datenbank aufzubauen (die hier eingebundene Datei db.php mit den Verbindungsdaten muss natürlich noch angelegt werden), sowie die Ausgabe des Wertes.

Voilà! :-)

verwandte Beiträge

2 Gedanken zu “MySQL und das Schicksal – oder: Zufallsausgabe

  1. Toll :)
    Dankeschön =)
    Werd ich wenn ich Zeit hab sofort ausprobieren..

  2. Kleiner Hinweis am Rande: die rand() Funktion ist in dem oben genannten Beispiel nicht die “PHP-Funktion rand()” sondern die MySql-Funktion rand().