Erst Zufallsbild, dann Link setzen geht das?

gbalbier

Grünschnabel
Hi an alle
Ich möchte auf meiner Page folgendes realisieren.
Es sollen Random/ Zufallsbilder eingeblendet werden.

Soweit so gut.
Aber wie verlinken, daß jedes Zufallsbild den Richtigen Link zum Datensatz bekommt.

Normal geht es MySQL DB ansprechen, Datensatz (Bildname) holen, Bild anzeigen.

Hier muss es irgendwie RÜckwärts passieren.
Erst Bild zeigen, Bild muss sagen welcher Datensatz das ist. -:))) hmmmmm
Oder denke ich da falsch? :confused:

Mein Experiment sieht wie folgt aus: :-(

PHP:
  Zufallsbild<br>
	
	<?php 
// print a random image. Don't forget ending slash!
// setting $type to 'all' will return all images.
print getRandomImage(''); 
function getRandomImage($dir,$type='random')
{ 
global $errors; 
if (is_dir($dir)) { 
$fd = opendir($dir); 
$images = array(); 
while (($part = @readdir($fd)) == true) { 
clearstatcache();
if ( eregi("(gif|jpg|png|jpeg)$",$part) ) {
$images[] = $part; 
} 
} 
// adding this in case you want to return the image array
if ($type == 'all') { return $images; }
// Be sure to call srand() once per script
srand ((double) microtime() * 1000000); 
$key = rand (0,sizeof($images)-1); 
return $dir . $images[$key]; 
} else { 
$errors[] = $dir.' is not a directory'; 
return false; 
} 
} 
?>

<?$tmp=mysql_query("SELECT id, fname, gender, birthday, pic1, pic2, pic3 FROM ".C_MYSQL_MEMBERS." WHERE status >= '7' order by regdate DESC limit ".C_LASTREG);
//while($i=mysql_fetch_array($tmp)) {
$photo = (trim($i['pic1']) == '') ? $i['id'] : $i['pic1'];
//echo "<a href=\"view.php?l=".$l."&id=".$i['id']."\" class=desc><img src="< print getRandomImage('members/uploads/');?>
<br>
<a href=view.php?l=&id=\".$photo.\"><img src="<? print getRandomImage('members/uploads/');?>" width="100" border="0">
<br>
<a href=\"view.php?l=".$l."&id=".$i['id']."\" class=desc><img src="<? print getRandomImage('members/uploads/');?>" width="100" border="0">;
?>

Das witzige ist, die erste Anzeige musste ich auskommentieren

PHP:
 //echo "<a href=\"view.php?l=".$l."&id=".$i['id']."\" class=desc><img src="< print getRandomImage('members/uploads/');?>

Das sieht dann so aus
HTML:
members/uploads/03115013-618.jpg1

Hinter .jpg wird immer eine "1" hinzugefügt.

Statt Bild wurde der Pfad und der Dateiname angezeigt, aber nicht das Bild.
Erst ab dem 2-ten Bild werden Bilder in zuffäliger Reihenfolge angezeigt, der Link auch schon fast komplett aufgebaut, bis auf die "id" des entsprechenden Datensatzes.

Hat jemand eine Idee, wie ich mein Vorhaben realiesieren kann?

Gruß
George
 
Hi George

Deine Darstellung ist leider nicht ganz eindeutig und die DB auch wohl oversized, aber egal.

Warum durchsuchst Du das Verzeichnis nach Bildern? Wenn Du die Bilddateinamen in der DB hast, kannst Du dort einen Datensatz per Zufall aussuchen und das Bild anzeigen und hast den passenden Link dazu.

Ohne DB kannst Du in das Bildverzeichnis Textdateien legen, die den gleichen Namen wie die Bilddatei haben, aber natürlich eine andere Endung - beispielsweise ".url" und dort den Verweis reinlegen. Dann hast Du anhand des Bilddateinamens auch den Verweis.

Beispiel:

hugendubel.jpg --> ist Bilddatei für den Schirm
hugendubel.url --> ist Verweis drin: http://www.der-schirm.de

Gruß Sigi
 
der-sigi hat gesagt.:
Hi George

Warum durchsuchst Du das Verzeichnis nach Bildern? Wenn Du die Bilddateinamen in der DB hast, kannst Du dort einen Datensatz per Zufall aussuchen und das Bild anzeigen und hast den passenden Link dazu.

Gruß Sigi
Hi
So habe ich mir das auch anfangs gedacht, weiss aber nicht wie ich es anstellen soll, daß die DB erst zufällig den Datensatz liefern soll und dann das passende Bild dazu.

Ja klar, das wäre die logischere Lösung.
Hast Du einen Tipp?
Gruß
Georg
 
Hallole

da Du wohl anderen die Arbeit überläßt und ein bißchen faul bist, hier die weiteren Schritte: ;)

http://www.php-faq.de/q/q-mysql-zufall.html

Damit Du nicht nachschlagen mußt:

SELECT * FROM tabelle ORDER BY RAND() LIMIT 1

So, und jetzt hast Du Deinen Datensatz, in dem dann hoffentlich alle notwendigen Teile drin sind. Und das nächste Mal, zuerst nachsehen und dann fragen. :)

Viele Grüße
Sigi
 

Neue Beiträge

Zurück