Page 1 sur 1
Comment compter fichiers par nom ?
Posté : 30 janv. 2012, 13:54
par Gunner1976
Bonjour,
Voila, dans un dossier j'ai
orange_01
orange_02
...
orange_20
bleu_01
bleu_02
rouge_01
rouge _02
...
rouge_15
J'aimerai pouvoir afficher soit le nombre de fichier propre à chaque nom (20 pour orange, 2 pour bleu, 15 pour rouge), soit la dernière occurence (orange_20, bleu_02, rouge_15).
Je ne sais pas du tout comment je peux faire ça...
est-ce possible, et si oui, via quelle commande ?
Merci beaucoup
Re: Comment compter fichiers par nom ?
Posté : 30 janv. 2012, 14:08
par moogli
salut,
tous est possible
Si le motif est toujours le même nom_xx.ext
tu peux le faire facilement :
- La fonction
glob pour lister le contenu du répertoire ciblé
- la fonction
foreach pour parcourir le tableau.
- la fonction
explode ou
preg_match
suivant le cas, deux explode, un sur le _ pour séparer nom et N°+ext et une pour séparer N° et extension
A partir de la tu gère un tableau résultat avec en index le nom du fichier, un test avec
isset pour savoir si l'index existe ou pas (s'il existe pas tu insère avec en valeur zéro) et derrière un incrément ($var++).
Tu peux aussi utiliser les classe de spl, comme la classe
DirectoryIterator pour simplifier un peu la chose. (ou pas).
@+
Re: Comment compter fichiers par nom ?
Posté : 30 janv. 2012, 18:27
par Gunner1976
Merci de cette piste.
Alors si je comprends bien c(est toujours le même schéma comme tu l'as deviné : nom_xx.jpg) :
Code : Tout sélectionner
<?php
$root = "images";
foreach (glob("$root/*.jpg") as $filename) {
$name = explode("_", $filename);
}
?>
Ai-je bon pour le moment ?
Je ne vois pas comment séparer les numéros à deux chiffres du reste en passant par explode...
Pas plus que comment je peux mettre le nombre d'orange et de bleu... j'ai du rater quelque chose... serait-ce possible d'avoir un coup de pouce supplémentaire ?
Merci beaucoup.
Re: Comment compter fichiers par nom ?
Posté : 30 janv. 2012, 18:38
par xTG
Bah tu les sépares déjà avec ton explode.

Regardes donc ce que te retournes la fonction.
Re: Comment compter fichiers par nom ?
Posté : 31 janv. 2012, 15:36
par Gunner1976
Bonjour,
Voici ce que ça renvoie :
Array ( [0] => images/orange [1] => 3.jpg
j'ai rajouté un
Code : Tout sélectionner
$taille =count($name);
echo 'La taille du tableau est :'.$taille;
mais ça me met :
La taille du tableau est :2
A noter que durant le test j'avais bien toutes les images dans le dossier, or c'est toujours orange_03.jpg qui s'affiche au niveau du Array.
Je n'y comprends rien du tout...

Re: Comment compter fichiers par nom ?
Posté : 02 févr. 2012, 16:18
par gunner1976
Bonjour,
Personne ne peut m'aider ?
Re: Comment compter fichiers par nom ?
Posté : 02 févr. 2012, 17:11
par moogli
C'est quoi le code testé ?
Re: Comment compter fichiers par nom ?
Posté : 02 févr. 2012, 19:10
par gunner1976
Celui-ci :
Code : Tout sélectionner
<?php
$root = "images";
foreach (glob("$root/*.jpg") as $filename) {
$name = explode("_", $filename);
}
avec un print_r pour l'affichage, ce qui me renvoie ceci :
Array ( [0] => images/orange [1] => 3.jpg
Merci.
Re: Comment compter fichiers par nom ?
Posté : 02 févr. 2012, 19:43
par xTG
Aucun affichage dans ce code...
Et à mon avis tu n'as pas compris le fonctionnement d'une boucle.
Ton affichage se trouve en dehors de la boucle c'est ça ? Donc $name prend la dernière valeur de la boucle...
Car à chaque itération de la boucle $name est écrasée.
Re: Comment compter fichiers par nom ?
Posté : 02 févr. 2012, 20:06
par moogli
bon aller je suis sympa, ça ce fait en 12 lignes
<?php
$directory = 'images';
$filenames = array();
$iterator = new DirectoryIterator($directory);
foreach ($iterator as $fileinfo) {
if ($fileinfo->isFile() && $fileinfo->getExtension()== 'png') {
$f = substr($fileinfo->getFilename(),0,strrpos($fileinfo->getFilename(),'_'));
if (isset($filenames[$f]))
$filenames[$f]++;
else
$filenames[$f] = 1;
}
}
echo '<pre>';
var_dump($filenames);
echo '</pre>';
?>
ce qui donne
array(2) {
["logo_tuxcopy095048"]=>
int(17)
["mcd_exemple"]=>
int(11)
}
Re: Comment compter fichiers par nom ?
Posté : 06 févr. 2012, 12:03
par Gunner1976
Bonjour,
Je te remercie beaucoup pour le code.
Je suis d'accord avec toi, je crois aussi que je ne maitrise pas du tout les boucles... à chaque fois que je dois en employer une je galère... malgré mes efforts PHP me semble toujours obscur, mais bon... je ne désespère pas (je devrai peut etre remarque !

)
Merci encore, sujet classé =D>