begin process at 2012 05 27 19:06:57
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > LISTER UN REPERTOIRE (ARBORESCENCE DES DOSSIERS)

LISTER UN REPERTOIRE (ARBORESCENCE DES DOSSIERS)


 Information sur la source

Note :
7 / 10 - par 3 personnes
7,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Fichier / Disque Niveau :Débutant Date de création :13/09/2004 Date de mise à jour :22/09/2004 22:40:34 Vu :22 860

Auteur : BlackWizzard

Ecrire un message privé
Site perso
Ce membre participe au partage de revenus publicitaires
Commentaire sur cette source (18)
Ajouter un commentaire et/ou une note


 Description

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

Source

  • <!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>
<!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.


 Historique

14 septembre 2004 17:34:49 :
update de la source suite a la remarque tres juste de Kirua, declarer le meme array a chaque boucle, c'etait pas une bonne idée...
22 septembre 2004 22:40:37 :
renomage de la fonction...

 Sources du même auteur

Source avec Zip TEMPLATE ENGINE SIMPLE ET PUISSANT. EXTENTION DE FONCTIONS P...
Source avec Zip PARSER FBML; COMMENT UTILISER DU CODE FBML (FACEBOOK) SANS P...
Source avec Zip Source avec une capture FLEXIBLE TEMPLATE LANGUAGE (FTL) – TEMPLATE PARSER EXTENSIBL...
Source avec Zip DEVBLOG: BLOG-SYSTEM POUR LES DEVELOPPEURS @VERSION->0.2.2
Source avec Zip PHP\DEVLIB -> COLORATION SYNTAXIQUE 12 LANGAGES, EASYSQL, IP...

 Sources de la même categorie

SUPPRESSION AUTOMATIQUE DES FICHIERS RAW ORPHELINS APRÈS UN ... par malokaff
UPLOADER DES FICHIER DANSUN DOSSIER, SÉCURISÉ AVEC MOT DE PA... par raizzo
COMPTEUR DE VISITES SUR FICHIER par pierreSabatier
FONCTION RECURSIVE DE DOSSIERS par tefa24600
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151

Commentaires et avis

Commentaire de Kirua le 14/09/2004 17:29:08

$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 ;)

Commentaire de BlackWizzard le 14/09/2004 17:38:38 administrateur CS

updaté ;)

Commentaire de Kirua le 14/09/2004 17:47:46

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 :)

Commentaire de Naixn le 14/09/2004 19:52:03

Attention, c'est pas tous les serveurs qui ont les GLOBALS en mode ON ^^
Vaut mieux ne pas les utiliser maintenant ^^

Commentaire de BlackWizzard le 15/09/2004 00:51:22 administrateur CS

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à...

Commentaire de Kirua le 15/09/2004 22:13:47

pas d'accord, pour l'annulation des variables d'environnement, c'est un grand pas vers la sécurité. bcp de failles provenaient de cette bêtise :/ c'est une excellente idée de les définir dans leur contexte.

par contre, t'es sûr qu'on peut plus utiliser <? ?> ?? c'est ce que j'utilise tt le tps :'(

Commentaire de bib1 le 15/09/2004 22:41:51

Salut,
Ca va en faire hurler plus d'un mais, moi, je rajoute ça pour ne pas utiliser les $_get et $_post sur un vieux moteur de site que j'ai créé pour plusieurs assos....

if (!empty($HTTP_GET_VARS)) while(list($name, $value) = each($HTTP_GET_VARS)) $$name = $value;
if (!empty($HTTP_POST_VARS)) while(list($name, $value) = each($HTTP_POST_VARS)) $$name = $value;
if (!empty($HTTP_COOKIE_VARS)) while(list($name, $value) = each($HTTP_COOKIE_VARS)) $$name = $value;
if (!empty($HTTP_ENV_VARS)) while(list($name, $value) = each($HTTP_ENV_VARS)) $$name = $value;

Commentaire de BlackWizzard le 15/09/2004 22:52:21 administrateur CS

bib1, je t'aime :D
mdr
non, serieux, fallais y penser, vais ajouter ça sur pas mal de codes...

Commentaire de Kirua le 15/09/2004 22:59:37

vs êtes fous... c'est casser ts les efforts de la PHP Team pr rendre le langage un peu plus securisé!

et puis y a déjà une fonction qui transforme les données d'un tableau associatif en variables, je sais plus comme elle s'appelle... sais plus ^^

Commentaire de coucou747 le 22/09/2004 21:26:35 administrateur CS

ce serais pas :
function listfolder($from) {
au lieu de :
function listVideo($from) {
??

sinon, pas mal, t'as pas aussi un truc qui pourrait lister uniquement les répertoires ?

Commentaire de Kirua le 22/09/2004 21:29:54

t'as qu'à baquer le 'else' de 'if (is_dir("$from\\$fichier"))' pour ne lister que les répertoires.

et listfolder c'est juste une question de nom... suis d'accord avec toi que c'est bizarre de mettre Video puisqu'il n'y a pas de filtre pr les extensions de video, mais enfin ... ;)

Commentaire de coucou747 le 22/09/2004 21:39:04 administrateur CS

ok merci, cette source m'aura donc été très utile

Commentaire de BlackWizzard le 22/09/2004 22:39:14 administrateur CS

a ouai, me susi trompé en renomant, g du faire un ctrl+z avant le ctrl+c...

Commentaire de Gobelet le 12/10/2004 10:55:46

on peut aussi utiliser scandir(path) nan?

Commentaire de Kirua le 12/10/2004 17:42:25

scandir est pas recursif: scan qu'un niveau de répertoire

Commentaire de Gobelet le 12/10/2004 19:25:08

J'avais lu sur la doc PHP du code pour la rendre récursive... Enfin bref, bonne source, comme toujours :)

Commentaire de BlackWizzard le 12/10/2004 20:07:46 administrateur CS

:)

Commentaire de didine13 le 09/09/2010 10:54:12 10/10

Merci super source

 Ajouter un commentaire




Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,780 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales