Galerie Problem

5im0n

Mitglied
Hallo
ich erstelle gerade eine Gallerie. Funktioniert auch bislang nur jetzt bin ichd abei eine Blätterfunktion einzbauen. Das Problem ist die Seitenzahlen werden zwar schon ausgerechnet nur er zeigt immer noch alle Bilder auf einer Seite an.
Was muss ich da noch zu schreiben?
PHP:
<?php

	$ordner_pfad ='bilder';       //Ordner mit Bildern
	$anzahl_bilder  = count(glob("bilder/*.JPG"));   // JPG Bilder in Ordner 
	$bilder_size = 200;			//größe der Bilder
	$bilder_pro_seite = 5;		//Bilder pro seite
	$seite = $_GET["seite"];

if(!isset($seite))
   {
   $seite = 1;
   }


$start = $seite * $bilder_pro_seite - $bilder_pro_seite;

$wieviel_seiten = $anzahl_bilder / $bilder_pro_seite;


      if($ordner = opendir($ordner_pfad))

      {

          while($bilder = readdir($ordner))

          {
				if (preg_match("/\.(jpg|gif|png)$/i", $bilder)) 

echo '<img src="'.$ordner_pfad."/".$bilder.'" width="'.$bilder_size.'">';			
}

          closedir($ordner);
}






echo "<div align=\"center\">";
echo "<b>Seite:</b> ";



for($a=0; $a < $wieviel_seiten; $a++)
   {
   $b = $a + 1;


   if($seite == $b)
      {
      echo "  <b>$b</b> ";
      }


   else
      {
      echo "  <a href=\"?seite=$b\">$b</a> ";
      }


   }
echo "</div>";



?>
Vielleicht kann mir ja jemand weiter helfen.
Danke schon mal.
Gruß
5im0n
 
Weil du einfach pauschal alle Bilder ausgibst.

PHP:
<?php while($bilder = readdir($ordner)) {} ?>

Lade einfach alle Bildernamen in ein Array und greife dann auf die Array-Indexe zu:

PHP:
<?php
$bilder_array = array();
while($bilder = readdir($ordner)) 
{ 
	if (preg_match("/\.(jpg|gif|png)$/i", $bilder))
	{
		$bilder_array[] = $bilder;
	}
}

$bilder_ende  = ($bilder_pro_seite * $seite);
$bilder_start = ($bilder_ende - $bilder_pro_seite);
for($i = $bilder_start; $i <= $bilder_ende; $i++)
{
	$aktuelles_bild = $bilder_array[$i];
}
?>

Sollte funktionieren, ungetestet.

Gruß
dtdesign
 
PHP:
$start = $seite * $bilder_pro_seite - $bilder_pro_seite;

$wieviel_seiten = $anzahl_bilder / $bilder_pro_seite;

$index = 0;

      if($ordner = opendir($ordner_pfad))
      {

          while($bilder = readdir($ordner))
          {

                if($index>$start && $index < ($start+$bilder_pro_seite)
                { 
                   if (preg_match("/\.(jpg|gif|png)$/i", $bilder)) 
                   echo '<img src="'.$ordner_pfad."/".$bilder.'" width="'.$bilder_size.'">';            
                 }
                $index++;
          }

          closedir($ordner);
      }
denke so müste es gehen
oh da war jemand schneller
 
Zuletzt bearbeitet:
PHP:
$start = $seite * $bilder_pro_seite - $bilder_pro_seite;

$wieviel_seiten = $anzahl_bilder / $bilder_pro_seite;

$index = 0;

      if($ordner = opendir($ordner_pfad))
      {

          while($bilder = readdir($ordner))
          {

                if($index>$start && $index < ($start+$bilder_pro_seite)
                { 
                   if (preg_match("/\.(jpg|gif|png)$/i", $bilder)) 
                   echo '<img src="'.$ordner_pfad."/".$bilder.'" width="'.$bilder_size.'">';            
                 }
                $index++;
          }

          closedir($ordner);
      }
denke so müste es gehen
oh da war jemand schneller

Meiner Meinung nach, führt dies nicht zum Erfolg. Begründung:

1. Es fehlt eine schließende Klammer im if() vor dem if(preg_match(...))
2. Woher soll PHP denn wissen, welches Bild er auswählen soll? Soweit ich den Code durchdenke, fängt das Script _immer_ beim ersten im Verzeichnis an?!

Gruß
dtdesign
 
Danke für die Antworten.
Leider hats noch nicht ganz funktiniert.

@dtdesign:Hat leider nichts verändert hab auch schon rumprobiert aber leider nichts.

@superharry: Zeigt die Bilder schon auf mehreren seiten an aber leider nicht ganz so wie ich das wollte er zeigt auf der ersten 3 auf der zweiten 4 und auf der dritten 3. (11 bilder sind im ordner von der Menge kommt es hin).

Gruß
5im0n
 
Hallo,

ich habe mir die Mühe gemacht, das Script komplett zu testen. Ich garantiere dir, dass folgendes Script funktioniert, ist ausnahmsweise getestet wurden ;)

Solltest du noch Fragen zur Programmierung haben, dann frag ruihg, wird schon keiner lachen ;)

Gruß
dtdesign

gallerie.php
PHP:
<?php 

    $ordner_pfad		= 'images';									// Ordner mit Bildern   
    $bilder_size		= 200;										// Größe der Bilder 
    $bilder_pro_seite	= 5;										// Bilder pro seite 
    
	if(!isset($_GET['seite']))
	{ 
		$seite = 1; 
	}
	else
	{
		$seite = $_GET['seite'];
	}

	$start = $seite * $bilder_pro_seite - $bilder_pro_seite; 
    
	if($ordner = opendir($ordner_pfad)) 
	{  
		$bilder_array = array();
		while($bilder = readdir($ordner))
		{
		    if (preg_match("/\.(jpg|gif|png)$/i", $bilder))
		    {
		        $bilder_array[] = $bilder;
		    }
		}
		
		$anzahl_bilder		= count($bilder_array);
		$wieviele_seiten	= ceil($anzahl_bilder / $bilder_pro_seite);
		$bilder_ende		= (($bilder_pro_seite * $seite) - 1);
		$bilder_start		= (($bilder_ende - $bilder_pro_seite) + 1);
		
		if($seite == $wieviele_seiten)
		{
			for($i = $bilder_start, $size = count($bilder_array); $i < $size; $i++)
			{
				$aktuelles_bild = $bilder_array[$i];
				echo "<img src=\"{$ordner_pfad}/{$aktuelles_bild}\" width=\"{$bilder_size}\">";
			}
		}
		else
		{
			for($i = $bilder_start; $i <= $bilder_ende; $i++) 
			{
				$aktuelles_bild = $bilder_array[$i];
				echo "<img src=\"{$ordner_pfad}/{$aktuelles_bild}\" width=\"{$bilder_size}\">"; 
			}
		}
		
		closedir($ordner);
	}
	
	echo "<div align=\"center\">"; 
	echo "<b>Seite:</b> "; 
	
	for($i = 0; $i < $wieviele_seiten; $i++)
	{
		$next	= $i + 1;
		
		if($seite == $next)
		{
			echo "  <strong>{$next}</strong> ";
		}
		else
		{
			echo "  <a href=\"?seite={$next}\">{$next}</a> ";
		}
	}
	
	echo "</div>"; 
?>
 
Zuletzt bearbeitet:
Vielen Dank klappt super.
Hat jetzt vielleicht noch einer eine idee wie ich die Bilder dann groß anziegen lassen kann? Ich bin schon soweit das er alle Bilder in einer zweiten datei lädt und nacheinander anzeigt jetzt weiß ich nur nicht wie ich das verlinkenn soll das er ,wenn ich bild5 anklick dass er mit dann auch bild 5 in groß anzeigt.
Gruß
5im0n
 
Zurück