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

A

Augustiner

Aktives Mitglied
Thread Starter
Dabei seit
25.10.2004
Beiträge
143
Reaktionspunkte
0
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
 
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 :)
 
-- 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:
Augustiner schrieb:
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 :)

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
 
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++;

} 

?>
 
Zurück
Oben Unten