<?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
?>