<?php   ### filelist_paginated.php ###

error_reporting(E_ALL);


#---- Parameter ------------------
$pfad = "C:/Programme/xampp";
$limit = 5;

#---- Scriptvariablen ------------

$_dateiarray = array();
$pfad = rtrim($pfad,'/').'/';   ## EINEN abschließenden Slash sicherstellen
$out = array();                 ## Ausgabe-Variablen für html

#==============================================================================
# php main
#==============================================================================

if($ordner = opendir($pfad))
{
    while(false!==($datei = readdir($ordner)))
    {  
        ## Anderenfalls würde auch beim Dateinamen '0' (null) abgebrochen werden
   
        if(is_file($pfad.$datei))
        {
            ## Damit Du Links und andere auch ausschließt.
            ## Wenn Du links zulässt, musst Du auf Rekursion prüfen, dann wirds erst
            ## richtig spanned
 
            $_dateiarray[] = $datei;
        }
    }
    closedir($ordner);
}

## für Debugzwecke die echos freigeben
#echo "<pre>\r\n";
#echo htmlspecialchars(print_r($_dateiarray,1));
#echo "</pre>\r\n";

## Präventiv anzuzeigende Seite auf 0 setzen
$page = 0;

## ausrechnen, welches die höchstmögliche Seitennummer ist
$maxpage = intval(count($_dateiarray)/$limit);

## Wenn per GET eine Seitennummer übermittelt wurde, diese benutzten

  if(isset($_GET['page']))
  {
      $page = intval($_GET['page']);
  }

## Die erlaubten Grenzen überprüfen
  if ($page < 0)        { $page = 0; }
  if ($page > $maxpage) { $page = $maxpage; }

## Start- und Stopgrenze ermitteln
$start = $page*$limit;
$stop  = $start+$limit;

## Ausgabe durchführen

$out['filelist'] = "    <dir class=\"filename\">\r\n";

foreach($_dateiarray as $key => $val)
{
    if($key >= $stop) { break; }  ## Wenn Stopgrenez erreicht ist,. Schliefe abbrechen
    if($key >= $start)
    {
        $out['filelist'] .= "        <li class=\"filename\">".htmlspecialchars($val)."</li>\r\n";
    }
}

$out['filelist'] .= "    </dir>\r\n";

## Links aufbauen

$out['linklist'] = "    <ul class=\"pagelink\">\r\n";

for ($i = 0; $i <= $maxpage; $i++)
{
    $out['linklist'] .= "        <li class=\"pagelink\"><a href=\"{$_SERVER['SCRIPT_NAME']}?page=$i\">".($i+1)."</a></li>\r\n";
}

$out['linklist'] .= "    </ul>\r\n";
$out['header'] = "<h2>Verzeichnisinhalt von <em>".htmlspecialchars($pfad)."</em></h2>\r\n";


###############################################################################
# HTML Output
###############################################################################
?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
  <TITLE>Verzeichnis anzeigen</TITLE>

  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">

  <style type="text/css">
 
    body 
    {
      font-family:century gothic, tahoma, arial,sans-serif;
      font-size: 0.8em;
    }
  
    div 
    {
       display:table; /* Inhaltsbreite  (zumindest in Gecko) */
    }
    
    * html div, * html ul 
    {
       height:1%;  /* notwendiges hasLayout für IE 6 */
    }
    
    dir.filename
    {
        list-style-type:none;  
    }
    
    ul.pagelink
    {
        list-style-type:none;  
    }

    li.pagelink
    {
        float:left;              /*für Firefox und IE für das Nebeneinander*/
        border:1px solid blue;
        margin-right:2pt;
        text-align:center;
        padding-left:3pt;
        padding-right:3pt;
        width:1.25em;            /*Für Firefox für die Breite`*/
    }

    li.pagelink a
    {
        text-decoration:none;
        width:1.25em;            /*Für IE 6.0 für die Breite*/
    }
 
  </style>

</HEAD>

<BODY>

<div>

<?php echo $out['header'], $out['filelist'], $out['linklist']; ?>

</div>

</BODY>
</HTML>
