[php] Zufallsbild

quicksilver

Lt. Junior Grade
Registriert
Jan. 2004
Beiträge
363
Ich habe eine kleine Gallery Programmiert. Und ich möchte nun aus der Datenbank einen Eintrag auslesen und bei jedem Aufruf ein anderes zufallsbild ausgegeben haben. Wie kann ich das am einfachsten Realisieren. ?

Meine ausgabe / Abfrage für ein bild ist im moment so:

PHP:
$query = "SELECT * FROM $btable where id='" . $_GET["id"] . "'";
$result = mysql_query($query) or die (mysql_error());

$array=mysql_fetch_array($result);

echo">
<CENTER>
<img src=\"inc/trans.gif\" style=\"width: ".$picinfo['0']."px; height: ".$picinfo['1']."px; background-image: url(". $picpath.$array['pic'] .");\" border=\"0\" alt=\"Klicken Sie Auf das Bild um das Fenster zu schliessen - Info: ".$picinfo['0']."x".$picinfo['1']." Pixel | Name: ".$array['pic']."\"/>
</CENTER>
";
 
PHP:
$query = "SELECT * FROM ein_table ORDER BY RAND() LIMIT 1";

dies gibt dir ein zufälliger datensatz von deiner datenbank aus
 
Dazu hätte ich nochmal eine Frage :/ also ich möchte nun das das random nur bei bestimmten werten .. also in einer bestimmten Kategorie ausführen. Ich habe das mal so probiert aber es geht irgendwie nicht... er ignoriert das und macht normal weiterhin im gesamten Table.

PHP:
$query = "SELECT * FROM $btable WHERE catid='" . $_GET["catid"] . "' ORDER BY RAND() LIMIT 1";
 
wie wäre es mit
PHP:
 $query = "SELECT * FROM $btable WHERE catid='" . $_GET["catid"] . "' LIMIT RAND(), 1";
 
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'RAND(), 1' at line 1

Kommt dann Loopo :(
 
dann halt so:
PHP:
// $max = maximale Anzahl von in Frage kommenden Datensätzen
$query = "SELECT * FROM $btable WHERE catid='" . $_GET["catid"] . "' LIMIT ".rand(0,$max).", 1";
 
versuche mal
PHP:
$zufall=rand(0,$max);
$catid=$_GET["catid"]; 

$query = "SELECT * FROM $btable WHERE catid='$catid' LIMIT $zufall, 1";

ich meinen nämlich zu glauben das man in einem querystring keine functionen ausfühern darf, deshalb habe ich sie ausgelagert. wenn doch ginge dies ebenfalls nicht ;)
 
das ist egal ;)
 
Gib mal ein Beispiel deiner Daten aus der Tabelle $btable.
Ich befürchte, dass wir an einander vorbei reden.
 
Ok Hier ein Eintrag:

PHP:
id  pic  thumb  bname  beschreibung  contact  visits  catid 
43 pool.jpg pool_1.jpg Mein Pool [U]Mein[/U]  Pool   4 5
 
Und jetzt bitte noch mehrere Datensätze, wenns geht die Spalten und Spaltennamen übereinander anordnen.
 
Hier die gewünschten Daten die hoffentlich zu einer lösung führen :/
PHP:
id  pic             thumb       bname      beschreibung        contact  visits  catid 
43 pool1.jpg    pool_1.jpg Mein Pool    [U]Mein[/U] Pool                  4        5 
44 pool2.jpg    pool_2.jpg Mein Pool    [U]Mein[/U] Pool                  4        5
45 ich_1.jpg    ich_1.jpg       thats me  das bin ich                     4        6
46 ich_2.jpg    ich_2.jpg       thats me  das bin ich                     4        6
....

Danke schonmal an alle
 
Zuletzt bearbeitet:
Ich hab mir gerade deine Tabelle nachgebastelt und hatte mit dieser Query erfolg:
Code:
select * from test where catid = 5 order by rand() limit 1;
Hiermit bekomme ich dann einen Datensatz von 2 möglichen in der Kategorie 5, der zufällig ausgewählt wurde. Bei erneutem Aufruf kommt dann logischerweise immer wieder ein anderer.
Das Ergebnis beschränkt sich aber auf die Kategorie und hat nur eine Ergebniszeile.
Sieht mir nach dem aus was du wolltest. Da du die gleiche Query weiter oben auch schon geschrieben hattest, würde ich dir empfehlen den Inhalt von $_GET["catid"] zu prüfen.
Oder hab ich dein Problem nicht verstanden? Wenn ja, bitte etwas ausführlicher beschreiben.
 
hm sehr komisch :(

PHP:
if ($_GET['catid'] == "")
	{
		$query = "SELECT * FROM $btable ORDER BY RAND() LIMIT 1";
		$result = mysql_query($query) or die (mysql_error());
		$array=mysql_fetch_array($result);
		$verzeichnis = dirname($_SERVER['PHP_SELF']);
	}
	else
	{	echo $_GET["catid"];
		$zufall=rand(0,$max);
		$catid=$_GET['catid'];
		$query = "SELECT * FROM $btable where catid='" . $_GET["catid"] . "' ORDER BY RAND() LIMIT 1";
		$result = mysql_query($query) or die (mysql_error());
		$array=mysql_fetch_array($result);
		$verzeichnis = dirname($_SERVER['PHP_SELF']);
	}

ich mache dann dateiname.php?catid=7 und dann gibt er oben aus 7 .. und unten ein zufallsbild.. aber leider nicht sortiert nach der catid :(
 
Zurück
Oben