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 DES PAGES PRÉCISES (NEWS, TUTOS, ARTICLES) POUR STATS


Information sur la source

Catégorie :Fichier / Disque Classé sous : fichiers, fiche, liste, compter Niveau : Débutant Date de création : 03/01/2008 Date de mise à jour : 03/01/2008 21:53:47 Vu : 2 048

Note :
Aucune note

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


Description

Bonjour,
Je viens de me faire un petit code qui pourrait intéresser la plupart d'entre vous.
En effet, un ami, qui a un site assez gros contenant des fiches sur plusieurs sujets, en avait assez de modifier le nombre de fiches que contient son site à chaque fois qu'il en rajoute une. Il m'a alors demandé de lui faire un petit script pour le faire automatiquement...
La première idée qui m'est venu fût de tout mettre dans une base de donnée (BDD) puis de compter. Or, c'était un peu fou car il y a vraiment beaucoup de fiches ! Donc les mettre dans une BDD est un peu long...
Alors j'ai cherché et j'ai trouvé une solution : une fonction php qui compte le nombre de fichiers dans un même répertoire. Alors mon ami n'aura plus qu'a rajouter une toute petite extension à ces fiches pour pouvoir les compter !
 

Source

  • <?php
  • // Methode de listing
  • // count() sert a compter le nombre d element dans un tableau. On peut le remplacer par strlen() pour les chaines
  • // strstr() sert a chercher une chaine dans une autre
  • $nb = 0; // nombre de fichiers trouvés
  • $rep = '.'; // dossier a ouvrir (le point ouvre le dossier courrant)
  • $chaine = '.fiche.php'; // chaine a trouver dans le nom du fichier
  • $dh = opendir($rep); // on ouvre le dossier $rep
  • while (false !== ($filename = readdir($dh))) { // tant que $filename n est pas vide
  • $files[] = $filename; // on insere $filename dans le tableau $file[] : on peut supprimer cette ligne
  • // et y mettre a la place le bloc qu il y a dans la boucle for en remplacant $file[$i] par $filename
  • }
  • for($i=0; $i <= count($files); $i++) { // on incremente $i jusque count() soit atteint
  • $str = strstr($files[$i],$chaine); // on cherche $chaine dans $file[$i]
  • if($str !== false && $str == $chaine) { // si on a bien trouver notre chaine et que $str ne contient que $chaine
  • $nb = $nb+1; // on incremente $nb
  • }
  • }
  • closedir($dh); // on ferme le repertoire
  • echo $nb." fichiers trouvés !"; // on affiche le nombre de fichiers trouves
  • ?>
<?php

// Methode de listing
// count() sert a compter le nombre d element dans un tableau. On peut le remplacer par strlen() pour les chaines
// strstr() sert a chercher une chaine dans une autre

$nb = 0;  // nombre de fichiers trouvés
$rep = '.';  // dossier a ouvrir (le point ouvre le dossier courrant)
$chaine = '.fiche.php'; // chaine a trouver dans le nom du fichier
$dh  = opendir($rep); // on ouvre le dossier $rep

while (false !== ($filename = readdir($dh))) { // tant que $filename n est pas vide
    $files[] = $filename; // on insere $filename dans le tableau $file[] : on peut supprimer cette ligne
    // et y mettre a la place le bloc qu il y a dans la boucle for en remplacant $file[$i] par $filename
}

for($i=0; $i <= count($files); $i++) { // on incremente $i jusque count() soit atteint
	$str = strstr($files[$i],$chaine); // on cherche $chaine dans $file[$i]
	if($str !== false && $str == $chaine) { // si on a bien trouver notre chaine et que $str ne contient que $chaine
		$nb = $nb+1; // on incremente $nb
	}
}
closedir($dh); // on ferme le repertoire

echo $nb." fichiers trouvés !"; // on affiche le nombre de fichiers trouves

?>

Conclusion

Ici, j'ai donné une méthode avec tableau, mais on peut toujours utiliser la méthode sans tableau en faisant ce qui est décrit dans les commentaires, c'est-à-dire en mettant ce qu'il y a dans la boucle for à la place de $files[] = $filename; et en fesant les modifications conséquentes...
Voilà,... si vous avez des remarques, postez !
@+
Linkid
 

Historique

03 janvier 2008 21:51:02 :
Fautes d'orthographes
03 janvier 2008 21:53:47 :
Faute de frappe

Commentaires et avis

signaler à un administrateur
Commentaire de malalam le 03/01/2008 22:48:08 administrateur CS

Hello,

<?php
$rep = '.';
echo count(glob($rep.'/*.fiche.php'));
?>

signaler à un administrateur
Commentaire de yoman64 le 03/01/2008 22:52:02

Salut,
Pourquoi faire deux boucles ?

signaler à un administrateur
Commentaire de malalam le 03/01/2008 22:53:49 administrateur CS

Sinon, au niveau de ton code : évite de mettre des fonctions du genre count() dans un for().Parce qu'elle est alors exécutée à chaque itération de ta boucle, alors que tu n'en as besoin qu'une seule fois.
Et strstr() n'est pas appropriée là, du tout :
if(false !== strpos($chaine, $files[$i])) {
    $nb ++;
}
strstr() extrait toute une partie de chaîne, c'est bien plus lent que strpos() qui se contente de dire si une chaîne se trouve dans une autre, et si oui, à quelle position.

signaler à un administrateur
Commentaire de malalam le 03/01/2008 22:54:20 administrateur CS

Oui en plus tu aurais tout pu faire dans le while().

signaler à un administrateur
Commentaire de yoman64 le 03/01/2008 22:55:04

ah Malalam tu m'as devancé , j'étais justement en train de lire la documentation de glob pour être sur de ce que j'allais dire :P

signaler à un administrateur
Commentaire de linkid le 03/01/2008 23:26:03

J'avais déjà testé glob() pour voir et ça ne fesait pas ce que je voulais... de plus, j'ai testé ta commande et elle ne fonctionnait pas chez moi.
Enfin, j'ai hésité entre strpos et strstr et j'ai lu que strstr ne tenait pas compte de la casse, ce qui est très bien si on met des majuscules par erreur ou quoi que ce soit...

signaler à un administrateur
Commentaire de linkid le 03/01/2008 23:29:57

En fait, je viens de revérifier et j'ai un doute sur la casse... si vous pouviez m'éclairer.

signaler à un administrateur
Commentaire de malalam le 03/01/2008 23:40:24 administrateur CS

stripos()
et glob fonctionne à partir de php 4.3, ça m'étonne un peu que ça ne fonctionne pas chez toi...et ça fait exactement ce que tu veux. Mais bref.
Tu sais, des manières de faire plus simple que la tienne, il y en a des tonnes en fait, c'est ce que l'on essaye de te dire.
Par exemple :
<?php
function myFilter($v) {
return false !== stripos($v, 'fiche.php');
}
echo count(array_filter(scandir('.'), 'myFilter'));
?>

signaler à un administrateur
Commentaire de malalam le 03/01/2008 23:41:28 administrateur CS

Mais là c'est du php5 par contre.

signaler à un administrateur
Commentaire de linkid le 04/01/2008 00:04:38

Je viens de tester strpos et stripos et ça ne fonctionne pas chez moi (je suis chez free donc pas de php5 je crois)
Donc pour le moment, je vais laisser strstr car ça marche.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

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 Liste des fichiers d'un dossier [ par cagoulou ] Bonjour je souhaiterai , en php, rechercher tous les fichiers present dans un dossier afin de pouvoir les afficher dans un balise &lt;marquee&gt;.Pour Classer les fichiers listés par un script [ par dream303 ] Bonjour !Ce matin j'avais besoin d'un script qui liste les fichiers contenus dans un dossier et fais des liens avec. Script trouv&#233; ! Seuleument v Faire une liste déroulante à partir d'un dossier!! [ par Yoteco ] Hello,J'ai un dossier et dedans des fichiers (trop cool) et j'aimerais faire une liste déroulante qui ressort tt les fichiers qui sont dans ce dossier Liste des fichiers d'un dossier [ par smasher81 ] Bonjour, encor une question oui ;) Pourriez vous m'aidez à avoir une liste des fichiers d'un dossier SANS les extentions.. liste des fichiers d'un repertoire [ par cesarp ] bonjour cette question est certainement basique pour les pro , mais pour le beotien que je suis c'est un os :j'aimerais pouvoir transferer des petits Compter fichiers sur serveur [ par jipe32 ] Bonjour, je possède easy php et je voudrais savoir comment compter le nombre de fichiers présents sur le serveur (le dossier www) merci de vos reponse Recuperer liste fichiers et insertion dans page web [ par binbin_prod ] Bonjour !Voila, j'ai trouver un scripts d'up de video, tous marche.J'aimerai creer un fichier ou toutes mes videos serait prete a etre lire, je n'aura probleme avec téléchargement des fichiers [ par sabouha31 ] salut; j'ai trouvé un code php d'upload de fichier "http://www.phpcs.com/infomsgts_full_liste.aspx" alors se que je veux réaliser la liste des fichier Liste des fichiers dans un répertoire [ par kelm_by ] Salut tous le monde, Est-ce que il y a un moyen pour lister tous les fichiers qui existe dans un répertoire <p class="MsoNormal" style="MAR


Nos sponsors

Sondage...

CalendriCode

Janvier 2009
LMMJVSD
   1234
567891011
12131415161718
19202122232425
262728293031 

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



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,577 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é.