Galerie Problem "Bilder nebeneinander ausgeben"

EuroCent

Klappstuhl 2.0
Habe folgendes vor:

Und zwar möchte ich in jeder zeile nur 5 Bilder ausgeben die eine verkleinerte feste grösse haben

Aber leider weiss ich nicht wie genau ich das anstellen soll

Untereinander hab ich es ohne probleme bekommen aber wie nebeneinander so das immer nur 5 pro Zeile angezeigt werden!

Regulär werd ich 25 pro Seite ausgeben wenn es mehr sind wird ein Link generiert der beispiel mit galerie.php?action=bild&bildid=99&page=2&page=5 hat

Ich hab ja schon mehrmals gelesen das man dazu eine forschleife braucht

Aber wie mach ich es wenn ich Templates mit der eval(); Funktion aufrufe

Hiermal ein anfang meiner Galerie:

PHP:
<?php
require("./lib/config.php");

$action = $_REQUEST['action'];

if($action == '') {

// Kategorien Ermitteln
$images = $db->query("SELECT * FROM galerie ORDER by kat_name ASC");
	while($row = $db->fetch_array($images)) {
	
		eval("\$galerie_kat .= \"".$tpl->get("galerie_kat")."\";");
	}
	
// Daten Gesamt
$gesamt = $db->query_first("SELECT COUNT(*) AS bild_id FROM galerie_image");

eval("\$tpl->output(\"".$tpl->get("galerie")."\");");

}

if($action == 'kategorie') {

//Blätterfunktion
$imagesperpage="25";

list($imagecount) = $db->query_first("SELECT count(bild_id) FROM galerie_image WHERE kat_id='".$_REQUEST['id']."'");
 if(isset($_REQUEST['page'])){
  $page = intval($_REQUEST['page']);
  if($page == "0") $page = "1";
 }
 else $page = "1";
 
$pages = ceil($imagecount / $imagesperpage);

$sels = $db->query("SELECT * FROM galerie WHERE kat_id='".$_REQUEST['id']."'");
	while($kat = $db->fetch_array($sels)) {
		$daten = $db->query("SELECT * FROM galerie_image WHERE kat_id='".$_REQUEST['id']."' ORDER by bild_name", $imagesperpage,$imagesperpage*($page-1));
			while($bild = $db->fetch_array($daten)) {
						
				//$time = date("d.m.Y, H:i", $bild['time']);
								
				if($pages > 1) $pagelink = makePageLink("galerie.php?action=kategorie&amp;id=".$bild['kat_id']."&amp;page=$page",$page,$pages,1);
																		
					eval("\$bild_bit .= \"".$tpl->get("galerie_bild_bit")."\";");
			}
				
				eval("\$bild = \"".$tpl->get("galerie_bild")."\";");	
	}
	eval("\$tpl->output(\"".$tpl->get("galerie_image")."\");");
}
?>

Hoffe das mir da einer ein Beispiel geben könnte da ich nicht genau weiss wie ich anfangen muss/soll
 
Das Prinzip ist einfach.
Eine For-Schleife, wenn der Wert(i) durch 5 teilbar ist, also keinen Rest hat dann fügst du einen Zeilenumbruch ein.

mfg
 
ompf...

so in etwa

PHP:
for($i = 0; $i%5 <= 5; $i++) {

// Umbruch

}

oder wie genau müsste ich es machen?

Wäre für eure Hilfe sehr Dankbar da ich es nicht raffe wie ich das anstellen muss/soll
 
PHP:
$x = 20; # symbolische Zahl aller Einträge/Bilder
for($i = 0; $i < $x; $i++) {
  echo $bild;
  if($i % 5 == 0) echo "<br/>";
}

Eher so.

Korrigiert.
 
Zuletzt bearbeitet:
Danke werd ich klatt mal testen ich danke euch erstmal

Hab es mal gestet bekomme allerdings immer die erste zeile 2 Bilder statt 5

So sieht es bei der Ausgabe aus:

Code:
Bildnummer: 0Bildnummer: 1
Bildnummer: 2
Bildnummer: 3
Bildnummer: 4
Bildnummer: 5Bildnummer: 6
Bildnummer: 7
Bildnummer: 8
Bildnummer: 9
Bildnummer: 10Bildnummer: 11
Bildnummer: 12
Bildnummer: 13
Bildnummer: 14
Bildnummer: 15Bildnummer: 16
Bildnummer: 17
Bildnummer: 18
 
Zuletzt bearbeitet:
Du kannst das Ganze auch einfach in einer Liste ausgeben und diese anschließend mit CSS formatieren.
 
Die IF Abfrage ist für mich auch nicht eindeutig und ich denke mal PHP hat beim modulo auch eine einfach Logik dahinter.

So ist 0 % 5 = 0; 1 % 5 ist 1; 2 % 5 ist 2 usw, also gültige Ergebnisse.
Nach dem Bild 1 wird ein Break gesetzt, da 1 % 5 == 1 ist und 1 interpretiert PHP als TRUE ist. Das gleiche Spiel dann bei Bildnummer 6 => 6 % 5 == 1 und 1 wird als TRUE erkannt.

Die If Abfrage die genutzt wird, sagt ja nichts anderes aus, als

IF($i % 5 == TRUE) ...

Der IF Abfrage muss daher lauten:

PHP:
if($i % 5 == 0 && $i != 0)
...

Damit sollte es klappen.
 
Hi!

100% / 5 = 20%

Code:
li {
float:left;
width:20%;
list-style-type:none;
}
 
Zurück