Lister un repertoire (arborescence des dossiers)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 24 859 fois - Téléchargée 35 fois

Contenu du snippet

Suite a des questions diverses forums sur le net, voici un code tres simple qui permet de liste un repertoire avec arborescence simple.

Source / Exemple :


<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
</HEAD><BODY>
<UL>
<?php
$list = array('.','..');
function listFolder($from) {
	GLOBAL $list;
	$dossier=opendir($from); 
	while ($fichier = readdir($dossier)) { 
		if (!in_array($fichier, $list)){
			if (is_dir("$from\\$fichier")) {
				$e.=("<font color=#009900>[$from\\$fichier]</font><ul>");
				$e.=listVideo("$from\\$fichier");
				$e.=("</ul>");
			} else {
				$e.=("<font color=#000099>$from\\$fichier</font><br>");
			}
			
		}
	}
	return $e;
}
if (!empty($d)) {
	echo listFolder($d);
} else {
	echo "<form action=# method=post>Dossier a afficher: <input type=text name=d><input type=submit value=generer></form>";
}
?>
</UL>
</BODY></HTML>

Conclusion :


Des sources comme ça, il y en a deja pas mal sur ce site et un px partout sur le net, mais je fait un version differente, sans chichi, ce qui permet de comprendre facilement comment faire un listage de dossiers/fichiers.

A voir également

Ajouter un commentaire

Commentaires

cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
$l = array('.','..');

tu définis ce tableau dans la while, ça veut dire que le tableau est recrée à chaque bouclage.
tu devrais le mettre avant la while (ou en global, ou en static, s'il y a moyen, càd que j'ai tte ma théorie C++ qui vient polluer ma logique PHP).

mais je pense qd même que c'est pas une bonne chose de mettre le tableau ds la boucle. par contre le fait de mettre un tableau c'est pas une mauvaise idée, mais j'aurais plutôt créé une fonction IsOk($elem) pour pvr mettre ds cette fct des choses de ce genre:

if($elem '.' || $elem '..') return false;
//ici des regexp ou des strstr pour sélectionner certaines extensions, en rejeter, vérifier les types mime, les tailles...

je comprends que tu aies voulu faire sans chichi, mais voilà, hors du code, des idées pr qui veut ;)
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2 -
updaté ;)
cs_Kirua
Messages postés
3006
Date d'inscription
dimanche 14 avril 2002
Statut
Membre
Dernière intervention
31 décembre 2008
-
tu vas râler, mais j'ai essayé de te poster une autre comment juste après le premier, et ça a foiré (prtant CS va bien ces tps ci!).

c à propos de ta variable $e. il faut la déclarer en début de fonction, sinon elle n'existe pas, et comme tu fais directement $e ...., ben tu concatènes qq ch avec ... une inexistence cosmique :p rajoute juste $e ''; en début de fonction, c tt.

désolé de te faire RE-bouger.
au fait: installe donc une version rigoureuse de PHP chez toi (la dernière de EasyPHP l'est, enfin, t pê ss nux), comme ça tu seras forcé à faire ce genre de petites choses :)
Naixn
Messages postés
455
Date d'inscription
mardi 17 septembre 2002
Statut
Membre
Dernière intervention
22 juillet 2007
-
Attention, c'est pas tous les serveurs qui ont les GLOBALS en mode ON ^^
Vaut mieux ne pas les utiliser maintenant ^^
BlackWizzard
Messages postés
1277
Date d'inscription
mercredi 21 mars 2001
Statut
Modérateur
Dernière intervention
21 juin 2009
2 -
pfff
font chier avec leurs standard à la con, ça change tt le temps... c'est cool les GLOBAL :'(
ça sert à quoi de creer les GLOBAL si c'est pour les supprimer ensuite? c'est quoi ce delire serieux?
sans compter les <? qui sont plus acceptés si on met pas <?php, les $_POST ou $_GET obligatoires alors qu'avant ça fonctionnait tres bien sans...
La communauté php commence à me les casser serieusement là...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.