Im Teil 1 ging es hauptsächlich um die Erzeugung einer dynamischen Downloadliste für eine Intranetseite. Grundsätzlich funktioniert es, aber es blieb noch Luft nach oben, denn es gibt ein paar unschöne Verhaltensweisen bei der Ausgabe.
Bis jetzt werden z.B.: die Verzeichnislinks „.“ und „..“ mit ausgegeben, sowie evtl. erstellte Verzeichnisse.
Da ich beides nicht möchte, werde ich diese abfangen.
„.“ und „..“ unterdrücke ich mit einer if-Abfrage
1 2 3 4 5 6 7 8 |
... if ($file != "." && $file != ".." ){ ?> <a href="<?php echo $fileinfo['dirname']."/".$fileinfo['basename'];?>"><?php echo $fileinfo['basename']; ?></a> <?php echo $size ; ?>kb vom:<?php echo date("d.m.Y",$cdate) ; ?><br> <?php }; }; ?> |
Um wirklich nur Dateien in der Liste anzuzeigen, teste ich auf „is_file“ oder auf (alternativ geht auch !is_dir )
1 2 3 |
if (is_file('./files'."/".$file)) { ... } |
Mit beiden Bedingungen sieht das Listing wie folgt aus
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<?php foreach (scandir('./files') as $file) { if (is_file('./files'."/".$file)) { $fileinfo = pathinfo('./files'."/".$file); $size = ceil(filesize('./files'."/".$file)/1024); $cdate = filemtime('./files'."/".$file); if ($file != "." && $file != ".." ){ ?> <a href="<?php echo $fileinfo['dirname']."/".$fileinfo['basename'];?>"><?php echo $fileinfo['basename']; ?></a> <?php echo $size ; ?>kb vom:<?php echo date("d.m.Y",$cdate) ; ?><br> <?php }; }; }; ?> |
Um das Ganze nun noch in eine etwas ansprechendere Form zu bringen, übergebe ich das ganze in eine Auflistung: „<ul>…<li>…</li> …</ul>“
Somit ergibt sich folgendes Listing. (mit nochmal etwas angepassten Ausgabebeispiel.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<h1>Downloadliste</h1> <ul> <?php foreach (scandir('./files') as $file) { if (is_file('./files'."/".$file)) { $fileinfo = pathinfo('./files'."/".$file); $size = ceil(filesize('./files'."/".$file)/1024); $cdate = filemtime('./files'."/".$file); if ($file != "." && $file != ".." ){ ?> <li><a href="<?php echo $fileinfo['dirname']."/".$fileinfo['basename'];?>"><?php echo $fileinfo['filename']; ?></a> Typ: <?php echo $fileinfo['extension'] ; ?> Größe: <?php echo $size ; ?>kb vom: <?php echo date("d.m.Y",$cdate) ; ?></li> <?php }; }; }; ?> </ul> |
Das Ganz könnte man, anstatt in eine Auflistung, in einer Tabelle ausgeben.
Aber das kann ja Jeder für sich noch weiter ausprobieren….