"Bilder" klingt für mich nach Mehrzahl.
Wieviele sollens denn werden?
Wenn du random.php?catid=23 aufrufst, holst du mit der Query momentan nur
ein zufälliges Bild aus der DB.
Außerdem rufst du
mysql_fetch_array() nur einmal auf!
Du erhälst damit nur einen Datensatz in dein Array. Das was du machen willst sieht so aus:
PHP:
$numPics = 12; // z.B. 12 Bilder
$query="SELECT * FROM pictures WHERE catID = $_GET[catid] ORDER BY RAND() LIMIT $numPics";
$result = mysql_query($query);
while($row = mysql_fetch_array($result))
{
// Je Schleifendurchlauf erhälst du einen weiteren Ergebnissatz.
echo "<img src='$row[thumb]' alt='$row[beschreibung]' title='$row[beschreibung]' /><br>\n";
}
Damit du auch verstehst was du da eigentlich schreibst (ich bin mir da nicht so sicher ob das schon so ist), hier noch eine Erklärung der Query:
SELECT - Hole
* - alle Felder
FROM - aus
pictures - der Tabelle Pictures
WHERE - für die gilt
catID = $_GET[catid] - Feld catID = GET Variable catid, z.B. 5
ORDER BY - sortiere die Ergebnisse nach
RAND() - Funktion des MySQL Servers, die eine Zufallszahl zwischen 0.0 und 1.0 zurückgibt. Nach dieser wird dann sortiert
LIMIT $numPics - Beschränke die Ergebnisliste auf $numPics Ergebnisse
Die Verwendung von mysql_fetch_array() ist auch nicht sonderlich toll, weil du die Daten doppelt im Array hast, siehe:
Verwende lieber
mysql_fetch_assoc() oder
mysql_fetch_row().
mysql_fetch_assoc() stellt die ein sog. assoziatives Array bereit, du kannst deine Spalten dann so ansprechen:
mysql_fetch_row() stellt dir ein indiziertes Array bereit, du kannst deine Spalten dann so ansprechen:
PHP:
$row[0] //erste spalte, 1 für die 2, 2 für die tritte, etc...
Ich verwende am liebsten
mysql_fetch_object(). Damit kannst du dann deine Results so ansprechen:
Aber das ist Geschmackssache. Am schnellsten (wenn auch nur marginal) ist mysql_fetch_row, aber das mal nur am Rande.
_assoc und _object sind gleichschnell.
Is jetzt ein halber Daten-aus-der-DB-holen Crashkurs geworden
HTH, Erazor