Bilder aus Ordner lesen und auf mehrere Seiten verteilen...

stonk

Erfahrenes Mitglied
Tach zusammen

Ich möchte aus einem Ordner alle Bilder auslesen... Dies ist ja nicht unbedingt schwierig, aber ich möchte sie dann auf mehrere Seiten verteilen... (Beispielsweise 9 Bilder pro Seite...)

Hier mein Script um die Bilder auszulesen und sie in einer Tabelle anzugeigen:
PHP:
$dir = "img/";

if ($handle = opendir($dir)) {

$spalten = "0";
echo "<table align=center cellspacing=10>";
   for ($i=-2;false !== ($file = readdir($handle));$i++) { 
	if ($file != "." && $file != "..") { 

		//** Start Tabellen Funktion **

		If ($spalten > "3") {
			echo "</tr>\n";
			$spalten = "0";
		}

		If ($spalten == "0") {
			echo "<tr>\n";
			$spalten = "1";
		}
	
			If ($spalten <= "3") {
				echo "<td align=center><a href=javascript:bemerkungen('index_single.php?picno=$i') border=0><img src=$dir$file border=0></a></td>\n";
				$spalten++;
			} 
		

		//** Ende Tabellen Funktion **

	}
   }
echo "</tr>\n</table>";

   closedir($handle); 
}

?>

Hat jemand eine Idee :p
Besten dank schon im Voraus!

mfg stonk
 
Hallo ich würde vielleicht Mysql einsetzen lade die Bilder in eine Tabelle,
und holl sie anschließend wieder raus.

Matte ;-]
 
Du musst eigentlich nur alle Bilder im Ordner in ein Array übertragen, und dann eine Teilmenge des Arrays ausgeben.
Per GET wird hierbei die Seitenzahl übergeben.

PHP:
	define('IMG_DIR','./'); //Ordner mit den Bildern
	define('IMGS_PER_PAGE',9); //erlaubte Bilder pro Seite
	$img_ext = array('jpg','gif','png'); //erlaubte Extensions
//scandir() definieren, falls phpversion zu klein
	if(version_compare(phpversion(),'5.0.0','<')) {
		function scandir($dir) {
			$handle=opendir ($dir);
			$i = 0;
			while (false !== ($file = readdir($handle))) {
				$result[$i++] = $file;
			}
			closedir($handle);
			asort($result);
			return $result;
		}
	}
	
	if(isset($_GET['page'])) {
		$page = $_GET['page'];
	} else {
		$page = 1;
	}
	
	//Ordner scannen und Dateierweiterung überprüfen
	$dir_array = scandir(IMG_DIR);
	$i = 0;
	foreach($dir_array as $file) {
		$exp = explode('.',$file);
		$ext = $exp[count($exp)-1];
		if(in_array(strtolower($ext),$img_ext)) { // $img_ext ist ein Array mit erlaubten Extensions
			$img_array[$i++] = $file;
		}
	}
  	
	$start = ($page-1) * IMGS_PER_PAGE; //Startindex
	$end = $page * IMGS_PER_PAGE; //Endindex
                //Alles zwischen Start- und Endindex ausgeben
	for($i = $start; $i < $end AND $i < $image_count; $i++) {
		echo '<img src="'.ROOT_DIR.$img_dir.$img_array[$i].'"><br>';
	}

Das ganze ist weder vollständig noch getestet ;)
Das Ausgeben in Tabellenform hab ich der Einfachheit halber Weggelassen.
Ich hoffe, es ist Anregung genug, ansonsten kannst du ja noch fragen :)
 
Zuletzt bearbeitet:
Alternativ kannst du dir mal das Galleriescript meines alten Kumpel Hannes anschauen, zu finden auf
http://www.shneeble.com/
Dort dann im Downloadbereich, das liest automatisch alle Bilder in den Unterordnern ein und zeigt sie nach Kategorien ( welche die Namen der Unterordner sind ) an.

Aus dem Script konnte ich einiges lernen, natürlich kann man es auch einfach so benutzen ohne etwas zu lernen :-)
 
Jo mein Script funktioniert genau so, aber ich wollte ihn nicht mit Code erschlagen, daher hab ich nur Schnipsel davon aneinandergereiht, die für sein Problem relevant sind.
Wenn du viele Bilder hast, ist die Verwendung eines solchen Scripts natürlich sinnvoller.
 
Danke für eure hilfe
habe nun die mysql variante ausgewählt... war am einfachsten für mich ;)
so, habs geschaft :p

danke!
mfg stonk
 
Zuletzt bearbeitet:
Zurück