
Zufällige Ausgabe eines Spruches aus einer Datenbank
|
|
|
|
 Download | Testen
Dies ist ein Beispiel, wie Sie aus einer MySQL-Tabelle einen zufälligen Datensatz auswählen. Für die Allgemeinheit haben wir eine "Spruch" - Datenbank erstellt. Die Funktionalität ist recht einfach. Nachdem alle Zeilen in der Tabelle gezählt sind, schaltet sich der Zufallsgenerator, der eine Zahl liefert. Die Zahl ist eine Zeile aus der Tabelle. Diese Zeile wird ausgelesen und ausgegeben.
Nun erstellen Sie bitte die "Spruch" - Tabelle
CREATE TABLE spruch (
nr smallint(5) unsigned DEFAULT '0' NOT NULL auto_increment,
spruch varchar(255) NOT NULL,
autor varchar(100) NOT NULL,
PRIMARY KEY (nr)
);
|
|
|
|
Um das Beispiel testen zu können sammelten wir ein paar Sprüche für Sie:
INSERT INTO spruch (spruch,autor) VALUES ('Schriftsteller bauen Luftschlösser, Leser wohnen darin, und Verleger ziehen die Miete ein.', 'Maxim Gorki'), ('Schlaflosigkeit lässt sich durch Arbeit überwinden.', 'Sprichwort aus Spanien'), ('Chancen erkennt man oft nicht auf den ersten Blick.', 'Catherine Deneuve'), ('Wer gegen den Strom schwimmt, braucht Rückenwind.', 'unbekannt');
|
|
|
|
Und nun kommt das Beispiel. Das ist eine Funktion, die beim Aufruf einen Spruch liefert:
<?php
function spruch() {
// Einstellungen
$HOST = "localhost";
$ID = "root";
$PW = "";
$DB = "test";
$tabelle = "spruch";
// MySQL Connect
$conn_id = mysql_connect($HOST,$ID,$PW);
mysql_select_db($DB,$conn_id);
// Ermittelt Gesamtanzahl der Srpüche in der DB
$result = mysql_query("SELECT count(*) FROM ".$tabelle);
$gesamt = mysql_result($result,0);
// Schaltet den Zufallsgenerator ein
mt_srand(time());
// Wählt eine Zufallsnummer für eine Zeile aus
$zeile = mt_rand(0,$gesamt-1);
$result = mysql_query("SELECT spruch, autor FROM $tabelle");
mysql_data_seek($result,$zeile); // Sprung zur Zeile
$row = mysql_fetch_row($result);
$ausgabe = "Spruch von: ".$row[1]."<br>\n";
$ausgabe .= $row[0]."<p>\n";
mysql_free_result($result); // Speicherfreigabe
return $ausgabe;
}
// Aufruf der Funktion
echo spruch();
?>
|
|
|
|
Ab MySQL Version 3.23 gibt es eine neue Funktion RAND(). Mit dieser Funktion können Sie direkt einen zufälligen Datensatz auswählen. Ein Query könnte beispielsweise so aussehen:
mysql_query("SELECT spruch, autor FROM $tablle ORDER BY RAND() LIMIT 0,1") |