blättern bei dyn. Script

-Ener-

Erfahrenes Mitglied
Dieses Script erstellt thumbnails im vorgegebenen Ordner, gibt 5 Bilder in einer Zeile aus. Ich möchte nun das es 5 Bilder in einer Zeile doch nur 4 Zeilen ausgibt und man navigieren kann mit "next" und "back" also eine Blätterfunktion... ich habe schon sehr viele Sachen ausprobiert nur stoße ich da immer auf etliche Probleme.

Ich habe auch schon Denkansätze bekommen aber die waren immer so verallgemeinert das ich nicht wusste wie ich sie einsetze, könnt ihr mir speziell für dieses Script sagen wie ich das hinbekomme?

Kleines Beispiel: http://www.trancebeats.com/tip/dir.php?pfad=Ordner/Klassenfahrt

PHP:
<table cellspacing="5" cellpadding="0" align="center" valign="top"><tr>
<?php
$pic_zeile = "";
$datei_end = array("gif", "jpg", "JPG");
$groesse = "146";
$name_anz = "ja";
$border = "0";
$gd_lib = "2.0";
$datei_name = $_SERVER["PHP_SELF"];
$fileplace = ".";
if (isset($pfad) || empty($pfad)) echo "";
function createThumb($img_src, $img_width , $img_height, $des_src, $folder) {
	 if (!file_exists($folder. "/" .$des_src)) {
		 umask(0000);
		 if (!mkdir($folder. "/" .$des_src, 0777)) {
			die("Konnte Ordner ".$folder. "/" .$des_src." nicht erstellen!");
		 }
	 }
	 $im = imagecreatefromjpeg($folder. "/" .$img_src);
	 list($src_width, $src_height) = getimagesize($folder. "/" .$img_src);
	 if($src_width >= $src_height) {
		 $new_image_width = $img_width;
		 $new_image_height = $src_height * $img_width / $src_width;
	 }
	 if($src_width < $src_height) {
		 $new_image_height = $img_width;
		 $new_image_width = $src_width * $img_height / $src_height;
	 }
	 if ($gd_lib == "1.6") {
		 $new_image = imagecreate($new_image_width, $new_image_height);
		 imagecopyresized($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
	 }
	 else {
		 $new_image = imagecreatetruecolor($new_image_width, $new_image_height);
		 imagecopyresampled($new_image, $im, 0, 0, 0, 0, $new_image_width,$new_image_height, $src_width, $src_height);
	 }
	 imagejpeg($new_image, $folder. "/" .$des_src. "/" .$img_src, 100);
}
function name_of_file($filename) {
	 $len	= strlen(strrchr($filename,"."));
	 $ganz = strlen($filename) + 1;
	 $grafik = substr($filename,$ganz-$len);
	 return $grafik;
}
$i	 = 0;
$zaehler = 0;
$zaehler2 = 0;
if (!isset($pfad) ||
		empty($pfad)) {
	 $verz = opendir ($fileplace);
	 while ($file = readdir ($verz)) {
		 if (name_of_file($file) == "" &&
			$file				!= "." &&
			$file				!= ".." ) {
			$zaehler++;
$zaehler2++;
		 }
	 }
	 closedir($verz);
}
else {
	 if (file_exists($pfad)) {
		 $verz = opendir ($pfad);
 
 
		 while ($file = readdir ($verz)) {
			$filegrafik = strtolower(name_of_file($file));
			if (in_array ($filegrafik, $datei_end)) {
			 $i++;
			 $zaehler++;
	 $zaehler2++;
			 if ($i == $pic_zeile + 1) {
				 $i = 1;
 
			 }
 
if (!file_exists($pfad. "/thumbnails/" .$file)){
			 createThumb($file, $groesse, $groesse, "thumbnails", $pfad);
}
 
$size = getimagesize($pfad. "/" .$file);
$picur = rawurlencode ($pfad);
$picurl = ereg_replace('%2F','/', $picur);
$picfil = rawurlencode ($file);
$picfile = ereg_replace('%2F','/', $picfil);
 
 
echo "<script type=text/javascript>
 
function popup_pic$i() {
bild =
window.open('popup_pic.php?src=$picurl&file=$picfile', 'bild', 'width=$size[0]h,height=$size[1]');
bild.focus();
}
</script>
 
<td background=".$picurl."/thumbnails/".$picfile."><a href=\"javascript:popup_pic$i()\" onmouseover=\"status='';return true;\" onclick=\"status='';return true;\"><img src=\"Bilder/rahmen.gif\" border=\"0\" width=\"88\" height=\"70\"></a></td>";
 
if($zaehler==5){
echo('</tr><tr>');
$zaehler=0;
}
 
}
		 }
 
		 closedir($verz);
	 }
 
}
?>
</tr></table>
 
Den folgenden Abschnitt nutze ich um meine News auszugeben.
5 auf einer Seite.

Das muesstest Du also fuer Deine Bilder anpassen, und da Du 20 Bilder pro Seite ausgibst muesstest Du dann ueberall wo ich eine 5 habe eine 20 draus machen.

PHP:
if (isset($newspage))
	{
		$newsstart=($newspage-1)*5;
	}
else
	{
		$newsstart=0;
	}
$news=mysql_query("select * from news order by id desc limit $newsstart,5",$db);
while ($new=mysql_fetch_assoc($news))
	{
		$newstext=replacetags(htmlentities($new['text']));
		$users=mysql_query("select * from users where id='".$new['userid']."'",$db);
		$user=mysql_fetch_assoc($users);
		$newsfile=fopen("templates/news.html","r");
		$newsoutput=fread($newsfile,filesize("templates/news.html"));
		fclose($newsfile);
		$newsoutput=str_replace("{newstitle}",$new['title'],$newsoutput);
		$newsoutput=str_replace("{username}",$user['username'],$newsoutput);
		$newsoutput=str_replace("{newsdate}",date("D d.m.Y, H:i:s T",$new['newsdate']),$newsoutput);
		$newsoutput=str_replace("{newstext}",nl2br($newstext),$newsoutput);
		$changes[$changesection].=$newsoutput;
	}
$news=mysql_query("select * from news",$db);
$num_news=mysql_num_rows($news);
if ($num_news>5)
	{
		$num_pages=$num_news/5;
		if ($num_pages>round($num_pages))
			{
				$num_pages=round($num_pages)+1;
			}
		else
			{
				$num_pages=round($num_pages);
			}
		$changes[$changesection].='Page ';
		for ($counter=1;$counter<=$num_pages;$counter++)
			{
				$changes[$changesection].='<a class="news-pagelink" href="index.php?page='.$counter.$sessionparm_link.'">'.$counter.'</a>';
			}
	}
 
Es sollte auch machbar sein, dass so umzuschreiben, dass es ohne MySQL funktioniert.
Dazu muesstest Du am besten die Bildnamen in einen indizierten Array speichern.
So kannst Du dann anhand der uebergebenen Seitenzahl feststellen bei welchem Bild Du mit der Ausgabe anfangen kannst.
Die Berechnungen duerften mehr oder weniger die gleichen sein.
 
ein indizierter array? also ich schreibe jetzt innerhalb der while-schleife ein z.B. $test = array($file); welcher doch bestimmt alle $file`s in den array schreibt stimmts?
 
Mit dem array()-Befehl hab ich noch nicht gearbeitet, ich weiss nicht ob der Daten hinzufuegt.
Ich mach das immer so:
PHP:
$my_array[]=$file;
 
Du musst halt die Stelle im Array feststellen an der Du anfangen musst auszugeben.

Lass mich eben essen und das Qualifying zu Ende schauen, dann guck ich mal ob ich Dir das Script umgebastelt krieg.
 
So, Abendbrot ist gegessen. Jetzt setz ich mich mal dran.
5 Euro sind ja schonmal ein Anfang fuer die 2000 die ich brauch um mit meiner Freundin zur Nature One zu kommen. ;)
 
Zurück