Random Bild MYSQL

Hi, ja das Thumbnail ist nun verlinkt... aber nicht richtig? Die id ist falsch! Ist wird bsplw. ein Thumbnail von DaVinci angezeigt und der Link geht nun zu Warhol.. aber die Mysql-Abfrage ist doch korrekt, oder nicht? :confused:
 
Sorry.. Verlinkung klappt mit:

PHP:
echo '<a href="maske.php?id='.$kuenstler['id_kuenstler'].'"><img src="'.$kuenstler['bild_pfad'].'" alt="'.$kuenstler['bild'].'" width="124" height="70" /></a>';

Zu der Auflistung von den Anfangsbuchstaben A bis F.. was macht der Begriff "vergleichsspalte" da drinnen? Was bedeutend die Zahlen? Hast du eine Referenz, wo man das nachlesen kann?

SELECT * FROM Tabelle WHERE (ASCII(LEFT(vergleichsspalte, 1)) >= 64 AND ASCII(LEFT(vergleichsspalte, 1)) <= 70) OR (ASCII(LEFT(vergleichsspalte, 1)) >= 97 AND ASCII(LEFT(vergleichsspalte, 1)) <= 102);
 
Code:
(ASCII(LEFT(vergleichsspalte, 1)) >= 64 AND ASCII(LEFT(vergleichsspalte, 1)) <= 70) OR (ASCII(LEFT(vergleichsspalte, 1)) >= 97 AND ASCII(LEFT(vergleichsspalte, 1)) <= 102);
Die 64 muss eine 65 sein, das ist ein Fehler.

Die Funktion LEFT() nimmt sich einen (die "1" in der Funktion) Buchstaben des Inhaltes von "vergleichsspalte", beginnend von Links.
Dieser eine Buchstabe - also der erste des Wortes - wird nun in ASCII-Code umgewandelt,
Der Buchstabe "A" besitzt den ASCII-Code 65, "B" die 66, C die 67, etc..
Das selbe nochmal für die kleinen Buchstaben, bei welchen "a" 97 ist und so weiter.

Demnach wird überprüft, ob die Buchstaben gleich/zwischen dem ASCII-Code 65 (welcher für "A" steht) und 70 (welcher für "F" steht) oder gleich/zwischen 97 und 102 befindet.

Die entsprechenden Codes kannst du hier nachlesen: http://www.ascii.cl/htmlcodes.htm

*edit*
Das Wort "vergleichsspalte" musst du mit dem Spaltennamen ersetzen, welche die Wörter enthält, die du auslesen möchtest.
 
Hi, stimmte.. war ein kleiner Dreher drinnen.. Ausgabe funktioniert nun, aber die Verlinkungen klappt nicht?

PHP:
$result = mysql_query("SELECT * FROM artists, files WHERE files.id_kuenstler = artists.id AND bild_pfad != '' ORDER BY rand() LIMIT 1"); 
            
$kuenstler = mysql_fetch_assoc($result); 
if (trim($row['bild']) == "sfte_farbfeld")
echo '<img src="'.$kuenstler['bild_pfad'].'" alt="'.$kuenstler['bild'].'" width="124" height="70" />';
    else 
echo '<a href="maske.php?id=$id"><img src="'.$kuenstler['bild_pfad'].'" alt="'.$kuenstler['bild'].'" width="124" height="70" /></a>';
Es soll die id aus der Tabelle " artists " als Link hinter das Thumbnail legen.. ich glaub ich steh hier auf dem Schlauch ;) Danke für die Geduld!

Also ich habe auch viel mit solchen zufallsgeschichten gearbeitet und bin am End zum Ergebis gekommen dass
PHP:
ORDER BY rand()
nicht zu empfehlen ist, da das sehr lange dauert bei größeren Datenbanken.
Ich habe das dann so gelöst indem ich eine Abfrage an den SQL Server schicke wieviele Datensätze sich in der Datenbank befinden also
PHP:
SELECT COUNT('ID') FROM database
und dann in PHP eine Zufallszahl rauswerfen lasse. Ich finde das geht wesentlich schneller...

Gruß Kai
 
Schon, aber da - wie du auch geschrieben hast - so einige Einträge vorhanden sein müssen, bis ORDER BY eine merkbare Verzögerung verursacht, kann man es hier ruhig so lassen, würde ich meinen.
 
Das mit dem Abfragen von A-F etc klappt wunderbar - danke für die Erklärung und den Link! Die Datenbank soll schon irgendwann umfangreich werden.. von welchen Werten reden wir hier bis es "langsamer" wird? 100? 1000 ? Mehr oder weniger?

Kann jemand hier noch kurz nen Blick drauf werden?

PHP:
if ($kuenstler->id_kuenstler == "0" OR $kuenstler->id_kuenstler == "1")
			{ 
			echo '<img src="'.$kuenstler['bild_pfad'].'" alt="'.$kuenstler['bild'].'" width="124" height="70" />';
			}
			else 	
			{
			echo '<a href="maske.php?id='.$kuenstler['id_kuenstler'].'"><img src="'.$kuenstler['bild_pfad'].'" alt="'.$kuenstler['bild'].'" width="124" height="70" /></a>';
			}

Er verlinkt mir auch die Werte mit der id_kuenstler 0 & 1 mit der Hyperlink maske.php?id=1 oder maske.php?id=0 ? In der Tabelle ist bei den beiden Werten 0 & 1 nur ein Pfad zu einem Bild angegeben..

Gleiche Problem mit der Abfrage, ob ein Homepagelink hinterlegt wurde.. er schreibt immer "Homepage" hin, auch wenn nur http:// eingespeichert ist..

PHP:
$kuenstler = mysql_fetch_assoc($result);
			if ($kuenstler->url == 'http://')
			{
			echo "";
			}
			else
			{
			echo "Homepage: <a href=\"".$kuenstler['url']."\" target=\"_blank\">".$kuenstler['url']."</a>";
			}
 
Zuletzt bearbeitet:
Anstelle von $kuenstler->id_kuenstler musst du $kuenstler['id_kuenstler'] verwenden, das selbe gilt für das andere Problem. ;)

Ps.: Prüfe doch einfach ob $kuenstler['id_kuenstler'] <= 1, somit brauchst du nur eine Bedingung.

*edit*
Nochmal überarbeitet, da waren paar Schusselfehler drinne.
 
Zuletzt bearbeitet:
Im Prinzip kannst du auch die Double Quotes um die 1 weg lassen.
Ich gehe einfach mal davon aus, dass das Feld kuenstler_id vom Typ Integer ist, somit kannst du es als eine ganz normale Zahl behandeln, nicht als String.
 
Zurück