Aus Ordnern ausgelesene Dateien auf mehreren Seiten verteilen

Ultraflip

Erfahrenes Mitglied
Hi Leute!

Ich hab im Moment ein kleines Problem mit einem PHP Script ... unzwar lese ich aus einem Ordner Bilder aus um sie in eine Galerie zu intigrieren ... was vereinfacht so aussieht:

PHP:
 <?php
 $zahl=0;
 $dirname = "./bla/thumb";
$images = array();
$dir = opendir($dirname);
while($datei = readdir($dir)) {
    if ($datei != "." && $datei != ".." && !empty($datei)) {
        $images[] = $datei;
    }
}
asort($images);
foreach($images as $temp)
{

$pic = substr($temp, 0, 8);
$endung = ".jpg";
$pic = $pic.$endung;
echo "<td width=\"20%\" height=\"110\" align=\"center\">
<a href=\"#\" onClick=\"showPic('http://bla.dyndns.org/blabla/bla/$pic')\">
<img border=\"0\" src=\"bla/thumb/$temp\" alt=\"\"></a>
</td>";
	$zahl = $zahl+1;
	if($zahl==4)
	{
		echo "</tr><tr>";
		$zahl=0;
	}
}
 ?>

So weit so gut ...

Ich möchte jetzt allerdins nicht alle Bilder auf einer Seite, sondern eine Blätterfunktion, also das z.B. immer nur 20 Bilder angezeigt werden und auf der nächsten Seite die nächsten 20 usw ...

Mit MySQL hab ich das ganze schon durch "LIMIT" lauffähig, aber noch nicht mit Ordnerauslesen.

Wäre super, wenn mir jemand helfen könnte!

MfG
Ultraflip
 
Leider nein ... So wie ich das aus Deinem Gallerie Script rauslese, müssen alle Bilder fortlaufend nummeriert sein ... stimmts?

Gerade das will ich aber eigentlich vermeiden ... Ich möchte einfach einen Ordnerinhalt auslesen und mehrere Seite verteilen lassen, ohne dass die Benennung eine Rolle spielt ...

MfG
Ultraflip
 
Eine Möglichkeit wäre die Dateien in ein Array einzulesen und dann zum Beispiel nur die ersten 20 Elemente des Arrays auszugeben. Dabei musst du dann hald auf die Seiten entweder das Array mitübergeben oder das Array immer gleich sortieren, damit die Elemente auf jeder Seite die gleiche Reihenfolge haben.
MfG Flo
 
Nein foreach nicht, aber eine for-Schleife:
PHP:
for($i = 1; $i <= 20; $i++)
{ 
   echo $array[$i]; 
}

bzw. auf Seite 2 dann:
PHP:
for($i = 21; $i <= 40; $i++)
{ 
   echo $array[$i]; 
}
 
Sorry für Doppeltpost ... aber kurzer Nachtrag:

Das Array beginnt bei 0 also ...

PHP:
for($i = 0; $i <= 19; $i++)
{ 
   echo $array[$i]; 
}

so funktionierts!

Danke nochmals!
 
Da du wahrscheinlich keine feste Anzahl von Dateien und damit auch keine feste Arraylänge hast, solltest du das etwas dynamischer aufbauen:
PHP:
$offset = 0;
$count = 20;

while( isset($array[$offset]) && $count > 0 ) {
	…
	$offset++;
	$count--;
}
 
Zurück