<?php

// ------------------------------------------------------------------------- //
// Liste les dossiers d'un répertoire, avec tri et navigation                //
// ------------------------------------------------------------------------- //
// Auteur: fabio                                                             //
// Email:  raptor@free.fr                                                    //
// Web:                                                                      //
// ------------------------------------------------------------------------- //

function listeDirTri ($path,$inf,$tri)
{
    
$Array = array();
    
$nbFichier = 0;

    if (
$dir = @opendir($path))
    {
        while(
$file = readdir($dir))
        {
            if (
$file !="." && $file != "..")
            {
                if (
is_dir($path."/".$file))
                {
                    
$Array[] = "$file";
                    
$nbFichier++;
                }
            }
        }
    }
    
closedir($dir);

    if (
$nbFichier!=0)
    {
        
$num = 1;
        
$cfg_num = 5;//Nombre de chiffres dans la barre de navigation
        
$nbpp = 20;//nombre de résultats par "page"
        
if (!isset($inf)) $inf = 0;// var. pour la navigation dans le répertoire
        
$sup = $inf + $nbpp;

        print (
"&nbsp;Il y a $nbFichier dossiers dans le répertoire ");
        print (
$path<br><br>n");

        if($tri == 'DESC')
        
{
            rsort($Array);
        
}
        else
        
{
            sort($Array);
        
}

        $Max = count($Array);

        for($i = 0; $i <$Max; $i++)
        
{
            if (($num>$inf)&&($num<=$sup))
            
{
                print ("
&nbsp;$num -&nbsp;<a href="$path/$Array[$i]/\">");
                print (
"<b>$Array[$i]</b></a><br>");
            }
            
$num++;
        }

        print (
"<br>\n");

        
/*-------------------------------------------------------------------*/
        // CREATION DE LA BARRE DE NAVIGATION
        /*-------------------------------------------------------------------*/

        
if ($inf >= ($cfg_num * $nbpp))
        {
            
$compteur_fin = ($inf / $nbpp) + 1;
            
$compteur_deb = $compteur_fin - $cfg_num + 1;
        }
        else
        {
            
$compteur_deb = 1;
            
$compteur_fin = (int)($nbFichier / $nbpp);

            if ((
$nbFichier % $nbpp) != 0)
            {
                
$compteur_fin++;
            }

            if  (
$compteur_fin > $cfg_num)
            {
                
$compteur_fin = $cfg_num;
            }
        }

        for (
$compteur = $compteur_deb; $compteur <= $compteur_fin; $compteur++)
        {
            if (
$compteur == ($inf / $nbpp) + 1)
            {
                
$barre .= "<font> <b>".$compteur."</b> </font>";
            }
            else
            {
                
$barre .= " <A HREF='php_listeDirTri.php?inf=";
                
$barre .= (($compteur-1)*$nbpp);
                
$barre .= "'>".$compteur."</A> ";
            }
        }
        print (
"[$barre]\n");
        print (
"<br>\n");

        
/*-------------------------------------------------------------------*/
        // CREATION DES BOUTONS DEBUT ET PRECEDENT
        /*-------------------------------------------------------------------*/

        
if ($inf >= $nbpp)
        {
            
// Début
            
echo "<A HREF='php_listeDirTri.php?inf=" . (0) .  "'><<</A> ";
            
// Précédent
            
echo "<A HREF='php_listeDirTri.php?inf=" . ($inf-$nbpp) . "'><</A>";
        }
        else
        {
            
// Début sans lien
            
echo "<< ";

            
// Précédent sans lien
            
echo "<";
        }
        print (
" - ");

        
/*-------------------------------------------------------------------*/
        // CREATION DES BOUTONS SUIVANT ET FIN
        /*-------------------------------------------------------------------*/
        
if ($inf + $nbpp < $nbFichier)
        {
            
// Suivant
            
echo "<A HREF='php_listeDirTri.php?inf=".($inf+$nbpp)."'>></a></A> ";

            
// Fin
            
$pos = ($nbFichier - ($nbFichier % $nbpp));
            if ((
$nbFichier % $nbpp) == 0) $pos = $pos - $nbpp;
            echo
"<A HREF='php_listeDirTri.php?inf=".($pos)."'>>></a></A>";
        }
        else
        {
            
// Suivant
            
echo "> ";

            
// Fin
            
$pos = ($nbFichier - ($nbFichier % $nbpp));
            if ((
$nbFichier % $nbpp) == 0) $pos = $pos - $nbpp;
            echo
">>";
        }

        print (
"<br>\n");
    }
    else
    {
        print (
"Il n'y a pas de fichiers dans le répertoire <b>$path</b>\n");
    }
}

// Utilisation de la fonction
// paramètre 1 : chemin du répertoire ("." si il s'agit du rép. courant)
// paramètre 2 ($inf) : permet de naviguer dans le répertoire. Il est conseillé
// de le laisser tel quel ($inf).
// paramètre 3 ($tri) : "ASC" ou "DESC" (A-Z ou Z-A) --> ASC par défaut

listeDirTri(".",$inf,$tri);

?>