Page 1 sur 1

Mettre en forme une arboresence de dossier

Posté : 26 nov. 2013, 20:13
par Fre3z69
Salutation à tous

J'ai un script qui me permet de lister un dossier et de lister les vidéos contenu dans chaque sous-dossier ou sur le dossier parent.

J'aimerais faire en sorte qu'on puisse mettre les dossier primaires en titre h3 et les autres dossier en titre h4
Du style:
Dossier primaire
  • Dossier secondaire 01
    • video01
      video02
    • Dossier tertiaire
      • video02
  • Dossier secondaire 02
...
...
Merci à vous

Cordialement

Voici le script que j'ai actuellement, qui fonctionne, mais qui ne reconnais pas la hiérarchie des dossiers
<?php
    function mkmap($dir){
        echo "<ul>";   
        $folder = opendir ($dir);
        $authextension = 'mp4';
        // on boucle le dossier
        while ($file = readdir ($folder)) {
            if ($file != "." && $file != "..") {
                $pathfile = $dir.'/'.$file;
                $extension=strrchr($file,'.');
                $extension=substr($extension,1) ;
                /*
                 * on vérifie l'extention du fichier
                 */
                // si il n'y en a pas, alors il s'agit d'un dossier
                if ($extension == $authextension) {
                    $namef=preg_replace("`(.+)\_Grafikart - Tutoriel `isU", "", $file);
                    echo '<li><a href="'.$pathfile.'" target="_blank">'.$namef.'</a></li>';
                // sinon c'est u fichier
                } else {
                    $namef=preg_replace("`(.+)\_`isU", "", $file);
                    echo '<li><h4>'.$namef.'<h4></li>'."\n"; 
                    if(filetype($pathfile) == 'dir'){            
                        mkmap($pathfile);
                    }
                }
            }
        }
        closedir ($folder);    
        echo "</ul>";
    }
?>

Re: Mettre en forme une arboresence de dossier

Posté : 26 nov. 2013, 20:32
par Fre3z69
Je refait un message d'une part pour signaler que j'ai refait l'exemple d’arborescence dans le sujet principale et d'autre part pour stipuler un option.

En effet, j'aimerais afficher l’icône du dossier si il y en a.

Par exemple, si j'ai un dossier php dans le quelle il y à un icône nommée icon.png, j'aimerais l'affichée à gauche du nom du dossier en question

Exemple:

Code : Tout sélectionner

<img src="icon.png" alt="" />Php
Merci à vous

Cordialement

Re: Mettre en forme une arboresence de dossier

Posté : 01 déc. 2013, 08:44
par Fre3z69
Help please

Thanks ^^

Re: Mettre en forme une arboresence de dossier

Posté : 01 déc. 2013, 10:53
par xTG
Il faudrait rajouter à ta fonction récursive(en paramètre) le niveau de profondeur du dossier sollicité.
Avec cette nouvelle information tu pourrais décider d'appliquer un h3 ou un h4.

Pour l'icône cela reste assez simple :
if( file_exists($pathfile . "/icon.png") )
  echo '<img src="" />';
:)

Re: Mettre en forme une arboresence de dossier

Posté : 03 déc. 2013, 09:02
par Fre3z69
Il faudrait rajouter à ta fonction récursive(en paramètre) le niveau de profondeur du dossier sollicité.
Avec cette nouvelle information tu pourrais décider d'appliquer un h3 ou un h4.
J'ai pensé à un système comme ça, mais je ne vois pas comment lui donner le niveau de profondeur afin de faire cel.

Comment puis-je m'y prendre.
Je demande un exemple, pas me le faire, j'ai besoin d'apprendre ^^

Merci beaucoup

Cordialement

Re: Mettre en forme une arboresence de dossier

Posté : 03 déc. 2013, 12:21
par xTG
function niveau($niveau)
{
  echo $niveau;
  niveau($niveau + 1);
}
niveau(0);
Attention ce code fait une boucle infinie, mais le principe que tu cherches est là. ;)

Re: Mettre en forme une arboresence de dossier

Posté : 08 déc. 2013, 15:59
par Fre3z69
Super ça fonctionne nikel

voici le code final, merci beaucoup

Cordialement
<?php
header('Content-Type: text/html; charset=iso-8859-1');
    function mkmap($dir,$niveau=1){
    global $adresse;
        echo "<ul>";
        $dossier=$_GET['s'];
        $folder = opendir ($dir);
        // on boucle le dossier
        while ($file = readdir ($folder)) {
            if ($file != "." && $file != "..") {
                $pathfile = $dir.'\\'.$file;
                // $urlFolder = str_replace("D:\\Videos\\", "", $pathfile);
                // $urlFolder = str_replace("\\", "/", $urlFolder);
                $adresseVideo = str_replace("D:\\Videos\\", "", $pathfile);
                $adresseVideo = str_replace("\\", "/", $adresseVideo);
                $urlFolder = $adresseVideo;
                $path = str_replace("\\", "/", $pathfile);
                $extension=strrchr($file,'.');
                $extension=substr($extension,1) ;
                $urlIcon = $adresse.$urlFolder.'/';
                $icon = 'icon.png';
                $image = file_exists($pathfile . "/icon.png") ? '<img style="width:18px;height:18px;" src="'.$urlIcon.'icon.png" />' : '';
                /*
                 * on vérifie l'extention du fichier
                 * on dois pouvoir vérifier des extentions pour les vidéos et les pdf et afficher un lien différent si il s'agit d'un pdf
                 */
                if ($extension=="mp4" || $extension=="mov" || $extension=="avi" || $extension=="mkv") {
                    $namef=preg_replace("`(.+)\_Grafikart - Tutoriel `isU", "", $file);
                    echo '<li><a href="index.php?s='.$dossier.'&v='.$adresseVideo.'">'.$namef.'</a></li>';
                } else if ($extension=="pdf") {
                    echo '<li><a href="index.php?s='.$dossier.'&pdf='.$adresseVideo.'">'.$file.'</a></li>';
                } else {
                    $namef=preg_replace("`(.+)\_`isU", "", $file);
                    $namef=str_replace("icon.png", "", $namef);
                    // on affiche l'icone si il y'en a
                    if ($niveau==1){
                        echo '<li><span class="titre">'.$image.' '.ucfirst($namef).'</span></li>';
                    }else if ($niveau==2){
                        echo '<li><span class="soustitre">'.$image.' '.ucfirst($namef).'</span></li>';
                    }
                    else{
                        echo '<li><span class="dossier">'.$image.' '.ucfirst($namef).'</span></li>';
                    }
                    if(filetype($pathfile) == 'dir'){            
                        mkmap($pathfile,$niveau+1);
                    }
                }
                // echo $url3.$url2.$url1;
            }
        }
        closedir ($folder);    
        echo "</ul>";
    }
?>