Bonjour,
Je souhaite afficher l'arborescence de mon site sur une page html.
Pour cela, j'ai commencé par créer le code html et css pour afficher les dossiers, sous-dossiers, fichiers ... Pas de problème pour cette partie
Pour lister tous les dossiers et fichiers, j'utilise php. Mon idée est d'avoir un script qui effectue le listing toutes les x du mois et enregistre le résultat dans un fichier json.
L'affichage du résultat sur la page html se fera avec du javascript en parcourant ce fichier json.
Voici le code php, je récupère tous les dossiers et fichiers et je cherche à les mettre dans leur dossier parent :
Alors voilà mon bout de code
J'en suis pas du tout content, il marche approximativement et surtout ce n'est vraiment pas très joli.
Je viens vers la communauté d'alsacreations pour demander / implorer votre aide
Des remarques, des pistes ou toutes autres formes de réponse sont les bienvenus ...
Merci beaucoup !
Modifié par renard13 (17 Jan 2016 - 21:50)
Je souhaite afficher l'arborescence de mon site sur une page html.
Pour cela, j'ai commencé par créer le code html et css pour afficher les dossiers, sous-dossiers, fichiers ... Pas de problème pour cette partie
Pour lister tous les dossiers et fichiers, j'utilise php. Mon idée est d'avoir un script qui effectue le listing toutes les x du mois et enregistre le résultat dans un fichier json.
L'affichage du résultat sur la page html se fera avec du javascript en parcourant ce fichier json.
Voici le code php, je récupère tous les dossiers et fichiers et je cherche à les mettre dans leur dossier parent :
function listing($iter){
$dir = array(); // Le tableau de retour
$folder = false; // dossier en cours
$prevDepth = 0; // Profondeur précédente du fichier
foreach ($iter as $entry) {
$pathName = $iter->getPathname(); // Le chemin complet
$iter->getPath(); // Le dossier parent
$filename = $entry->getBasename(); // Le nom du dossier / fichier
$depth = $iter->getDepth(); // La profondeur du fichier
// Si la profondeur du fichier actuel est < à la précédente alors on remonte d'un cran
$prevDepth=($depth < $prevDepth)?$prevDepth-1:$depth;
$folder =($depth===0)?array():$folder; // Si on revient au niveau 0, on reset $folder
// Si c'est un dossier
if ($entry->isDir()) {
switch($depth){
case 0 :
$dir[$filename]=array();
$folder[0] = $filename;
break;
case 1 :
$folder[] = $filename;
$dir[$folder[0]][$filename]=array();
break;
case 2 :
$folder[] = $filename;
$dir[$folder[0]][$folder[1]][$filename]=array();
break;
// case 3, case 4, ... case n
default: break;
}
}
// Si c'est fichier
else{
switch($depth){
case 0 :
$dir[$pathName] = $filename;
break;
case 1 :
$dir[$folder[0]][$pathName]=$filename;
break;
case 2 :
$dir[$folder[0]][$folder[1]][$pathName]=$filename;
break;
// case 3, case 4, ... case n
default: break;
}
}
}
return $dir;
}
$directory =dirname(dirname(__FILE__));
$iter = new RecursiveIteratorIterator(
new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::KEY_AS_FILENAME)
, RecursiveIteratorIterator::SELF_FIRST);
$dir = listing($iter);
// Création du fichier json
$txt = fopen('chemin ou l\'on souhaite mettre le fichier', 'w+');
fwrite($txt, json_encode($dir));
fclose($txt);
Alors voilà mon bout de code
J'en suis pas du tout content, il marche approximativement et surtout ce n'est vraiment pas très joli.
Je viens vers la communauté d'alsacreations pour demander / implorer votre aide
Des remarques, des pistes ou toutes autres formes de réponse sont les bienvenus ...
Merci beaucoup !
Modifié par renard13 (17 Jan 2016 - 21:50)