IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Menu contenant les repertoires de mon site


Sujet :

JavaScript

  1. #1
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut Menu contenant les repertoires de mon site
    Bonjour,

    J'aimerai créer un menu dynamique sur mon site(en Php) qui reprendrait l'arborescence de mon site.

    2007
    --> Repertoire 1
    --> Repertoire 2
    -------> Repertoire 2.1
    -------> Repertoire 2.2
    --> Repertoire 3
    2008
    --> Repertoire 1
    ...etc

    Existe-il un moyen de faire ce genre de chose? Je l'ai bien vu sur des blogs mais je n'ai aucune idée de comment le réaliser... ni même avec quel outil. Quelqu'un pourrait-il m'apporter une aide?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Oui il existe une solution c'est de le faire soit meme

    Es-tu plus à l'aise en js ou php? car si tu es plus à l'aise question php génère en partant de ton tableau une liste ul li de ce tableau

    C'est du php (c'est un code à moi generant une liste en fonction d'un repertoir)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    $dir    = "/usr/local/";
     
    function        moveDirectory($dir)
    {
      if ($dh = opendir($dir))
        {
          while (($file = readdir($dh)) !== false)
            {
              if ($file != '.' && $file != '..')
                {
                  if (filetype($dir . $file) == 'dir')
                    {
                      echo "<li>$file\n";
                      echo "<ul>\n";
                      moveDirectory($dir . $file . '/');
                      echo "</ul>";
                      echo "</li>\n";
                    }
                  else
                    {
                      echo "<li>$file</li>\n";
                    }
                }
            }
          closedir($dh);
        }
    }
    echo "<ul>\n";
    moveDirectory($dir);
    echo "</ul>\n";
    $dir = chemin de ton site ^^

    Apres j'ai conscience d'etre en php mais ce code peut etre utile J'attends tes reactions !

  3. #3
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    ca serait plus dans le topic php qu'il faudra poster ça...
    enfin, ton problème est très simple !
    il existe un tas de fonction php pour le parcours de repertoire et de fichier en php :
    => file system <=
    par exemple pour lister tes repertoires et fichiers depuis la racine, tu fais un truc du genre :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    <?php
    function liste($dir, $niveau){
       echo $niveau." : ".$dir;
       $niveau++;
       $rep = opendir($dir);
       while (($file = readdir($racine)) !== false){
          // $file est un fichier (repertoire ou fichier d'ailleurs :mouarf:)
          if(is_dir($file)){
             liste($file, $niveau);
          }
          else{
             echo $niveau." : ".$file;
          }
       }
       closedir($rep);
    }
    ?>
    j'ai pas testé la fonction, mais ça doit ressembler à ça...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    en gros ce que je lui ai fais en ajoutant ul li ^^
    Apres en js avec des createElement on peut tout faire mais si il veux un xml ou un json de ses repertoire ca devient meme un soucis ajax bref il a du pain sur la planche ^^

  5. #5
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    C'est pas compliqué je débute dans tout... j'étais ouvert à toutes les solutions. Mais c'est vrai que cette solution Php me séduit énormement. Je vais tenter d'intégrer vos aides... et je vous tiens au courant en cas de besoin.

    Si un modo veut déplacer ce thread dans la partie aproprié je ne lui en voudrais pas. Je pensais que l'on ne pouvait faire ce genre de truc qu'en JavaScript.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    tu peux mais apprend bien le php et apres tu t'orienteras vers des solutions plus évoluer comme l'AJAX
    Par contre si tu as des questions je reste à ta disponibilité

  7. #7
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    dsl jypees, j'avais commencé le post, et j'ai fais une pause café entre temps, du coup tu m'as grillé
    pour ce qui est de faire l'equivalent javascript, c'est impossible car c'est interprete cote client et donc le client ne peut pas voir l'arborescense du site qui est distant...
    sauf comme l'a dit jypees, en ajax, mais vu que le ajax est du javascript qui appelle un script qui sera côté serveur, donc ça revient au même que le faire direct en PHP

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    Et si il débute je prefere qu'il se concentre bien sur le php, l'ajax ca vient apres dira t'on (pause café ??? ca sent le mOsieur au boulot ca, comme moi mdrrrr )

  9. #9
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    Je ne voudrais pas abuser, enfin juste un chtit peu... mais pendant que je vous ai sous la main...

    - Vous ne sauriez pas comment faire pour mettre ce menu dans l'ordre alphabétique? Ou un ordre de mon choix?

    - Vous ne sauriez pas comment retirer l'extension ".php" pour ne pas me retrouver avec dans mon menu "Juillet.php" mais plutôt simplement Juillet qui me redirigerait vers la page "Juillet.php"?

  10. #10
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    POur l'ordre alphabétique malheusement le code se complique car tu dois gerer un tableau et faire un tris dessus (alors que la c'est du live !)

    et pour le .php aucun probleme :
    strrchr()
    "renvoie un pointeur sur la dernière occurence du caractère c dans la chaîne s"
    Donc tu cherches le . puis tu fais un substr en fonction de ca

    Ou bien tu fais comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $file = substr($file, 0, strlen($file) - 4);
    Voila

  11. #11
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    Merci pour le ".php"

    J'ai utilisé la première fonction que jypees m'a filée mais il semblerait qu'elle ne récupère pas les repertoires qui eux mêmes sont dans des repertoires. Pourtant elle me semble bien recursive... soit je l'ai mal intégré dans mon site, soit il y a un souci avec ta fonction que j'ai du mal à comprendre etant donné que mon niveau fleurte avec le 0+

    Une précision?

    PS : N'allez pas vous faire virer de votre boulot pour simplement répondre à un nioub en php... et puis j'suis pas à la minute... mais c'est sympa.

  12. #12
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    je pense que le problème de sa fonction est ici :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    moveDirectory($dir . $file . '/');
    faut mettre un / entre dir et file comme ça :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    moveDirectory($dir."/".$file."/");
    edit : à supprimer, j'ai du faire une connerie

  13. #13
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    je pense que le problème de sa fonction est ici :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    moveDirectory($dir . $file . '/');
    faut mettre un / entre dir et file comme ça :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    moveDirectory($dir."/".$file."/");
    Pour le tri, c'est simple tu reprends exactement le code mais a la place d'afficher les dossiers, tu les places dans le tableau...
    du type:
    array(
    "dossier1" => array("fichier11", "fichier12", "dossier13" => array(...))
    )
    enfin fait comme tu veux ^^
    et après t'auras qu'a faire un sort ou ksort (fonction déjà existante en php)

  14. #14
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 221
    Par défaut
    oui exactement mais ca complique le code tout de meme Je pense qu'avec ca il a de quoi s'éclater pour la journée

  15. #15
    BVK
    BVK est déconnecté
    Membre averti
    Profil pro
    Inscrit en
    Février 2004
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 32
    Par défaut
    Voilà je commence doucement à m'approcher du résultat voulu... j'y apporterais les modifications souhaitées au fur et à mesure que mon niveau augmentera.

    J'aurai juste une dernière question... est il possible d'intégrer à ce "menu" un système de visible non-visible.

    J'ai :

    2007
    2008
    ...etc

    je clique sur 2007 et paf j'obtiens :

    2007
    --> Repertoire 1
    --> Repertoire 2
    --> Repertoire 3
    2008
    ...etc

    Je clique sur Repertoire 2 et pas j'obtiens :

    2007
    --> Repertoire 1
    --> Repertoire 2
    -------> Repertoire 2.1
    -------> Repertoire 2.2
    --> Repertoire 3
    2008
    ...etc

    Et inversement.. je peux refermer l'arborescence. Est ce possible? Et si oui, comment?

  16. #16
    Membre Expert Avatar de Tober
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2007
    Messages
    824
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 824
    Par défaut
    facile
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" >
    <html>
    <head>
    <style type="text/css">
    #elem1, #elem11{
    	display:none;
    }
    </style>
    <script language="JavaScript">
    <!--
    function visible(elem){
    	if(document.getElementById(elem).style.display != "list-item"){
    		document.getElementById(elem).style.display = "list-item";
    	}
    	else{
    		document.getElementById(elem).style.display = "none";
    	}
    }
    -->
    </script>
    </head>
    <body>
    <a href="#" onclick="visible('elem1'); return false;">repertoires</a>
    <ul id="elem1">
    <li><a href="#" onclick="visible('elem11'); return false;">1</a><ul id="elem11">
    	<li>1-1</li>
    	<li>1-2</li>
    	<li>1-3</li>
    	</ul>
    </li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    </ul>
    </body>
    </html>

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Reporter un menu déroulant dans toutes les pages de mon site
    Par nicofago dans le forum Dreamweaver
    Réponses: 21
    Dernier message: 22/11/2008, 00h49
  2. Réponses: 1
    Dernier message: 20/08/2007, 11h56
  3. Comment bloquer les photos sur mon site
    Par footeuse13 dans le forum Sécurité
    Réponses: 5
    Dernier message: 08/08/2007, 16h54
  4. [Forum] Ré écrire les adresses de mon site dynamique
    Par HwRZxLc4 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 04/08/2007, 14h27
  5. [DW8] Remplacer les liens de mon site.
    Par matt2006 dans le forum Dreamweaver
    Réponses: 1
    Dernier message: 23/11/2006, 11h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo