Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

COMPTER LE NOMBRE DE FICHIERS DANS UN DOSSIER


Information sur la source

Catégorie :Fichier / Disque Classé sous : compter, nombre, fichiers, répertoire Niveau : Débutant Date de création : 31/03/2008 Date de mise à jour : 31/03/2008 01:05:51 Vu : 5 577

Note :
Aucune note

Commentaire sur cette source (19)
Ajouter un commentaire et/ou une note

Description

Après pas mal de recherche, je n'ai pas réellement trouvé un code qui me convenait. J'ai donc trouvé une solution pour compter le nombre de fichiers existants (donc avec une extension) dans un dossier. C'est simple et ça peut servir pour certain développeur.
 

Source

  • <?php
  • $files = glob("dossier/*.*");/* $files pour "lister" les fichiers - Mise en place de *.* pour dire que ce dossier contient une extension (par exemple .jpg, .php, etc... */
  • $compteur = count($files);/* Variable $compteur pour compter (count) les fichiers lister ($files) dans le dossier */
  • echo "Il y a <font color=#FF0000>$compteur</font>";
  • if ($compteur > 1) { echo " fichiers dans ce répertoire"; }
  • else { echo " fichier dans ce répertoire"; }
  • ?>
<?php
$files = glob("dossier/*.*");/* $files pour "lister" les fichiers - Mise en place de *.* pour dire que ce dossier contient une extension (par exemple .jpg, .php, etc... */
$compteur = count($files);/* Variable $compteur pour compter (count) les fichiers lister ($files) dans le dossier */
echo "Il y a <font color=#FF0000>$compteur</font>";
if ($compteur > 1) { echo " fichiers dans ce répertoire"; }
else { echo " fichier dans ce répertoire"; }
?>

Conclusion

Pour conclure, j'espère que les commentaires seront utiles pour les personnes désirant apprendre et/ou comprendre.
Je précise aussi que la condition détermine que s'il y a plus d'un fichier alors "fichier" prendra un "s" (fichiers) sinon il restera écrit comme "fichier".
 

Historique

31 mars 2008 01:05:51 :
Petit rajout : Au lieu de $files = glob("mick/*.*"); je l'ai remplacé par $files = glob("dossier/*.*"); (dossier) pour que tout le monde puisse comprendre.

Commentaires et avis

signaler à un administrateur
Commentaire de mehdi7604 le 31/03/2008 01:27:22

Bonjour ,
C'est vraiment utile pour mon site , mais es ce que vous pouvez récupérer les noms de fichiers dans un tableau par exemple ?
( dans un dossier où on ne connais pas les fichiers )

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 01:41:26

Pour cela, il y a un code pour récupérer en array, c'est un code totalement différent...

Essayes ceci:

<?php
/* On récupère les fichiers du répertoire dans un tableau $fichiers */
$dir = opendir(".");
$fichiers = array();
while ($nom = readdir($dir)) {
  $fichiers[] = $nom;
  echo $nom.'<br />';
}
closedir($dir);
?>

Pas essayé, mais logiquement, ça devrait fonctionner...

signaler à un administrateur
Commentaire de neigedhiver le 31/03/2008 01:42:17

Salut,

Sans vouloir faire le rabat-joie, ça aurait plus sa place dans les snippets de codyx qu'ici...
Sans vouloir te vexer non plus, tous les fichiers n'ont pas d'extension. Certains répertoires peuvent aussi avoir un . dans leur nom.

Exemple :
/home/myself/myscript.php/README

Sur les OS de type Unix/Linux, les répertoires sont des fichiers. Ils sont même éditables avec un éditeur de fichier, c'est dire (c'était juste pour l'anecdote).

Allez, en une ligne :

<?php echo 'Il y a <span style="color: #f00; background-color: inherit">' . ($nb = count(scandir('/dossier/a/traiter')) - 2) . '</span> fichier' . (($nb>0) ? 's' : '') . ' dans le dossier'; ?>

Vraiment, c'est un snippet, pas une source...

signaler à un administrateur
Commentaire de neigedhiver le 31/03/2008 01:43:23

Ah j'viens de voir les commentaires précédents...

Pour récupérer les fichiers dans un tableau, il suffit de lire la doc de PHP, la fonction glob() sert à ça...

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 01:45:31

Ou sinon, tu as plus simple, avec des print au lieu de tableau :

<? php
$fichiers = glob('./*');
print_r($fichiers);
?>

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 01:49:06

neigedhiver justement, c'est aussi en attente de validation sur Codyx.
Comme je l'ai dit, c'est quelque chose de basique (d'où certain développeur).
Je dépose une aide, après, chacun l'arrange à sa sauce...

C'est basique quoi...

signaler à un administrateur
Commentaire de neigedhiver le 31/03/2008 01:52:32

Oui ben si c'est en attente de validation sur codyx, c'est pas la peine de le poster ici...
Pour deux raisons :
- ça va faire doublon
- c'est pas sa place.

Dans la rubrique sources, on ne mets généralement pas des codes de 5 lignes qui peuvent tenir en une seule. On met plutôt des classes, des utilitaires complets.
Le but de codyx est justement d'accueillir les "mini-sources"

Faut juste pas être pressé à la seconde... Y'a rien d'urgent à partager une fonction...

signaler à un administrateur
Commentaire de DarkAngel75 le 31/03/2008 01:54:22

oui moi en tout cas ca me sert.
c'est expliqué et les autres sources nous balance ca comme si on pouvait tout comprendre sans commentaire.
enfin voila tres utile ta source, meme si c'est un snippet :-)

encore bravo :-p

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 02:00:48

Lol neigedhiver...
Ne crache pas ton venin sur moi, il y en a plein d'autres qui ont fait cette chose et je ne t'ai pas vu faire ça.
Soit, on parle de code, c'est pour aider, donc aider ne veut pas dire "je te lynche sur autre chose".
Les admins ont le pouvoirs de faire ce qu'ils veulent dessus, donc on reste sur la partie source (ou code si tu préfères), pas sur la partie "je ne suis pas d'accord avec toi pour l'emplacement". (Et je ne suis pas pressé, car j'aurai pu en poster des sources et/ou snippets, mais cela est utile pour ceux qui cherche, comme moi, et qui n'avaient pas trouvé =)).

Darkangel75, ben j'espère que ça t'a aidé ;) et merci pour le com's =)

signaler à un administrateur
Commentaire de neigedhiver le 31/03/2008 02:27:41

Alors je ne crache mon venin sur personne. Je ne sais même pas si j'en ai (réflexion faite, si, mais je le garde pour les grande occasions).

C'est bien de partager. C'est très bien. Je t'en félicite, c'est une bonne initiative.
Simplement, c'est pas parce que je ne suis pas admin que j'ai pas mon mot à dire quant à l'endroit où poster un snippet. Je te fais simplement remarquer qu'à mon sens ce snippet a sa place dans les snippets, pas dans les sources. Rien de plus. Je laisse les admins faire leur boulot, moi, en tant qu'habitué, je te dis simplement ce que je pense. Le fait que je sois un habitué ne me donne pas de pouvoir, pas de supériorité, je ne te juge pas, je ne te prends pas de haut.
Et je ne dis pas que ton snippet n'aide pas, je ne remets pas ça en question, donc pas la peine de te "défendre" en disant que c'est pour aider.

D'ailleurs, j'ai pas dit que ta source était inutile. Première chose que j'ai faite quand je l'ai vue, c'est chercher si une fonction php fait ça (parce que crois-moi, des snippets ou des sources qui font en 15 lignes ce qu'une fonction fait en natif, ça existe, et on en voit...). Pas de fonction qui existe, très bien. J'ai alors cherché comment faire plus court. On peut le faire en une ligne, je te l'ai proposé. Voilà pour la "critique" du code. Tu prends, tu laisses, peu importe. C'est pas bien important, parce que côté performances ma ligne ne fait sûrement pas beaucoup mieux que les tiennes. C'est juste plus court...

Donc oui, c'est utile, ça peut aider : ça n'a juste pas sa place dans les sources... Je me permets de te le dire, parce que si cette source disparait, tu sauras pourquoi (surtout si le snippet est publié).

Pour terminer ma critique du code : l'idéal est non pas de faire un bout de code qui formatte un affichage en HTML, mais qui se contente de retourner une valeur (ici, le nombre de fichiers). L'idée est que c'est à chacun de choisir comment il présente ses données. Oui, chacun peut modifier les 3 lignes qu'il y a, c'est pas sorcier. C'est juste pour pinailler, parce que c'est très important à mes yeux, et ça joue sur les habitudes de développement : séparer le traitement (ici le PHP) de l'affichage (ici, du HTML).
Tu en ferais une fonction comme ça :

function num_files($dir) {
  if (is_dir($dir)) {
    return (count(scandir($dir) -2);
  }
  else {
    trigger_error('Directory does not exist', E_USER_NOTICE);
  }
}

ce serait encore plus propre...

Et puis des snippets, si t'en as plein, n'hésite pas à les poster... Ca prend parfois un peu de temps à la validation, mais c'est vraiment le genre de contribution qui ne peut être que bénéfique.

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 02:36:46

C'est sur, on va pas se battre pour ça.
En revanche, je ne sais pas si ton code ci-dessus est pour débutant, perso, je le comprends qu'à moitié, mais je ne suis pas un expert non plus, loin de là, je tiens à le précisé.

Ayant vu ce type de code qui ne fonctionnait pas, je me suis dit autant le faire ici, j'ai combiné plusieurs codes, en vain.

J'ai posté ce code ici, en oubliant que codyx existait (pas cool, je sais), habitude de poster sur mon forum (pour cela que je dis que des snippets et codes j'en ai), j'ai vu que j'avais fait un lien sur codyx, et j'ai donc ajouté ce code dans les snippets.

S'il n'a vraiment pas sa place ici (chose qui est plus que probable), je n'ai rien contre qu'il soit supprimé d'ici pour le laisser sur codyx. Mais ca venait d'une bonne intention et par simple oubli de ma part pour codyx (posté dessus qu'après...).

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 02:39:17

Pardon, que j'avais fait un lien sur mon forum pour codyx.
PS : Désolé pour les fautes, en me relisant, j'ai vu le torchon.

Néanmoins, merci pour la franchise =)

signaler à un administrateur
Commentaire de neigedhiver le 31/03/2008 02:55:05

Content de voir que tu ne prends pas mal mes remarques : tant mieux, parce que je les fais sans aucune animosité.

Le code que j'ai mis au dessus est effectivement pour débutant. Pas un débutant qui découvre PHP depuis 1h, certes, mais quand même. Cependant, il fait appel à des notions de non-débutant (test de l'existence du répertoire, gestion de l'erreur).

Il s'agit donc d'une fonction qui retourne un nombre en cas de réussite (et c'est là que je me rends compte qu'elle ne renvoit rien en cas d'échec, ce qui est une erreur de ma part).
Elle teste tout d'abord l'existence du répertoire en tant que répertoire (d'où l'utilisation de is_dir() au lieu de file_exists() : puisque les répertoires sont aussi des fichiers, file_exists() retourne vrai si un fichier du nom existe, que ce soit un simple fichier ou un répertoire).
Elle compte ensuite le nombre de fichiers dans le répertoire, déduis . et ..
Si le répertoire n'existe pas, elle provoque une erreur avec un message (en anglais, qui peut être traduit par un gestionnaire d'erreurs plus tard), et avec un code erreur E_USER_NOTICE (cf la doc de PHP pour ça).

RIen de bien sorcier. Pour que ça soit plus propre, il faudrait rajouter
return false;
après le trigger_error().

Euh voilà.

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 03:01:46

Hum ok, intéressant, j'apprends PHP de façon, comment dire ça, vite, pour reprise d'études, donc je n'ai pas tout encore. Disons que je visionne pas mal de sources, j'apprends de là, de tutos, mais je n'ai pas toutes les bases, et ce code là m'a intéressé quand je l'ai fait pour un panneau d'administration...

En tout cas, merci pour l'info

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 03:04:37

Hum intéressant (mon message n'a pas été posté donc s'il est en double, désolé)...
Je ne connais pas tout encore, j'apprends via des tutos, des sources.
Pour ce code, je me suis lancé sur cela, mais bon, sans réel succès, puis ce code que je viens de faire, m'a permis de savoir le nombre de fichier qu'il y a dans mon panneau d'administration par admins...

Merci en tout cas pour l'info =)

signaler à un administrateur
Commentaire de malalam le 31/03/2008 20:01:55 administrateur CS

Hello,

j'irai jeter un oeil sur codyx. Parce que je suis tout à fait d'accord avec Neige : ça n'est pas un code source, c'est bien un snippet.
De plus, il y a un truc que j'ai du mal à comprendre décidément : pourquoi les codes dédiés aux débutants sont-ils toujours les moins pratiques à utiliser ? Quand on est débutant, à priori, c'est qu'on aura plus de mal à modifier un code pour l'intégrer à SON site qu'un non débutant. Et quoi de plus simple à utiliser qu'une fonction ? J'ai besoin de savoir combien de fichiers contient un répertoire, j'appelle la fonction compterFichiers() en lui passant le répertoire concerné, et je sais qu'elle me retourne un entier. Après, si je veux faire un echo ou autre, c'est facile.
Imaginez si les créateurs de PHP avaient fait toutes les fonctions de cette manière :
- compter le nombre de caractères dans une chaîne.
Reproduisez et adaptez ce code :
<?php
$i = 0;
$sChaine = 'toto';
while(isset($sChaine[$i])) {
    $i++;
}
echo 'Il y a '.$i.' caractère dans la chaîne '. $sChaine;
?>

Franchement, pour un débutant, c'est pas plus simple et adaptable de faire par exemple:
<?php
echo 'Le mot toto contient '.strlen('toto').' caractères';
?>

?


signaler à un administrateur
Commentaire de malalam le 31/03/2008 20:03:16 administrateur CS

Et ce, sans compter l'exemple dans la manière de coder que l'on montre à un débutant...le tout séquentiel, c'est pas ce qu'il y a de mieux. Autant donner de bonnes habitudes afin qu'il galère moins par la suite avec ses propres codes.

signaler à un administrateur
Commentaire de MJ92 le 31/03/2008 20:05:33

Salut,

Elle est arrivé sur Codyx ce jour =)
Oui, bien sur, c'est plus simple, je n'ai pas appris à coder en fonction, mais j'apprends, on peut l'enlever =)

signaler à un administrateur
Commentaire de babatt92 le 20/07/2008 23:50:29

Bonjour
Mon script si dessous marchait parfaitement sous easyphp mais pas du tout chez free. Apparement ils ont désastivé la fonction glob. Je n'arrive pas pas du tout avec opendir()

<? $files = glob("../../absolut/Images/500500/".$val['Reference']."*.jpg");
$compteur = count($files);
echo "Il y a <b>$compteur</b> photo";
If ($compteur > 1) { echo "s"; }
echo " en cliquant l'agrandissement. ?>

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

compter le nombre de dimanche sur un intervalle de date [ par desrimaisd ] salut,je voudrais savoir si kelk'un connaitrait un moyen de savoir combien il y a de dimanche (en fait d'un jour en particulier, c pareil pour les aut Compter des fichiers.... [ par FleX ] Alors voila. je voudrais me faire un script php3 qui compte le nombre de fichiers dans un dossier et que le resultat soit mis dans une variable, que j PB Compter le nombre de posts par utilisateurs dans une table [ par the_snake ] Bonjour je cherche une solution pour compter le nombre de posts par utilisateurs dans une table exemple:J'ai une table mysql (article _tbl) ou sont in Besoin d'aide pour compter nombre d'utilisateur sur une IP avec fsockopen [ par Frenchy566 ] Salut à tous, j'ai une petite question que je n'arrive pas a résoudre moi-même : Je voudrais savoir comment faire pour compter le nombre de connecter Compter nombre de ligne ou caractere [ par chris81 ] bonjour,ya t'il moyen de compter le nbre de ligne ou de caractere dans un texte. existe t'il une fonction genre montexte.lenght et peut on controler l Comment limité le nombre de fichiers dans un dossier ? [ par pyranhaz ] S@lut,J'offre un accès au dossier de mes clients qui annonce chez-nous pour mettre leurs photos.Selon le forfait du client, il a droit à un nombre lim comment compter le nombre de caracteres d'une variable [ par blibers ] je souhaiterai tester une variable numerique&nbsp;sur son nombre de caracteres.&nbsp;ou comment compter le nombre de caractere d'une variableet j en a Connaitre le nombre de fichiers dans un dossier [ par tony4758 ] Bonjour, je voudrais savoir si il existe un script permettant de compter le nombre de fichier qui se trouvent dans un repertoire defini, je n'ai pas t Compter le nombre de ligne d'une requete sur interbase [ par cuicui ] Bonjour,J'ai écris une fonction executant une requête sur interbase, je voudari compter le nombre de ligne que me renvoie la requête. Sachant que cett Droit d'accès aux sous-répertoires [ par jack ] Salut ta tousSur mon site, j'ai des fichiers htaccess qui protègent l'accès aux répertoires (tant mieux).Dans un de mes prog, j'ai besoin de venir cha


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,359 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.