1. Forum
    1. Unerledigte Themen
  2. Artikel
  3. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  4. Blog
    1. Artikel
  • Anmelden
  • Registrieren
  • Suche
Dieses Thema
  • Alles
  • Dieses Thema
  • Dieses Forum
  • Artikel
  • Forum
  • Blog-Artikel
  • Seiten
  • Erweiterte Suche
  1. StageTwo - Deine Wohlfühloase
  2. Developer & GFX Section
  3. Coding Allgemein
  4. Coding Snippets
  5. Andere

PHP: 2 Bilder von einer Datenbank Random anezeigen

  • ReNovaStar
  • 11. Mai 2014 um 12:54
  • ReNovaStar
    Geek
    Reaktionen
    5
    Punkte
    7.165
    Beiträge
    1.364
    Geburtstag
    3. Juni 1991 (35)
    Geschlecht
    Männlich
    Wohnort
    Deutschland
    • 11. Mai 2014 um 12:54
    • #1

    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

    PHP
    <div id="main">
            <div id="img_body">
            <?php
                $sql = mysql_query("SELECT * FROM img_uploads");
                $num_rows = mysql_num_rows($sql);
                $r1 = rand(0, $num_rows);
                do{
                    $r2 = rand(0, $num_rows);
                }
                while($r2 == $r1);
    
                $sql = mysql_query("SELECT src FROM img_uploads WHERE id = ".$r1);
                $row = mysql_fetch_row($sql);
                echo "<a href='index.php?vote=0'><div class='img_selection'><img src='img_upload/".$row[0]."'/></div></a>";
                $sql = mysql_query("SELECT src FROM img_uploads WHERE id = ".$r2);
                $row = mysql_fetch_row($sql);
                echo "<a href='index.php?vote=1'><div class='img_selection'><img src='img_upload/".$row[0]."'/></div></a>";
                $out = "$row";
                $_SESSION['imgs'][0] = 1;
                $_SESSION['imgs'][1] = 2;
    
            ?>
            </div>
    Alles anzeigen

    [align='center']

    Thx an sTaTus_xXx für sigi und avatar :*

  • florian0
    EBFE
    Reaktionen
    45
    Punkte
    6.045
    Beiträge
    1.150
    Geburtstag
    10. Oktober
    Geschlecht
    Männlich
    Wohnort
    Frankfurt
    Beruf
    Buchhalter beim Brennholzverleih
    • 11. Mai 2014 um 13:15
    • #2

    Du könntest

    SQL
    SELECT src
    FROM img_uploads
    ORDER BY RAND()
    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.

    <p><a href="http://gaben.tv">http://gaben.tv</a></p>

  • ReNovaStar
    Geek
    Reaktionen
    5
    Punkte
    7.165
    Beiträge
    1.364
    Geburtstag
    3. Juni 1991 (35)
    Geschlecht
    Männlich
    Wohnort
    Deutschland
    • 11. Mai 2014 um 13:34
    • #3

    ok danke schonmal soweit

    ansonsten funzt alles

    [align='center']

    Thx an sTaTus_xXx für sigi und avatar :*

  • dongdong
    Das Beste oder nichts
    Reaktionen
    1
    Punkte
    3.766
    Beiträge
    731
    Geburtstag
    1. August 1992 (34)
    Geschlecht
    Männlich
    • 13. Mai 2014 um 18:13
    • #4

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

    SQL
    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
    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
    SELECT ... FROM ... LIMIT offset, 2


    Danke an xNiGhTMaR3x für die Signatur und Avatar =)

Tags

  • php
  • Datenbank
  • random
  • bilder

Benutzer online in diesem Thema

  • 1 Besucher
  1. Datenschutzerklärung
  2. Impressum