[PHP] - Bilder aus Datenbank (Galerie) einfach ausgeben lassen?

Dieses Thema im Forum "Web-Programmierung" wurde erstellt von Augustiner, 17.09.2006.

  1. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Mitglied seit:
    25.10.2004
    Hallo zusammen,
    ich möchte Bilder (Thumbnails) deren URL in meiner MySQL-Datenbank liegen einfach in einem table ausgeben lassen, sodass 4 Bilder pro Zeile ausgegeben werden. - Aber wie? :(
    Hab jetzt schon endlos gegoogelt und sowohl hier, als auch bei tutorials.de gesucht, aber alles was ich bisher gefunden hab...
    ... hat entweder gar nicht erst funktioniert
    ... war für meinen Zweck völlig ungeeignet (riesen Gallery-Scripts mit x-unnötigen Funktionen)
    ... war schlecht kommentierter Quellcode, sodass ich (als Anfänger) nur Bahnhof verstanden hab.

    Wäre über ein paar gute Ratschläge echt sehr dankbar :-/

    Gruß
    Augustiner
     
  2. Darkstar

    Darkstar MacUser Mitglied

    Beiträge:
    160
    Zustimmungen:
    0
    Mitglied seit:
    17.07.2004
    Hallo,

    lies die Bilder als Array aus der Datenbank aus und geh danach mit einer foreach schleife durch das array. Zähle dabei noch ne variable hoch und wenn diese dann die anzahl der bilder in deiner zeile erreicht hat, beginne einfach eine neue.

    z.B.:
    PHP:
    //zugriff auf datenbank kann auch anders sein
    $res $db->query("SELECT ..... FROM ... WHERE....");
    $images $db->sql_fetch_assoc($res);

    $rows 4;
    $i=0;
    echo 
    '<table><tr>';
    foreach (
    $images as $image) {
      echo 
    '<td><img src="'.$image.'" /></td>';
      if (
    $i $rows) {
        
    $i++;
      }
      
    //4 bilder pro zeile sind erreicht, neue anfangen
      
    else {
        echo 
    '</tr><tr>';
        
    //wieder von vorne zu zählen beginnen
        
    $i=0;
      }
    }
    echo 
    '</tr></table>';
    Hmm hab es zwar jetzt nicht wirklich ausprobiert, aber so wäre das z.b. ne Möglichkeit... wird dann noch interessant, wenn Du z.B. nur 5 Bilder darstellen willst... dann musst die restl. Zellen in der 2. Zeile noch durch eine Abfrage mit Zellen auffüllen... Gibt sicher noch einfachere Möglichkeiten - aber vielleicht klappt das wie oben ja recht einfach für Dich :)
     
  3. Augustiner

    Augustiner Thread Starter MacUser Mitglied

    Beiträge:
    133
    Zustimmungen:
    0
    Mitglied seit:
    25.10.2004
    -- updated --

    Hat sich schon erledigt. Vielen vielen Dank für deine schnelle Antwort. Hast mir sehr geholfen, auch wenn ichs etwas anders gemacht hab (mit fetch_assoc kenn ich mich ned aus; ich machs immer mit fetch_object).

    Hab jetzt so gemacht:

    PHP:
    <?php 

      
    /* Connect */
      
    include "connection.php";
      
      
    $abfrage "SELECT * FROM pics_work";
      
    $ergebnis mysql_query($abfrage);
      

     
      
      
    $rows 3;
      
    $i 0;
      
      echo 
    "<table><tr>";
      
      while (
    $row mysql_fetch_object($ergebnis))
    {


        echo 
    "<td><a href='$row->image'><img src='$row->thumb'></a></td>";
        if (
    $i $rows) { $i++; }
        else { echo 
    "</tr></tr>"$i 0; }
       

    }

      echo 
    "</tr></table>";
      

        
    ?>
    Anbei:
    Wenn ich $rows auf den Wert "4" setze, bekomme ich am Ende 5. Keiner weiß warum; ist auch recht unwichtig, denn wenn ichs auf "3" setze dann bekomm ich mein gewünschten 4 Reihen =)
    Danke nochmals :)
     
    Zuletzt bearbeitet: 17.09.2006
  4. ThaHammer

    ThaHammer MacUser Mitglied

    Beiträge:
    3.277
    Zustimmungen:
    13
    Mitglied seit:
    01.06.2004
    Ist doch ganz klar, php fängt mir 0 zum zählen an. Du zählst bis 4, macht 5 durchläufe!
    0 1 2 3 4
     
  5. Sovok

    Sovok MacUser Mitglied

    Beiträge:
    36
    Zustimmungen:
    0
    Mitglied seit:
    10.06.2005
    Nur so am Rande.. Statt

    PHP:
    if ($i $rows) { $i++; }
        else { echo 
    "</tr></tr>"$i 0
    kannst du auch

    PHP:
    if ($i $rows == 0) echo "</tr><tr>";
    schreiben (wenn $i von 1 startet).

    Bei deinem Code mit den Tabellen werden jetzt allerdings manche Spalten (td) weggelassen. Da wärs besser leere td einzufügen, also die Schleife immer bis zu einem vielfachen von 4 weiterlaufe zu lassen.

    Oder noch besser: keine Tabellen. Einfach die Bilder mit <br /> statt <tr>. So brechen sie um, wenn das Browserfenster zu schmal ist..

    PHP:
     <?php 

      
    include "connection.php";
      
      
    $abfrage "SELECT * FROM pics_work";
      
    $ergebnis mysql_query($abfrage);
     
      
    $rows 3;
      
    $i 1;  
      
      while (
    $row mysql_fetch_object($ergebnis)) {

        echo 
    "<a href='$row->image'><img style='margin: 10px;' src='$row->thumb'></a>";
        if (
    $i%$rows == 0) echo "<br />";
        
    $i++;



    ?>
     
Die Seite wird geladen...

Diese Seite empfehlen