Partage
  • Partager sur Facebook
  • Partager sur Twitter

[php]crée une liste des dossier dans une liste deroulante

Sujet résolu
    11 août 2009 à 13:31:36

    bonjour tout le monde, je voudrai crée une liste deroulante avec le nom de tout mes dossier comment faire
    et pour que sa s'affiche /dossier1/dossier2/ ...
    si ses a la racine sa sera /dossier
    merci
    xana29
    • Partager sur Facebook
    • Partager sur Twitter
      11 août 2009 à 14:43:27

      j'ai copier le code et j'ai l'erreur suivant :
      Warning: Invalid argument supplied for foreach() in /mnt/102/sda/3/9/maxime.pennec/index.php on line 46
      mon code :
      <?php
          function get_tree($path = './'){
              if (substr($path,-1) !== '/')
                  $path .= '/';
              $tree = '';
              $dirs = glob($path.'*');
              foreach ($dirs as $value){
                  if(is_dir($value))
                      $tree .= "\n".$value.'/'.get_tree($value.'/');
              }
              return $tree;
          }
      	echo get_tree('test/');
      		?>
      

      comment faire ?
      merci de vaux reponsses
      xana29
      ps si je veu lister les dossier a partire de la racine je mais quoi?
      • Partager sur Facebook
      • Partager sur Twitter
        11 août 2009 à 14:53:15

        si ton fichier index.php se trouve à la racine : get_tree();

        l'erreur vient surement du fait que ton répertoire 'test/' ne doit pas existé. (la fonction glob retourne false, ce qui n'est pas un tableau d'où l'erreur)
        • Partager sur Facebook
        • Partager sur Twitter
          11 août 2009 à 15:00:26

          le répertoire test existe il est a la racine tt come le fichier index.php!
          xana29
          comment faire?
          • Partager sur Facebook
          • Partager sur Twitter
            11 août 2009 à 15:03:55

            Je peut avoir le code complets de ta page (ou au moins les lignes 40 à 50) s'il te plait
            • Partager sur Facebook
            • Partager sur Twitter
              11 août 2009 à 15:05:22

              voila:
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
              <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
              	<head>
              		<title>Bienvenue sur mon site !</title>
              		<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
              		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
              	</head>
              	<body>
              		<form method="get" action="traitement.php">
              			<p><label for="nomfichier">le nom du fichier :</label><input type="text" name="nomfichier" id="nomfichier"/>
              			<label for="ext">extantion :</label>
              			<select name="ext" id="ext">
              				<option value=".txt">.txt</option>
              				<option value=".php">.php</option>
              				<option value=".html">.html</option>
              				<option value=".css">.css</option>
              				<option value=".htaccess">.htaccess</option>
              				<option value=".js">.js</option>
              			</select>
              			<input type="hidden" name="type" value="creafichier"/>
              			<input type="submit" value="Envoyer" /></p>
              		</form>
              		<form method="get" action="traitement.php">
              		<p><label for="nomdossier">le nom de dossier :</label><input type="text" name="nomdossier" id="nomdossier"/>
              		<input type="hidden" name="type" value="creadossier"/>
              		<input type="submit" value="Envoyer" />
              		<?php
                  function get_tree($path = './'){
                      if (substr($path,-1) !== '/')
                          $path .= '/';
                      $tree = '';
                      $dirs = glob($path.'*');
                      foreach ($dirs as $value){
                          if(is_dir($value))
                              $tree .= "\n".$value.'/'.get_tree($value.'/');
                      }
                      return $tree;
                  }
                  echo get_tree('test/');
              		?>
              				</p>
              		</form>
              	</body>
              </html>
              

              jespaire que sa taidera
              xana29
              • Partager sur Facebook
              • Partager sur Twitter
                11 août 2009 à 15:08:26

                Où fait-tu tes test ? sur ton pc en local ou sur un hébergeur ?
                • Partager sur Facebook
                • Partager sur Twitter
                  11 août 2009 à 15:09:16

                  je fai sur l'hebergeur (free)
                  xana29
                  • Partager sur Facebook
                  • Partager sur Twitter
                    11 août 2009 à 15:12:09

                    l'érreur vient de là donc ...
                    Free refuse l'utilisation de la fonction glob.
                    Il faut passer par le bon vieux open_dir.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      11 août 2009 à 15:14:21

                      ha ! tu n'aurais pas un code stp ?
                      xana29
                      merci
                      • Partager sur Facebook
                      • Partager sur Twitter
                        11 août 2009 à 15:19:19

                        <?php
                        function glob_free($dir,$patern='*'){
                        	$tab='';
                        	if (is_dir($dir)) {
                        	    if ($dh = opendir($dir)) {
                        	        while (($file = readdir($dh)) !== false) {
                        				$ext=explode('.',$file);
                        				$ext=$ext[count($ext)-1];
                        	            if($ext==$patern || $patern=="*" && $file!='.' && $file!='..'){
                        					$tab[]=$dir.$file;
                        				}
                        	        }
                        	        closedir($dh);
                        	    }
                        	}
                        	return $tab;
                        }   
                           function get_tree($path = './'){
                                if (substr($path,-1) !== '/')
                                    $path .= '/';
                                $tree = '';
                                $dirs = glob_free($path,'*');
                        		
                        		if(is_array($dirs))
                        		foreach ($dirs as $value){
                                    if(is_dir($value))
                                        $tree .= "<br />".$value.'/'.get_tree($value.'/');
                                }
                                return $tree;
                            }
                            echo get_tree('test/');
                        ?>
                        


                        la variable $patern te permettra de sélectionner selon une extension.
                        Attention ce code ne te sort QUE la liste des répertoires et en aucun cas les fichiers qui s'y trouvent.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          11 août 2009 à 15:24:58

                          merci par contre comment afficher le résultat dans une liste déroulante pour pouvoir selectioné le dossier ?
                          xana29
                          • Partager sur Facebook
                          • Partager sur Twitter
                            12 août 2009 à 12:22:53

                            ça dépend, tu veut afficher juste le premier niveau de répertoire ou tous les niveaux ?? en réponse à ton mp je t'ai modifier le code uniquement pour le premier niveau de repertoire.
                            (exemple : si test/rep1 et test/rep1/ssrep1 existe, il ne t'affichera que test/rep1.)
                            • Partager sur Facebook
                            • Partager sur Twitter
                              12 août 2009 à 16:03:55

                              sa serai posible sur plusieur niveau de repertoire?
                              xana29
                              • Partager sur Facebook
                              • Partager sur Twitter
                                12 août 2009 à 18:09:29

                                <?php
                                function get_tree($path = './'){
                                	if (substr($path,-1) !== '/')
                                		$path .= '/';
                                	$tree = '';
                                	$dirs = glob_free($path,'*');
                                	if(is_array($dirs))
                                	foreach ($dirs as $value){
                                		if(is_dir($value)){
                                			$tree .= '<option value="'.$value.'/">'.$value.'</option>';
                                			$tree.=get_tree($value.'/');
                                		}
                                	}
                                	return $tree;
                                }
                                ?>
                                
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  12 août 2009 à 19:01:16

                                  Ça me fait mal toutes ces fautes d'orthographe :'(
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    12 août 2009 à 19:13:01

                                    Sinon, plus simplement, dir:

                                    <?php
                                    $dir = @dir('dossier/');
                                    if($dir){
                                      while ($entry = $dir->read()){
                                        if(!is_dir('dossier/'.$entry) && $entry != "." && $entry != ".."){
                                          echo "<option value=\"$entry\">$entry</option>";
                                        }
                                      }
                                    }
                                    else
                                      echo "Le dossier ne peut pas être ouvert";
                                    
                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    [php]crée une liste des dossier dans une liste deroulante

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown