for oder foreach funktioniert nicht =(

-Ener-

Erfahrenes Mitglied
Hallo, mit dem beiliegendem Script versuche ich Dateien aus meinem Ordner anzuzeigen, dabei sollen aber nur 13 stück angezeigt werden. z.Z. zeigt es 13 Datensätze, aber immer nur den gleichen 13 mal.... wie bekomm ich des hin? Soll ne Blätterfunktion werden.

PHP:
<?php 
$uri = $_SERVER['REQUEST_URI']; 
$dir = '/home/www/web55/html/tomb2/gallery/'; 
$verz = opendir($dir); 
$files = array(); 
while($file = readdir($verz)) { 
    if($file != '.' and $file != '..'  and $file != 'dir.php') { 
   
$files[filemtime($dir.$file)] = $file;

    } 
    
} 

krsort($files);
closedir($verz); 

$count = "1";
$count2 = "1";
$zeilen_pro_seite = 13;
 
for ($i=1;$i<=13;$i++) {
foreach ($files as $file) {


$time = filemtime("gallery/$file/");
$date = date("d.m.Y", $time);
$count++;
$count2++;
if ($count > 2){

$style="bgcolor=f0fcfc";
$count = "0";
$count++;
}
else {
    $style = "";
}
$array=scandir("gallery/$file/");
$filecount=count($array)-2;
}
echo"<tr $style><td width=55% style=\"border:2px solid #F0FCFC\"> ? <span class=text1>$file</span></td><td  style=\"border:2px solid #F0FCFC\"><span class=text1>Datum: $date</span></td><td style=\"border:2px solid #F0FCFC\"><span class=text1>Fotos: $filecount</span></td></tr>";
}

    

?>
 
Das liegt daran das du immer wieder mit 1 beginnt zu zählen da ist klar das er wieder dann von vorne anfängt.

Du mußt auf der nächsten Seite vom alten Wert weitere 13 rauf zählen. also dann von 13 bis 26 und dann wieder von 26 bis 39 unsw. bis eben das Ende erreicht ist.

Mfg Splasch
 
Welche nächste Seite? Es soll ja erstma auf der ersten Seite 13 richtige Ausgaben bringen und das funktioniert nicht. DIe Seitennavigation ist ja noch garnicht gemacht....
 
Soo also du musst das ganze innerhalb der for() schleife auslesen und ausgeben. Mit der Foreach hast du nicht die möglichkeiten einfach nur einen bereich auszulesen.

Hier mal der hinterer Teil deines Programms ein wenig abgeändert. Getestet habe ich es nicht aber so in die richtung geht auf jeden Fall die Lösung.

PHP:
$zeilen_pro_seite = 13;

// Wir stellen sicher das $start größer als 0 und kleiner als die maximale anzahl an Elementen ist.
$start = min(max($zeilen_pro_seite * ($_GET['page'] - 1), 0), count($files));
$end    = min($zeilen_pro_seite*$_GET['page'], count($files));

for ($i=$start;$i<=$end;$i++) {
    $file = $files[$i];
    
    $time = filemtime("gallery/$file/");
    $date = date("d.m.Y", $time);
    if(is_dir("gallery/$file")){
        $array=scandir("gallery/$file/");
        $filecount=count($array)-2;
    }
    // Abwechselnd die Zeilen Farbig machen
    $style==''?'bgcolor="#f0fcfc"':'';
    echo"<tr $style>
        <td width=55% style=\"border:2px solid #F0FCFC\">
            <span class=text1>$file</span>
        </td>
        <td style=\"border:2px solid #F0FCFC\">
            <span class=text1>Datum: $date</span>
        </td>
        <td style=\"border:2px solid #F0FCFC\">
            <span class=text1>Fotos: $filecount</span>
        </td>
     </tr>";
}

// Seitenauswahl anzeigen:
for ($i=0;$i<ceil(count($files)/$zeilen_pro_seite);$i++) {
    echo "[<a href=\"?page=".($i+1)."\">".($i+1)."</a>] ";
}
 
Ich hab für genau DIESES Problem genau das Richtige parat^^

Da unten dran hängt ne File... Da drin is ne PHP-Class... ;)
Ne PAGER CLASS Erleichtert die Problematik mit mehreren Seiten etwas ^^

Zieht es euch rein und habt Spaß damit (!)
 

Anhänge

Zurück