begin process at 2012 05 27 20:20:33
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichier / Disque

 > FONCTION RECURSIVE DE DOSSIERS

FONCTION RECURSIVE DE DOSSIERS


 Information sur la source

Note :
Aucune note
Catégorie :Fichier / Disque Classé sous :parcours, dossier, recursif, tableau, associatif Niveau :Débutant Date de création :29/01/2011 Date de mise à jour :04/02/2011 13:38:24 Vu :3 437

Auteur : tefa24600

Ecrire un message privé
Site perso
Commentaire sur cette source (8)
Ajouter un commentaire et/ou une note

 Description

Encore une fonction de parcours de dossiers et sous dossiers, qui retourne ici un tableau associatif avec :
- en clé, le nom du fichier
- en valeur, le chemin

Source

  • function ScanDirectory($Directory, $fileTypes = null){
  • $MyDirectory = opendir($Directory) or die('Erreur');
  • while(false !== ($Entry = @readdir($MyDirectory))) {
  • if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
  • $tmp = ScanDirectory($Directory.'/'.$Entry, $fileTypes);
  • $files = array_merge((array)$files, (array)$tmp);
  • } else {
  • // si le tableau est renseigné
  • if (is_array($fileTypes)) {
  • // on recupère l'extension du fichier
  • $ext = get_file_extension($Entry);
  • // on vérifie qu'elle fait partie de celles autorisée
  • if (in_array ($ext, $fileTypes)) {
  • $files[$Entry] = $Directory.'/';
  • }
  • // sinon, on mets toutes les occurences
  • } else {
  • $files[$Entry] = $Directory.'/';
  • }
  • /* note : on stocke les valeurs dans un tableau associatif :
  • * clé nom du fichier
  • * valeur chemin du fichier
  • */
  • }
  • }
  • closedir($MyDirectory);
  • return $files;
  • }
  • function get_file_extension($file_name) {
  • return substr(strrchr($file_name,'.'),1);
  • }
function ScanDirectory($Directory, $fileTypes = null){

		$MyDirectory = opendir($Directory) or die('Erreur');
		while(false !== ($Entry = @readdir($MyDirectory))) {
			if(is_dir($Directory.'/'.$Entry)&& $Entry != '.' && $Entry != '..') {
				$tmp = ScanDirectory($Directory.'/'.$Entry, $fileTypes);
				$files = array_merge((array)$files, (array)$tmp);
			} else {
				// si le tableau est renseigné
				if (is_array($fileTypes)) {
					// on recupère l'extension du fichier
					$ext = get_file_extension($Entry);
					// on vérifie qu'elle fait partie de celles autorisée
					if (in_array ($ext, $fileTypes)) {
						$files[$Entry] = $Directory.'/';
					}
					// sinon, on mets toutes les occurences
				} else {
					$files[$Entry] = $Directory.'/';
				}
				
				/* note : on stocke les valeurs dans un tableau associatif :
				*  clé	nom du fichier
				*  valeur chemin du fichier
				*/
			}
		}
		closedir($MyDirectory);
		
		return $files;
	}

	function get_file_extension($file_name) {
		return substr(strrchr($file_name,'.'),1);
	}

 Conclusion

utiliser cette fonction ainsi :

$extensions = Array('jpg');
$files = ScanDirectory('../images', $extensions);

foreach($files as $cle => $valeur) {
     echo $cle . ' : ' . $valeur;
}


 Historique

04 février 2011 13:38:24 :
correction lors de l'utilisation de la fonction readdir(), précisant que la valeur 'false' ne peut venir QUE de la fonction et non pas du nom de fichier (dans le cas ou il serait nommé "false" ou "0")

 Sources du même auteur

RÉCUPÉRER LES MINIATURES D'UNE VIDÉO YOUTUBE

 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
Source avec Zip CONVERSION DES UNITÉS INFORMATIQUE (O, KIO, MIO, GIO, TIO...... par genetApt151
TROUVER LES DOUBLONS DANS UNE LISTE DE FICHIERS par soobook

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture PAGINATION JAVASCRIPT PHP MYSQL par cod57
PARCOURS DE TABLEAU À L'AIDE D'ATTRIBUTS HTML "NAME par choy
DELETE DELETE DELETE DELETE DELETE DELETE DELETE DELETE DELE... par dark_nemo
FICHIER XML => TABLEAU ASSOCIATIF par durealex
Source avec Zip XML ET TABLEAUX : UNE CLASSE COMPLÈTE QUI CONVERTIT UN DOCUM... par DaCodeManiak

Commentaires et avis

Commentaire de cod57 le 29/01/2011 15:50:11

bonjour
une autre methode rapide
<?php
$rep='images';$type='jpg';
foreach($file=glob($rep.'/*.'.$type) as $value){
echo $value.'<br />';
}
?>
a++

Commentaire de tefa24600 le 31/01/2011 11:46:04

Je ne connaissais pas cette fonction (miracle ?) !
Il ne lui manque que la recursivité et la gestion des extensions multiples !

Merci !

Commentaire de neigedhiver le 03/02/2011 09:26:24

Et encore une source qui n'utilise pas readdir correctement. La doc PHP est-elle donc si compliquée à comprendre ?
Et puis y'en a un peu marre des fonctions de ce genre qui n'apportent rien de nouveau, franchement, c'est lassant.

Commentaire de tefa24600 le 03/02/2011 15:05:49

Je n'ai pas dit que ma source apportait quelque chose de nouveau, je voulais juste trouver un moyen de stocker une liste de fichiers dans un tableau associatif.

En ce qui concerne la fonction readdir, tu parles surement du fait que je ne me sers pas de ce qu'elle retourne, mais plutôt que je lui dise "tant que tu lui affecte une valeur, on continue".

En attendant, si tu avais eu la gentillesse d'expliquer en quoi cette source est si mauvaise, je te demanderai la prochaine fois d'apporter un commentaire un poil plus constructif car ce genre d'intervention aussi est très lassante...

Commentaire de neigedhiver le 04/02/2011 11:45:17

Si tu avais pris la peine de lire la doc PHP, tu aurais vu que la syntaxe que tu utilises :
while($Entry = @readdir($MyDirectory)) {
n'est pas bonne. Et je ne vais pas m'étendre sur le sujet, parce que je l'ai déjà fait des dizaines de fois et je suis lassé de voir toujours la même chose, mal faite.

Et quand je dis que ta source n'apporte rien de nouveau, je ne me base pas sur ce que tu as écrit, mais sur le fait que, simplement, elle n'apporte rien de nouveau.
On va pas refaire un débat sur "faut-il partager ou non", parce qu'on tournerait en rond. Mais ce que j'ai écrit voulait quand même dire que cette source, n'apportant rien de nouveau, ne mérite pas nécessairement d'être publiée (indépendamment de sa qualité, dont je ne parle pas du tout). C'est pas une critique en soi, juste un constat, toujours le même : phpcs est jonché de sources qui n'apportent rien et qui sont souvent bourrées d'erreurs, de failles, etc. Et c'est dommage, parce qu'au final, ce sont les débutants qui morflent en n'apprenant pas à coder correctement.
Bref, désolé pour la digression.

Commentaire de tefa24600 le 04/02/2011 13:44:16

J'avoue avoir ma part de responsabilité dans la mauvaise utilisation de cette fonction (ayant eu la flemme de lire la doc jusqu'au bout) et c'est pourquoi je m'excuse d'avoir fourni une source avec une erreur connu de tout bon connaisseur en PHP.

L'erreur est corrigée, je laisse le partage dans le cadre où, si un débutant cherche avec ces mots clés, il puisse découvrir ce code (ainsi que ceux en rapport) et, s'il le souhaite, évoluer, se faire sa propre opinion voire même modifier cette source !

Commentaire de neigedhiver le 04/02/2011 16:45:56

On m'a dit un jour que j'étais un peu sec dans mes commentaires (c'est une litote). Bon, c'est vrai, je le reconnais et m'en excuse.
Mais à ma décharge, l'exaspération (entraînée par la lassitude) l'emporte souvent sur le sang-froid.

Commentaire de MacGaliver le 02/05/2012 11:09:11

Certaines personnes on que des connaissances, d'autres on une expérience professionnel, mais tout le monde peut se tromper ou ne pas savoir...

Cordialement.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

parcours de tableau et récupération de valeurs [ par chouchou1 ] Salut à tous, Je voudrais parcourir un tableau et placer chaque valeur que je rencontre dans une variable différente, est-ce que c est possible? une Tableau associatif [ par vbtom ] Bonjour je souhaite:Jaimerai faire un tableau qui ressemble a ceciN° | Nom_fichier | Taille_fichier | Date_fichier1 | Lala.gif | 124 tableau associatif [ par tobleronne ] Bonjour,Je souhaite renseigner un tableau a plusieurs dimensions mais rien n'y fait ?!?J'ai une boucle qui alimenterais un tableau du style : $monTabl Galerie avec récupération de l'id, probleme!!!! [ par tenshinan ] Salut &#224; tous!Voila, j'ai fais une galerie d'image que je r&#233;cup&#232;re dans un dossier. Le probl&#232;me est que je n'arrive pas &#224; r&#2 tableau associatif ? [ par nino69 ] Bonjour,J'ai une variable php:1)&nbsp;&nbsp;&nbsp;$nom_photo;Qui contient le nom d'un fichier jpg (exemple: photo05.jpg)j'ai un tableau qui contient u Retourner la position d'une clé d'un tableau associatif [ par mentral ] BonjourQuestion certainement conne s'il en est mais j'ai d&#251; louper une fonction de base : comment trouver la position d'une cl&#233; dans un tabl Uploader une image. [ par mwa_85 ] Bonjour, Vola daeux semaine que je suis en rade pour réussir à faire ce p*****n de script, pour uploader 1 image, la copié dans un dossier et la min probleme avec tableau associatif [ par arginine ] Bonjour, J'ai un probleme relativement stupide pour "construire" un tableau associatif avec plusieurs colonnes: &lt;? // exemple$tab = array( "fichier première valeur d'un tableau associatif ? [ par hakeem69 ] Bonjour, Je vousdrais SVP connaître la fonction (si elle existe) qui permet trouver la 1ere valeur d'un tableau création d'un tableau [ par salamontiSI ] Bonjour à tous,Je souhaite que l'on m'explique comment faire; Créer un tableau $tabDirectoy. Ce tableau contiendra les sous-dossiers du dossier« c:\pr


Nos sponsors


Sondage...

Comparez les prix

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,811 sec (3)

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