[PHP] Bildergallery + Automatischer Zeilensprung

Rafioso

Mitglied
Guten Abend :)

Ich habe das Grundgerüst einer Bildergallery erstellt, doch nun sitze ich an einem Problem fest.

Wie kann ich es machen, dass z.B.: in der ersten Zeile maximal 5 Bilder angezeigt werden dürfen und dann automatisch ein Zeilensprung passiert.

Es sollten also dann 5 Spalten je Zeile vorhanden sein.

Die Bilder lese ich über MySQL ein.

Ich habe es einmal mit while versucht, aber dann wurde 5 mal das selbe Bild angezeigt und dann in der nächsten Zeile wieder 5 mal ein anderes Bild.

Schonmal vielen Dank für eure Hilfe.
 
Hi,
poste mal ein bischen Code oder zumindest wie dein Array aussieht in dem du die Bilder gespeichtert hast. Und auch wie du die Ausgabe formatieren willst (in einer Tabelle , die Bilder absolut positioniert ..)?
es gibt dafür mehrere Möglichkeiten
zb:
du kannst das mit verschachtelten Schleifen lösen - die äußere Schleife macht eine Zeile auf die inner Schleife legt die Spalten nebeneinander an
oder du machsts mit nur einer Achleife und lässt einen counter mitlaufen - immer wenn dieser 5 erreicht hat fügst du einen Zeilenumbruch ein und setzt ihn auf null
- und vermutlich gibts noch einige Ansätze mehr
 
Ich glaub der bekannteste (und beliebteste) Ansatz dafür ist das Modulo.
Du lässt einfach einen Counter mitlaufen und überprüfst, ob sich die Variable restlos durch 5 teilen lässt:
PHP:
for ($i = 1; $i <= 500; $i++) {
  if (($i % 5) == 0) {
    echo "<br>";
  }
}
 
Jepp, an exakt dem selben Problem saß ich auch und bin zum Ergebnis gekommen, dass ich das auch mit modulo machen muss.

scheint aber ein einfaches Unterfangen zu sein, wenn man ersteinmal die Idee hat ;)
 
Erstmal vielen Dank, dass ihr mir helfen möchtet :)

Ich habe es nun mit dem Schnipsel ausprobiert, aber jetzt sind nur 2 Bilder pro Zeile und zwar die gleichen. In der nächsten Zeile wieder 2 gleiche usw.


Wie kann ich es nun beheben, dass 5 Bilder pro Zeile angezeigt werden und diese auch unterschiedlich sind?


Hier der Abschnitt:

PHP:
<body bgcolor="#000000">
<center>
<table width="800px" border="0">
  <tr>
    <td><center>
      <font color="#fbd000" size="6">Bildergallery</font>
    </center></td>
  </tr>
</table>
<table width="800px" border="0">
	<tr>
<?php
     while($row = mysql_fetch_assoc($result)) { 
	 	for ($i = 0; $i <= 1; $i++) {
		  if (($i % 5) == 0) {
		      echo "</tr><tr>";
  }

?>
    <td width="160" height="160" align="center" valign="middle"><a href="../Bilder/pics/<?php echo $row['pic']; ?>" style="text-decoration:none; border:none" target="_blank"><img src="../Bilder/thumb/<?php echo $row['pic']; ?>"></a></td>
	
<?php  
   }
} 
?>
	</tr>
</table>
</center>
</body>


Vielen Dank :)
 
Zuletzt bearbeitet:
Du sprichst mir aus meinem Herzen :D

Die Idee, die ich verfolge ist, dass die Orner bei mir und Bilder bei dir in ein Array gepackt werden. Kann sein, dass ich mich mit dieser Idee föllig verfranse aber ich werde sehen müssen.
 
Hallo,
wenn man sich ab und an mal die Mühe machen würde in dem unerschöpflichen Pool von Wissen in diesem Forum zu suchen, müsstet ihr gar nicht solange auf eure Antworten warten und könntet euch solch Posterei sparen. Den identischen Thread gibts nun schon 4 mal und solangsam nervts eins wenig. Also benutzt einfach mal die Suchfunktion. Und Hier der Link:
http://www.tutorials.de/forum/php/271680-php-sql-und-eine-schleife.html
und hier noch ein Link
http://www.tutorials.de/forum/php/271094-datensaetze-aus-db-4-spalten-darstellen.html
und nun dürft auch keine Frage mehr auf tauchen.
 
Die Lösung steht doch schon oben :p
Du brauchst die for-Schleife gar nicht, wenn du schon eine while-Schleife hast. Die for-Schleife von mir war nur ein Beispiel ;)
Du könntest das so ungefähr implementieren:

PHP:
<?php
$i = 1;
while($row = mysql_fetch_assoc($result)) { 

?>
    <td width="160" height="160" align="center" valign="middle"><a href="../Bilder/pics/<?php echo $row['pic']; ?>" style="text-decoration:none; border:none" target="_blank"><img src="../Bilder/thumb/<?php echo $row['pic']; ?>"></a></td>
   
<?php  
  if (($i % 5) == 0) {
    echo "<tr></tr>";
  }
  $i++;
}

Edit: echo "</tr><tr>"; mein ich natürlich ;)
 
Zuletzt bearbeitet:
Vielen vielen Dank es klappt :)

Wünsche dir eine gute Nacht :)


Zu Badboyws:

Ich habe die SUFU benutzt, bin auch auf diese thread gestoßen, nur verstanden habe ich es nicht.
 
Zurück