• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Bilder Anzahl Begrenzen

Status
Für weitere Antworten geschlossen.

MoeMoe

Neues Mitglied
Hi,

ich wollte mal wieder ein wenig an meinem Gallerie Skript bauchen so das ich es öffters benutzen kan.

Nun habe ich ein Problem dan dem ich schon fast verzeifel.

Es holt alles schön raus zeigts an etc kein problem.

Nur wen ich jetzt die bilder Sozusagen begrenzen will das nur 5 Nebneeinander Ausgegen werden funktinierts absolut nicht egal was ich ausprobiere.

Hier ist mein Skript, wollte testweiße einfach mal in der schleife wo die bilder rausgeholt werden eine if abfrage machen ob er dan einen zeilenumbruch mittels <br> macht tut er leider nicht.

PHP:
     if (substr($file, -4) == ".jpg" || substr ($file, -4) == ".gif" ){ 
     for ($i = $pa; $i<$c;$i++){
     echo"<a href=".$sourcefolder.$bilder[$i]." rel=".lightbox." ><img width=\"150\" height=\"75\" border=\"2\" src=\"".$sourcefolder.$bilder[$i]."\"/></a>\n";
         if ($i  == 5){
         echo"<br>";
         }
          if ($i == $bilder_summe-3){
          break;
          }
          } 
    }

und hier das Ganze Srkipt :

PHP:
<?php    
function bilderholen($sourcefolder)
{
$open = opendir($sourcefolder);
  while ($anzahl=readdir($open))
  {
    if ($anzahl != "." && $anzahl != "..")
      {
      $bilderarray[] = $anzahl;
      }
 }
 
  $bilder_summe = count ($bilderarray) ;
  $open = opendir($sourcefolder);
       
       for ($i = 0; $i <= $bilder_summe; $i++){
          $file = readdir($open); 
      
       if (substr($file, -4) == ".jpg" || substr ($file, -4) == ".gif"){ 
          $bilder[] = $file;
      }else
      echo "";
    }
      $max_pic = 30;        
      $a = 1;
     
     if (isset($_GET['bild_anzahl']))
         $pa = $_GET['bild_anzahl'];
     else
       $pa = 0;
       $c = $pa + $max_pic;
       $zurueck = $pa - $max_pic;
          
     if (substr($file, -4) == ".jpg" || substr ($file, -4) == ".gif" ){ 
     for ($i = $pa; $i<$c;$i++){
     echo"<a href=".$sourcefolder.$bilder[$i]." rel=".lightbox." ><img width=\"150\" height=\"75\" border=\"2\" src=\"".$sourcefolder.$bilder[$i]."\"/></a>\n";
         if ($i  == 5){
         echo"<br>";
         }
          if ($i == $bilder_summe-3){
          break;
          }
     } 
}
 #######################Seiten Navigation################################
if ($pa < $max_pic) {
    
        echo "&nbsp;";
}
       else{ 
       echo "<a href='Image.php?bild_anzahl=$zurueck&seite=Galarie'><button type='button'>$ausgabe Bilder zur&uuml;ck</button></a>";
    }
    if ($c > $bilder_summe){
       
        echo "&nbsp;";
    }
    else{
        echo "<a href='Image.php?bild_anzahl=$c&seite=Galarie'><button type='button'>N&auml;chsten $ausgabe Bilder</button></a>";
    }    


      
      $bilder_für_navi = $bilder_summe;
      $bilderanzeige = $max_pic;
      
      $b =1;
      $katalogseite = 1;
      $katalogseite = @$_GET["bild_anzahl"];
      echo "<br>";
      for($j = 0; $j <= $bilder_für_navi; $j = $j + $bilderanzeige){
      echo "<a href=\"".$_SERVER['PHP_SELF']."?bild_anzahl=$j&seite=Galarie\" >".(($j == $katalogseite) ? "<b class=markierung>".$b."</b>" : $b)."</a> \n";
       $b++;
      }      
     closedir($open);
  }
bilderholen('bilder/')

?>

Thx Schonmal im Voraus Gruß
Moemoe
 
Warum willst Du die Zahl der Bilder nebeneinander per Script begrenzen?
Ich fände es sinnvoller, den Browser das erledigen zu lassen. Du weißt ja gar nicht, wieviel Platz im Browser ist, um Deine Bilder anzuzeigen. Wenn Du einfach alle Bilder nebeneinander anzeigst, macht der Browser ja selber einen Zeilenumbruch, wenn die maximale Breite des Containers erreicht ist.

Damit ists dann natürlich kein PHP-Problem mehr, sondern ein CSS-Problem, bzw. ein behobenes :-)
 
Man kann das ganze auch etwas unkomplizierter gestalten:
PHP:
define('ANZEIGE_BILDER', 20);

function bilderholen($sourcefolder) {
    return array_filter(
        scandir($sourcefolder),
        create_function('$a', '$ext = end(explode(\'.\', $a)); return $a == \'.\' || $a == \'..\' || $ext != \'jpg\' || $ext != \'gif\' ? false : true;')
    );
}

$bilder = array_chunk(bilderholen('ordner/'), ANZEIGE_BILDER);
$seite = 1;
if (isset($_GET['seite']) && !empty($_GET['seite'])) {
      $seite = intval($_GET['seite']); // oder mit (int) casten
}

$anzahl_seiten = count($bilder);
$bilder_auszugeben = isset($bilder[$seite - 1]) ? $bilder[$seite - 1] : $bilder[0];

// $bilder_auszugeben durchloopen
// Seiten durchloopen
 
Aus Performancegründen besser so schreiben:
PHP:
function bilderholen($sourcefolder) {
    $filter = create_function('$a', '$ext = end(explode(\'.\', $a)); return $a == \'.\' || $a == \'..\' || $ext != \'jpg\' || $ext != \'gif\' ? false : true;');
    return array_filter(
        scandir($sourcefolder),
        $filter
    );
}
 
aufjedefall thx für die schnelle hilfe hatte nur leider gestern keine zeit mir es anzugucken, hab jetzt einfach mal deine bausteine eingefügt und es schmeist keine fehler nur es werden auch keine bilder ausgegeben.

ich poste das skript.

PHP:
<?php    
define('ANZEIGE_BILDER', 20);

function bilderholen($sourcefolder) {
    $filter = create_function('$a', '$ext = end(explode(\'.\', $a)); return $a == \'.\' || $a == \'..\' || $ext != \'jpg\' || $ext != \'gif\' ? false : true;');
    return array_filter(
        scandir($sourcefolder),
        $filter
    );

} 

$bilder = array_chunk(bilderholen('bilder/'), ANZEIGE_BILDER);
$seite = 1;
if (isset($_GET['seite']) && !empty($_GET['seite'])) {
      $seite = intval($_GET['seite']); // oder mit (int) casten
}

$anzahl_seiten = count($bilder);
$bilder_auszugeben = isset($bilder[$seite - 1]) ? $bilder[$seite - 1] : $bilder[0]; 
      
      $max_pic = 30;        
      $a = 1;
     
     if (isset($_GET['bild_anzahl']))
         $pa = $_GET['bild_anzahl'];
     else
       $pa = 0;
       $c = $pa + $max_pic;
       $zurueck = $pa - $max_pic;
          
     if (substr($file, -4) == ".jpg" || substr ($file, -4) == ".gif" ){ 
     for ($i = $pa; $i<$c;$i++){
     echo"<a href=".$sourcefolder.$bilder[$i]." rel=".lightbox." ><img width=\"150\" height=\"75\" border=\"2\" src=\"".$sourcefolder.$bilder[$i]."\"/></a>\n";
         if ($i == $bilder_summe-3){
         break;
     }
   } 
}
    
      
    if ($pa < $max_pic) {
    
        echo "&nbsp;";
    }
    else{ 
       echo "<a href='Image.php?bild_anzahl=$zurueck&seite=Galarie'><button type='button'>$ausgabe Bilder zur&uuml;ck</button></a>";
    }
    if ($c > $bilder_summe){
       
        echo "&nbsp;";
    }
    else{
        echo "<a href='Image.php?bild_anzahl=$c&seite=Galarie'><button type='button'>N&auml;chsten $ausgabe Bilder</button></a>";
    }    

 #######################Seiten Navigation################################
      
      $bilder_für_navi = $bilder_summe;
      $bilderanzeige = $max_pic;
      
      $b =1;
      $katalogseite = 1;
      $katalogseite = @$_GET["bild_anzahl"];
      echo "<br>";
      for($j = 0; $j <= $bilder_für_navi; $j = $j + $bilderanzeige){
      echo "<a href=\"".$_SERVER['PHP_SELF']."?bild_anzahl=$j&seite=Galarie\" >".(($j == $katalogseite) ? "<b class=markierung>".$b."</b>" : $b)."</a> \n";
       $b++;
      }      

  
bilderholen('bilder/')

?>
 
Du musst nur noch $bilder_auszugeben durchzuloopen. Einfach mit for/foreach. $anzahl_seiten sagt dir, wie viele Seiten es gibt, da brauchst du nur einfaches for.
 
hab schon bissel was probiert @ crash nur ich weiß nicht wirklich wie du es meinst mit dem for each und durchloopen. :?

Meinst das ich meine Bilder ausgabe also vor dem

PHP:
 if (substr($file, -4) == ".jpg" || substr ($file, -4) == ".gif" ){ 
     for ($i = $pa; $i<$c;$i++){
     echo"<a href=".$sourcefolder.$bilder[$i]." rel=".lightbox." ><img width=\"150\" height=\"75\" border=\"2\" src=\"".$sourcefolder.$bilder[$i]."\"/></a>\n";
         if ($i == $bilder_summe-3){
         break;
     }
   }

das foreach setzten soll ? oder

etwa so

PHP:
foreach(array as $wert){
for-schleife {
Bilderausgabe 
}
}

zumindest hab ich das mir so mal aufgemalt
Gruß moemoe
 
Status
Für weitere Antworten geschlossen.

Neueste Beiträge

Zurück
Oben