<?php

// ------------------------------------------------------------------------- //
// Liste de fichiers dynamique                                               //
// ------------------------------------------------------------------------- //
// Script de génération automatique d'un menu dynamique a partir des         //
// fichiers HTML figurant dans le dossier qui lui sera spécifié.             //
// ------------------------------------------------------------------------- //
// Auteur: Olivier SYLBANDE <versius@ifrance.com>                            //
// Email:  versius@ifrance.com                                               //
// Web:                                                                      //
// ------------------------------------------------------------------------- //

?>

---------------------------------------------------
menu.inc.php3
---------------------------------------------------

<?php
/*===============================================================================*\
Librairie : menu.inc.php3
BUT :       Construit un menu avec tout les fichiers qui ont l'extension .htm(l)
            situés dans le répertoire cible.

SORTIE :    Affiche un menu composé de x fichier(s) sur y ligne(s)
AUTEUR :    Olivier SYLBANDE email:versius@ifrance.com
COPYRIGHT : Aucun, Internet m'a beaucoup aidé lors de mes débuts, alors en retour
            j'aide aussi.
\*===============================================================================*/

  
include "config.php3"; // fichier de definition des variables $cible, $taillemenu, $nblignemenu
  
include "lib2.inc";     // divers fonctions dont, file_no_ext() utilisee plus bas

  
global $pagename;

  
// La ligne suivante est remarquee car un fichier de configuration existe
  // Sinon, le repertoire cible est défini ici.
  //$cible="C:/EasyPHP/www/testsite_avec_menu/Files";
  
$file="";
  
$name=array(); // definition du tableau qui recevra les noms de fichiers
  
$nomlong=array();

  
// Récupération des noms de fichiers du répetoire.
  
$dir=opendir($cible);
  while(
$filename=readdir($dir))
         {
          if(
$filename != '.' && $filename != '..')
              {
               if(!
is_dir($cible."/".$filename))
                   {
                    
// Deux solutions: 1) Faire comme suit avec la fonction eregi() pour detecter chaque type de fichier
                    // 2) Appeler la fonction file_extention_name() qui est dans le fichier a inclure lib.inc dans une boucle pour detecter le type des fichiers.
                    // Ici on ne traitera que les fichiers htm(l) et laisse de cote le fichier index
                    
if(!eregi("^(index)",$filename) and eregi(".htm",$filename)) // and eregi(".php",$filename) etc... pour les autres fichiers
                        
{
                         
$ret=file_name($filename);
                         
//$nomlong[]=$cible."/".$filename;
                         
$modif=str_replace("_"," ",$ret);
                         
$name[]=$modif;
                        }
                   }
               }
          }
  
closedir($dir);
  
// Tri alphabetique du tableau, puis positionnement du curseur sur le premier du tableau.
  
asort($name);
  
reset($name);
  
  
//asort($nomlong);
  //reset($nomlong);

  // Conception des liens et stockage dans un tableau.
  
$linktab=array();
  while((list(,
$val)=each($name)))//&&(list(,$val2)=each($nomlong)))
        
{
         if(
$pagename==$val)
             {
              
$link="<B>$val</B>";
              
$linktab[]=$link;
             }else{
              
$link="<A HREF='index.php3?pagename=$val' CLASS='mnulink'>"."$val"."</A>";
              
$linktab[]=$link;
             }
         }
  
// Affichage des elements du tableau $lintab en fonction de parametres definis.
  
echo ("| <A HREF='index.php3?pagename=' CLASS='mnulink'>"."Accueil"."</A>"." |"); // affiche le lien pour la page d'accueil

  
$nbfich=count($linktab); // nombre d'element dans le tableau
  
$taillemenu=$nbfich/$nblignemenu; // nb d'element par ligne de menu
  
asort($linktab);
  
reset($linktab);

  for(
$x=0;$x<$nblignemenu;$x++) // construction d'une ligne de menu
       
{
        
//for ( reset($linktab);($clef = key($linktab))<$taillemenu; next($linktab))
        
for($y=0;$y<$taillemenu;$y++) // insertion des elements sur la ligne
             
{
              list(
$z,$nom)=each($linktab);
              
// autre methode
              // $nom=current($linktab);
              // next($linktab);
              //
              
if($nom!="")
                  {
                   echo
" $nom |";
                  }
             }
        echo
"<BR>"; // saut de ligne entre chaque ligne de menu
        
}
?>

---------------------------------------------------
config.php3
---------------------------------------------------
<?
// Nom du script : config.php3

  
$nblignemenu=2;
  global
$cible;
  
$cible="C:/EasyPHP/www/testsite_avec_menu/Files";

?>

--------------------------------------------------
lib2.inc
--------------------------------------------------
<?
/*===============================================================================*\
Fonction : file_extention_name
BUT : Retourner l'extension du fichier qui lui est passer en paramètre
ENTREE : $filename
SORTIE : return($retval)
AUTEUR : Olivier SYLBANDE - versius@ifrance.com
\*===============================================================================*/
function file_extention_name($filename)
         {
          
$pt=explode(".",$filename);
          if (
$pt[1])
           {
            
$retval=$pt[count($pt)-1];
           }
          return (
$retval);
         }

/*===============================================================================*\
Fonction : file_name
BUT : Retourner le chemin du fichier passer en paramètre, sans l'extension
ENTREE : $filename, soit le nom complet du fichier
SORTIE : return ($retval), le nom du fichier debarasse de son extention
AUTEUR : Olivier SYLBANDE - versius@ifrance.com
\*===============================================================================*/
function file_name($filename)
         {
          
$pt=explode(".",$filename);
          if (
$pt[1])
           {
            
$retval=$pt[count($pt)-2];
           }
          return (
$retval);
         }

/*===============================================================================*\
Fonction : file_name_noext
BUT : Retourner le nom du fichier passer en paramètre, sans l'extension
ENTREE : $filename
SORTIE : return ($retval)
AUTEUR : Olivier SYLBANDE - versius@ifrance.com
\*===============================================================================*/
function File_name_noext($filename)
         {
          
// Definition du motif de recherche. Le signe $ permet de retrouver
          // en fin de ligne le mot cherche.

          
$no_ext=strrchr($filename,"/");
          
$res=eregi_replace("/","",$no_ext);
          return
$res;
          }
// Fin de la fonction
?>