Seitenfunktion

max

Erfahrenes Mitglied
Ich bin gerade dabei mir eine Bilder Gallery zu machen.
Ich lese die Bilder aus einem Ordner aus, deswegen kam ich auch mit den meisten Tutorials die ich gefunden habe nicht recht weiter da die die Seitenfunktion nur mit MySQL beschrieben haben.

Jetzt möchte ich die ausgabe der Thumbnails in mehrere Seiten aufteilen.

Also es sollen die Bilder auf jeweils 9 Thumbs pro Seite aufgeteilt werden.

Ich gebe zZ meine Bilder so aus:
PHP:
$umbruch = 3; //Zeilenumbruch für Gallery. Nach n Bildern wird eine neue Zeile begonnen.

    for ($i = 1; each($bilder); $i++) {
   		$ausgBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
    	
   		if (($i % $umbruch) == 0) {
    		$ausgBilder.= '<br />';
    	}
    	
    	echo $ausgBilder;
    }

Kennt da jemand ein Tutorial?

Oder ein Denkansatz würde mir auch schon weiter helfen (ich steh da gerade an).
 
Denkansatz:

Du musst Dir die Seite merken, auf der Du Dich gerade befindest. Das tust Du,
indem Du die aktuelle Seite immer als Parameter mit übergibst, und/oder sie in
einer Session-Variable ablegst. Danach kannst Du berechnen, welche Bilder
ausgegeben werden müssen. und zwar von (Seite-1)*9+1 bis Seite*9.
Vorausgesetzt die Seite beginnt bei 1.

snuu
 
So ungefähr:

PHP:
$umbruch = 3; //Zeilenumbruch für Gallery. Nach n Bildern wird eine neue Zeile begonnen.
$anzBilderProSeite = 9;
$vbild = $_GET['vbild'];
$anzBilder = count($bilder);

if ($anzBilder <= $anzBilderProSeite && !$vbild) {



    for ($i = 1; each($bilder); $i++) {
   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
    	
   		if (($i % $umbruch) == 0) {
    		$strBilder .= '<br />';
    	}
    	
    	echo $strBilder;
    }
}

elseif ($anzfotos > $anzBilderProSeite && !$vbild){

	$vbild2 = ($vbild + 1 + $anzBilderProSeite);
	$umbruch = 3; //Zeilenumbruch für Gallery. Nach n Bildern wird eine neue Zeile begonnen.
	
	    for ($i = 1; each($bilder); $i++) {
	   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
	    	
	   		if (($i % $umbruch) == 0) {
	    		$strBilder .= '<br />';
	    	}
	    	
	    	echo $strBilder;
	    }
	    
	    echo ('<a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild2.'">weiter</a>');
	
}

else {
	
	$vbild2 = ($vbild + 1 + $anzBilderProSeite);
	$umbruch = 3; //Zeilenumbruch für Gallery. Nach n Bildern wird eine neue Zeile begonnen.
	
	    for ($i = ($vbild + 1); each($bilder); $i++) {
	   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
	    	
	   		if (($i % $umbruch) == 0) {
	    		$strBilder .= '<br />';
	    	}
	    	
	    	echo $strBilder;
	    }
	    
	    echo ('<a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild.'">zur&uuml;ck</a> | <a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild2.'">weiter</a>');
	
}

Ist falsch! Habe vergessen die Ausgabe zu begrenzen.
 
Zuletzt bearbeitet:
Ich wollte jetzt die Ausgabe begrenzen. Komm da aber irgendwie nicht weiter.

PHP:
if ($anzfotos <= $anzBilderProSeite && !$vbild) {



    for ($i = 1; each($bilder); $i++) {
   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
    	
   		if (($i % $umbruch) == 0) {
    		$strBilder .= '<br />';
    	}
    	
    	echo $strBilder;
    }
}

elseif ($anzfotos > $anzBilderProSeite && !$vbild){

	$vbild2 = ($vbild + 1 + $anzBilderProSeite);
	
	    for ($i = 1; $i = $anzBilderProSeite; $i++) {
	   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
	    	
	   		if (($i % $umbruch) == 0) {
	    		$strBilder .= '<br />';
	    	}
	    	
	    	echo $strBilder;
	    }
	    
	    echo ('<a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild2.'">weiter</a>');
	
}

else {
	
	$vbild2 = ($vbild + 1 + $anzBilderProSeite);
	
	    for ($i = ($vbild + 1); $i = $anzBilderProSeite; $i++) {
	   		$strBilder = '<a href="../'.$bilderVerz.'/'.$galerie.'/'.$bilder[$i].'" target="_blank"><img src="thumb.php?galerie='.$galerie.'&amp;bild='.$bilder[$i].'&amp;breite=100&amp;hoehe=100" alt="" /></a>';
	    	
	   		if (($i % $umbruch) == 0) {
	    		$strBilder .= '<br />';
	    	}
	    	
	    	echo $strBilder;
	    }
	    
	    echo ('<a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild.'">zur&uuml;ck</a> | <a href="album.php?galerie='.$galerie.'&amp;vbild='.$vbild2.'">weiter</a>');
	
}
 
Hm als Denkansatz würd ich mal das versuchen:

PHP:
$pics_per_page = 9;
$max_pics = 124;
$max_page = round($max_pics / $pics_per_page);
$umbruch = 3;

// Aktuelle Seite
if(!isset($page)){
    $page = 1;
}

// erstes und letztes Bild der Seite
$start = ($page*$pics_per_page) - ($pics_per_page - 1);
$ende = ($page*$pics_per_page);
// damit die letzte Seite auch passt
if($ende > $max_pics) {
    $ende = $max_pics;
}

// Seite für zurück bestimmen
if($page>1) {
    $back = $page - 1;
} else {
    $back = 1;
    // oder damit man sich im Kreis dreht
    // $back = $max_page;
}

// Seite für weiter bestimmen
if($page<$max_page ) {
    $next = $page + 1;
} else {
    $next = $max_page ;
    // oder damit man sich im Kreis dreht
    //$next = 1;
}

// Die eigentliche Schleife
for($i=$start; $i<=$ende; $i++) {
    $bilder[$i]
    if (($i % $umbruch) == 0) {
        echo "<br />";
    }
}

// und noch die Links für vor und zurück
echo "<a href=\"gallery.php?page=$back\">zurück</a> ";
echo "<a href=\"gallery.php?page=$next\">weiter</a> ";

So hab ichs bei meinen Bildergallerien auch gemacht :o)

//EDIT

Hab den code etwas abgeändert und kommentiert
 
Zuletzt bearbeitet:
Hi,

mein Ansatz:

mit glob alle bilder auslesen, anzahl der elemente(= bilder) sind das maximum.
So als Variable legst du fest wieviele pics pro seite. Und die aktuelle Seite kannst ja mit get übergeben.

so bei seite 2 sind die maximalen bilder $maxpicsperpage * seite in deinem fall 9*2 = 18 hier ist dann 18 maximalwert. So dann schreibst ne for mit max 18 $i=1
in der for schreibst noch ein if. Wenn die maximalzahl - die seitenpropage kleiner ist als i, dann ausgeben. Also wenn 18-9 = 9 und i größer ist und gleich, dann ausgeben ansonsten else mit nicht ausgeben. fertig.
 
Zurück