Parcours recursif d'un repertoire

Soyez le premier à donner votre avis sur cette source.

Vue 19 152 fois - Téléchargée 819 fois

Description

Bon, j'en ai eu besoin aujourd'hui, j'ai ecrit ca, et apres coup je me suis dit que je n'avais pas vu beaucoup de scripts simplifies au maximum et avec un minimum de mise en forme de ce genre ici.
Donc je le poste, peut-etre sera t il utile a des debutants.
Il est vraiment simplifie au maximum, je n'affiche aucune info concernant les fichiers (date de modification etc) mais si quelqu'un le souhaite, je le ferai.
Rajout : j'ai commence a creer une classe PHP5 dans le but d'ecrire un explorateur. Pour l'instant, il est basique :
- affichage des repertoires a gauche
- affichage des fichiers du repertoire choisi a droite
- affichage de vignettes HTML des images (testees sur leur mime)
- affichage de la taille des images
- affichage d'infos sur les fichiers
- suppression de fichiers et repertoires
- renommage de fichiers et repertoires
- creation de fichiers vides

Source / Exemple :


// fonction de base

<?php
function recursive_readdir ($dir) {
	$dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
	if (is_dir ($dir)) // si c'est un repertoire
		$dh = opendir ($dir); // on l'ouvre
	else {
		echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
		exit;
		}
	while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire 
		if ($file !== '.' && $file !== '..') { // no comment
			$path =$dir.'/'.$file; // construction d'un joli chemin...
			if (is_dir ($path)) { //si on tombe sur un sous-repertoire 
				echo '<p style="font-weight: bold; border : 1pt solid #000000;">', $path, ' -> dir</p>'; // ptit style...
				echo '<div style="padding-left: 20px; border: 1pt dashed #000000;">'; // idem...
				recursive_readdir ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
				echo '</div><br />';
			}
			else
				echo $path, '<br />'; // si il s'agit d'un fichier, on affiche, tout simplement.
		}
	}
	closedir ($dh); // on ferme le repertoire courant
}	
recursive_readdir ('.');
?>

Conclusion :


Note : l'index.php est en XHTML strict, mais en fait non ;-) Je n'ai pas eu le temps de regler les problemes qui empeche ce doctype d'etre vrai. Rien de grave, problemes avec les listes, et les id. Je corrigerai ca pour une prochaine version.

Je mettrai une nouvelle source une fois que l'explorateur sera reellement fini, avec ses fonctionnalites finales.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Ok, celui-ci est pour la fonction de base, je vais effacer le reste puisque l'explorateur complet, je l'ai mis dans une autre source.
Tu copies ceci dans ton fichier :
# // fonction de base
#
# <?php
# function recursive_readdir ($dir) {
# $dir = rtrim ($dir, '/'); // on vire un eventuel slash mis par l'utilisateur de la fonction a droite du repertoire
# if (is_dir ($dir)) // si c'est un repertoire
# $dh = opendir ($dir); // on l'ouvre
# else {
# echo $dir, ' n\'est pas un repertoire valide'; // sinon on sort! Appel de fonction non valide
# exit;
# }
# while (($file = readdir ($dh)) !== false ) { //boucle pour parcourir le repertoire
# if ($file !== '.' && $file !== '..') { // no comment
# $path =$dir.'/'.$file; // construction d'un joli chemin...
# if (is_dir ($path)) { //si on tombe sur un sous-repertoire
# echo '', $path, ' -> dir

'; // ptit style...
# echo '
'; // idem...
# recursive_readdir ($path); // appel recursif pour lire a l'interieur de ce sous-repertoire
# echo '

';
# }
# else
# echo $path, '
'; // si il s'agit d'un fichier, on affiche, tout simplement.
# }
# }
# closedir ($dh); // on ferme le repertoire courant
# }
# ?>

Pour l'appeler, il suffit de faire :
recursive_readdir (nom du répertoire ou sous-répertoire à lister);
Par exemple :

recursive_readdir ('.');
=> va lister le répertoire courant.
recursive_readdir ('datas');
=> va lister le sous-répertoire datas
Messages postés
1
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
9 septembre 2005

Bonjour
Je suis nouveau et je voudrais savoir comment on installe ce script

J'ai une page blanche à l'exécution.

Merci de votre aide
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Tssssssssssss

;-)

Tien j'update...
Messages postés
125
Date d'inscription
mercredi 31 mars 2004
Statut
Membre
Dernière intervention
8 juin 2006

Bah par CSS j'entendais un truc super joli quoi :)
Messages postés
10840
Date d'inscription
lundi 24 février 2003
Statut
Modérateur
Dernière intervention
2 mars 2010
22
Merci :-)

J'ai pas tout mis avec du css ? lol, ah merde...j'ai essaye ;-)
En fait j'ai un soucis d'ergonomie...j'ai du mal a voir quelle est la meilleure facon
d'agencer tout ca. Parce que je veux les fonctions basiques d'un explorateur, mais aussi
quelques autres trucs, qui impliquent la selection de plusieurs fichiers ou/et repertoires.
Je crois que je vais devoir me rabattre sur des checkboxes meme si l'idee ne me seduit
pas :-( Si t'as une idee...
Afficher les 39 commentaires

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.