<?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 (" 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 (" $num - <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);
?>