[PHP] Liste dossier sous-dossier du repertoir [Résolu/Fermé]

Signaler
-
 Profil bloqué -
Bonjour à tous,

Voila, j'ai beau cherchez, je parviens pas a trouver un système permettant de faire la liste des dossier et sous dossier ... et ainsi de suite mais pas des fichiers, le but c'est dans mettre le résultat dans un form de sélection pour indiquez ou je vais envoyer mon upload d'image.

J'ai bien essayer scandir mais il s'arrête ou premier niveau de sous dossier et comme les fonction récursive et moi, cela donne un chiffre inconnue...

Merci de votre aide.

2 réponses

Messages postés
1042
Date d'inscription
mardi 30 octobre 2007
Statut
Membre
Dernière intervention
22 novembre 2013
161
Bonjour,

tu as bien compris qu'il s'agit de récursivité, en effet tu n'a pas le choix! lol
Utilise une fonction récursive (= qui s'appel elle même) et une boucle while();
De plus, essaye avec la fonction readdir (avec un @ devant au cas ou ça ne marche pas)

A+
gaerebut

De retour, d'une longue expéditions sur la toile, je vous livre la solutions trouvé par CrokNoks sur le Site du Zéro.

<form>
<select>
<?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 .= '<option value="'.$value.'/">'.$value.'</option>';
			$tree.=get_tree($value.'/');
		}
	}
	return $tree;
}
    echo get_tree('images/');
?>
</select>
</form>


Voila l'adresse:
http://www.siteduzero.com/...

Cela permet de faire une liste automatique de tout les dossier présent dans le répertoire cible, et de l'inscrire dans un formulaire de sélection.