PHP: 2 Bilder von einer Datenbank Random anezeigen

  • hey hab folgendes problem.. ich kriegs nicht hin das 2 bilder (von vielen) aus einer datenbank gezogen werden und diese dann random (nicht doppelt und nur bilder) angezeigt werden auf einer bestimmten website...


    was mach ich falsch :S


  • Du könntest

    SQL
    1. SELECT src
    2. FROM img_uploads
    3. ORDER BY RAND()
    4. LIMIT 2


    verwenden.
    (In wie Fern das bei größeren Datenmengen noch performant ist, weiß ich nicht)


    Dein aktueller Code ist in sofern problematisch, dass du keine Einträge mehr löschen darfst. Dann hast du z.B. die IDs 1,3,4,5 und num_rows gibt logischerweise 4 aus. Damit wäre 4 auch die höchste angesprochene ID. Alles das drüber ist wird ignoriert. Und falls Zufällig die 2 ausgewählt wird, gibts kein Ergebniss.


    Ansonsten seh ich in dem Code erstmal keinen Fehler ... gibt es einen?


    Gruß
    florian0


    PS: Die MySQL Extension ist deprecated (veraltet). Besser mysqli oder pdo benutzen.

  • Für die Anzahl der Bilder in der DB zu bestimmen nimmst du auch besser

    SQL
    1. SELECT count(*) FROM ...


    Ansonsten werden ja erst mal alle Daten selektiert, was unnötig lange dauert. Um die höchste ID zu ermitteln nimmst du am besten

    SQL
    1. SELECT max(id) FROM ...


    Aber wie florian0 schon gesagt hat, geht das nur wenn die ID's durchgängig belegt sind.
    ORDER BY RAND() kannte ich gar nicht, hört sich aber gut an ;)
    Sollte es damit zu Problemen kommen, kannst du dir auch erst mit count(*) die Anzahl der Einträge bestimmen lassen, dann ein Offset zwischen 0 und count(*) - 1 nehmen und folgendes Konstrukt benutzen:

    SQL
    1. SELECT ... FROM ... LIMIT offset, 2