In diesem PHP Tutorial möchte ich ihnen erklären, wie sie per Zufall zwei MySQL Tabellen abfragen können. Dieses Tutorial habe ich geschrieben, da in unserem Forum zu dieser Thematik eine Frage gestellt wurde. Die Anwendungsbeispiele sind Recht vielseitig und man könnte unterschiedliche Skripte zu dieser Thematik veröffentlichen. In diesem Beispiel gehe ich ausschließlich darauf ein wie man per Zufall zwei unterschiedliche Tabellen ansteuert. Man könnte natürlich auch zwei unterschiedliche Datenbänke mit diesem Script abfragen.
Als erstes müssen wir über den PHPMyAdmin zwei Tabellen anlegen, die sie abfragen möchten. Nachfolgend finden sie eine entsprechendes SQL Statement, was sie einfach in das SQL Fenster in PHPMyAdmin einfügen müssen. Danach wird automatisch, die zwei unterschiedlichen Tabellen angelegt.
Das SQL Statement:
--
-- Datenbank:
`zufall_test`
--
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `datenbank1`
--
CREATE TABLE IF NOT EXISTS `datenbank1` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datenbank` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 2 ;
--
-- Daten für Tabelle `datenbank1`
--
INSERT INTO `datenbank1` (`id`, `datenbank`) VALUES
(1, 'Daten von Tabelle: datenbank1');
-- --------------------------------------------------------
--
-- Tabellenstruktur für Tabelle `datenbank2`
--
CREATE TABLE IF NOT EXISTS `datenbank2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`datenbank` varchar(255) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE = MyISAM DEFAULT CHARSET = latin1 AUTO_INCREMENT = 2 ;
--
-- Daten für Tabelle `datenbank2`
--
INSERT INTO `datenbank2` (`id`, `datenbank`) VALUES
(1, 'Daten von Tabelle: datenbank2');
Nachdem wir die zwei Tabellen angelegt haben kommen wir zum Script. Nachfolgend finden sie das Script womit man auf zwei unterschiedliche Tabellen zugreifen kann. In diesem Beispiel sehen sie die MySQL Zugangsdaten von meinen lokalen Server. Diese Daten müssen sie natürlich, an ihren anpassen.
Das Script:
<?php
/**
* Daten von der ersten Datenbank
*/
/**
* Der Host von der ersten Datenbank
*/
$host['1'] = 'localhost';
/**
* Der MySQL User von der ersten MySQL-Datenbank
*/
$user['1'] = 'root';
/**
* Das Passwort für den MySQL User der ersten MySQL-Datenbank
*/
$passwort['1'] = '***';
/**
* Die erste Datenbank worin die Tabelle gespeichert ist
*/
$datenbank['1'] = 'zufall_test';
/**
* Name der Tabelle
*/
$table['1'] = 'datenbank1';
/**
* ###################################
*/
/**
* Daten von der zweiten Datenbank
*/
/**
* Der Host von der zweiten Datenbank
*/
$host['2'] = 'localhost';
/**
* Der MySQL User von der zweiten MySQL-Datenbank
*/
$user['2'] = 'root';
/**
* Das Passwort für den MySQL User der zweiten MySQL-Datenbank
*/
$passwort['2'] = '***';
/**
* Die zweite Datenbank worin die Tabelle gespeichert ist
*/
$datenbank['2'] = 'zufall_test';
/**
* Name der Tabelle
*/
$table['2'] = 'datenbank2';
/**
* Als nächstes ermitteln wir in der Variable $host die
Anzahl der unterschiedlichen host, in unserem Beispiel
müsste die Zahl 2 sein mit der Funktion count(), danach
wird mit rand() die Variable $zufall_key befüllt.
*/
$zufall_key = rand(1, count($host));
/**
* Nachdem wir eine zufällige Datenbank ausgewählt haben,
erstellen wir eine Verbindung zu unserer MySQL Datenbank.
*/
$db = mysql_connect($host[$zufall_key], $user[$zufall_key],
$passwort[$zufall_key]) or die ("Es konnte keine
Verbindung zur Datenbank hergestellt werden!");
/**
* Wenn wir eine Verbindung erfolgreich hergestellt haben,
werden wir mit dem PHP Befehl mysql_select_db() die
entsprechende Datenbank aus.
*/
$db_selected = mysql_select_db($datenbank[$zufall_key], $db);
/**
* Nun bauen wir unser SQL Statement zusammen, womit wir eine
Abfrage an die Datenbank stellen möchten.
*/
$sql_select = "SELECT id, datenbank FROM
`".$table[$zufall_key]."`;";
/**
* Mit der PHP Funktion mysql_query() senden wir unserer
Abfrage an die offene MySQL Verbindung. Und speichern
die resource in der Variable $query.
*/
$query = @mysql_query($sql_select) or die('Mysql Fehler:
'.mysql_errno());
/**
* Mit der PHP Funktion mysql_num_rows() ermitteln wir die
Anzahl der zurückgegebene Datensätze, wenn wir
Datensätze zurückbekommen, wird mit einer while
Schleife die Ausgabe generiert.
*/
if (@mysql_num_rows($query) != 0) {
echo 'ID;Datenbank<br>';
while ($daten = mysql_fetch_assoc($query)) {
echo $daten["id"].';'.$daten["datenbank"].'<br>';
}
} else {
echo 'Es sind keine Daten vorhanden!';
}
?>
Die Ausgabe würde dann folgendermaßen aussehen:
ID;Datenbank
1;Daten von Tabelle: datenbank1
oder
ID;Datenbank
1;Daten von Tabelle: datenbank2
So das soll es erst mal gewesen sein, dieses Beispiel verdeutlicht nur, wie man auf zwei unterschiedliche Tabellen beziehungsweise Datenbänke drauf zugreifen kann. Vor ein paar Tagen habe ich schon ähnliche Beiträge verfasst, hier ging es darum, wie man zum Beispiel zufällig ein Bild oder Text anzeigen lassen kann. Vielleicht ist dies euch verständlicher, um zufällige Daten auszugeben. Wenn ihr nach Anregungen oder Fragen zu dieser Thematik hat, könnte gern in unserem Supportforum entsprechende Kritik oder Vorschläge veröffentlichen.