IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[Configuration] Comptage de fichiers bizarre


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut [Configuration] Comptage de fichiers bizarre
    Bonjour,
    Je souhaite compter le nombre de fichiers *.jpg dans un dossier, et les lister.

    Pour cela, j'ai fait un mignon petit script :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    $dir="./images/imagesdiaporama/ESSAI/"; 
    $diropen=opendir($dir);
    $i=0;
    while($file=readdir($diropen)){
    	$extension= strtolower(substr(strrchr( $file, "." ), 1 ));
    	if($extension==="jpg"){
    		@$ext=count($file)+$ext;
    			echo "Fichier JPG trouvé n°$i - $file<br>";
    		}
    	$i++;
    }
    echo "Nombre de fichiers correspondants à l'extension JPG : $ext<br>";
    Bon, ça marche bien sauf que je n'ai que ces fichiers *.jpg dans le dossier, mais que PHP m'en trouve 2 autres (j'ai pourtant la config qu'il faut pour voir les fichiers cachés sous winxp)...

    Si je change le script pour trouver ces 2 fichiers, voici ce que je récolte :
    Fichier JPG trouvé n°0 - .
    Fichier JPG trouvé n°1 - ..
    Fichier JPG trouvé n°8 - Thumbs.db
    Nombre de fichiers correspondants à l'extension JPG : 3
    Bon, pour thumbs, OK, pas de problème... mais les 2 autres, comment faire en sorte qu'ils n'apparaissent pas?
    Merci !

  2. #2
    Membre émérite Avatar de FCYPBA
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    745
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 745
    Par défaut
    Bonsoir,

    Il faut faire un test pour exclure ces deux répertoires et c'est obligatoire, bein que je pense que normalement si tu ne prends que l'extension tu ne devrais pas avoir ce problème. Peut-être faudrait-il vérifier ta fonction.

    Ensuite, je ne sias pas si cela est important pour toi, mais dans ce script tu ne fait que vérifier l'extension du fichier. En php , il existe une fonction permettant d'avoir le type MIME du fichier et donc d'être sur qu'il s'agit d'une image JPG. il s'agit de la fonction mime_content_type


    Par contre je ne comprends pas pourquoi tu fais un count($file), au lieu de faire simplement $ext++

    Bonne soirée

  3. #3
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Bonsoir,
    Et merci de la réponse rapide !

    La fonction mime_content_type semble être la solution... Je vais essayer tout de suite !

    Par contre je ne comprends pas pourquoi tu fais un count($file), au lieu de faire simplement $ext++
    Je débute, alors je fais pas mal de bêtises ou de tests inutiles pour utiliser les fonctions....

    Si c'est bien là la réponse à mon souci, je mettrai résolu dès que j'aurai terminé le test !

    Merci et bonne soirée !
    Gamin

  4. #4
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Désolé mais j'ai une
    Fatal error: Call to undefined function: mime_content_type() in c:\program files\....\xx.php on line 1
    J'ai pourtant bien le fichier magic.mime...

    Faut-il configurer le php.ini pour cette fonction?

  5. #5
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je sens que je vais poser une question bête mais... je ne comprends pas comment ce code peut donner cette sortie. Même si le recours à count() est frauduleux, le test sur l'extension DOIT éliminer les fichiers ., .. et thumbs.db.

    Je viens de tester chez moi avec une petite modif (je lis un tableau et non pas un répertoire) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $dir = array( ".", "..", "thumbs.db", "un.jpg", "deux.jpg" );
    $i=0;
    foreach ( $dir as $file ) {
    	$extension= strtolower(substr(strrchr( $file, "." ), 1 ));
    	if($extension=="jpg"){
    		$ext=count($file)+$ext;
    		echo "Fichier JPG trouvé n°$i - $file<br>";
    	}
    	$i++;
    }
    echo "Nombre de fichiers correspondants à l'extension JPG : $ext<br>";
    En sortie :
    Fichier JPG trouvé n°3 - un.jpg
    Fichier JPG trouvé n°4 - deux.jpg
    Nombre de fichiers correspondants à l'extension JPG : 2
    Y-ay-til une subtilité qui m'échappe ??????

  6. #6
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Citation Envoyé par mathieugamin
    Désolé mais j'ai une

    J'ai pourtant bien le fichier magic.mime...

    Faut-il configurer le php.ini pour cette fonction?
    Oui : il faut activer l'extension mime_magic.dll
    NB : la doc PHP conseille d'utiliser fileinfo à la place.

  7. #7
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Bonjour,
    J'ai bien activé l'extension, mais j'ai encore une erreur...
    Est-ce que ça peut être dû à un fichier endommagé?

    Voici l'erreur :
    Fatal error: mime_magic could not be initialized, magic file (null) is not avaliable in c:\program files\...\fichiers\test_dp.php on line 10
    Est-ce que cela dit quelque chose à quelqu'un?

    Merci

  8. #8
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    REU !
    En fait, j'utilise ce script pour faire un diaporama automatique...

    Lorsque se lance mon diaporama, malgré le filtre JPG sur l'extension des fichiers, la page affiche un cadre d'image absente...

    Dans les propriétés de cette image, voici ce que j'ai :
    Le script doit pourtant aller chercher les fichiers jpeg dans un sous dossiers situé 2 niveaux en dessous !

    Par exemple, l'image suivante a pour propriétés :
    Donc tout porte à croire qu'il s'agit des "." et ".." des dossiers courant et parent !
    Mais pourquoi !!!!???...

    Est-ce que ça éclaire quelqu'un ? Parce que moi, là...

  9. #9
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Citation Envoyé par mathieugamin
    Bonjour,
    J'ai bien activé l'extension, mais j'ai encore une erreur...
    Est-ce que ça peut être dû à un fichier endommagé?
    Peut-être :
    Note aux utilisateurs Windows : Afin de pouvoir utiliser ce module en environnement Windows, vous devez activer le chemin jusqu'au fichier magic.mime de votre php.ini.

    Exemple 1. Configuration Windows de magic.mimemime_magic.magicfile ="$PHP_INSTALL_DIR\magic.mime"

    N'oubliez pas de remplacer la valeur de $PHP_INSTALL_DIR par votre chemin jusqu'à l'exécutable PHP, dans l'exemple ci-desssus. Par exemple, c:\php.

  10. #10
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Personnellement, j'aime bien les regexp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    $dir="./images/imagesdiaporama/ESSAI/"; 
    $diropen=opendir($dir);
    $i=0;
    while($file=readdir($diropen)){
    	if(preg_match("/\.jpg$/i", $file)) {
                 ...
    	}
    	$i++;
    }
    echo "Nombre de fichiers correspondants à l'extension JPG : $ext<br>";

  11. #11
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Oui, je trouve ça aussi plus propre (et plus puissant).
    Ou pourrait ajouter qu'un contrôle avec is_dir() serait le bienvenu (et résoudrait le problème ).

    Par contre, ça ne répond pas à la question sur le pourquoi du code qui ne marche pas... (ni à la mienne d'ailleurs puisque chez moi... ça marche... )

  12. #12
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Il me semblait que la réponse était claire, mais je me propose de préciser :
    dans tout listing de répertoire, tu va inclure les deux répertoires système
    . = répertoire courant
    .. = répertoire parent

    Ce comptage n'est donc pas pas du tout fantaisiste, il avait oublié ces deux répertoires cachés. A noter qu'avec les regexp, ils ne sont pas pris en compte car n'entrant pas dans le motif de recherche.

    C'est mieux ?

  13. #13
    Membre émérite Avatar de Herode
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2005
    Messages
    825
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2005
    Messages : 825
    Par défaut
    Je me suis mal fait comprendre. Ce qui m'échappe, c'est pourquoi le test sur les extensions cité initialement ne marche pas, vu... qu'il marche chez moi...

    Pour les regex, pas de problème, c'est clair.

  14. #14
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Très honnêtement, je n'utilise pas mime_magic.
    Le travail sur extensions est aussi simple et plus portable puisque ne nécessitant aucune installation ou configuration supplémentaire.
    Et ça ne fait pas de mal de classer proprement ses fichiers avec des extensions correctes. AMHA, bien sûr.

  15. #15
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Salut,
    Merci à vous deux pour toutes ces précisions, cependant le résultat ne change pas...

    J'ai pourtant mis en place les deux solutions que vous m'avez données, sans succès...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php 
    $dir="./images/imagesdiaporama/ESSAI"; 
    $diropen=opendir($dir); $i=0; 
    while($file =readdir($diropen)){
    	if((preg_match("/\.jpg/i", $file))&&(!is_dir("$file"))) {	
    		echo "couv[".$i."] = './images/imagesdiaporama/ESSAI/$file';"; 
    		}
    	$i++;}
    ?>
    Cependant,
    Je trouve qu'il y a un truc bizarre...
    Ce script génère le texte d'un Javascript qui me permet de faire tourner les photos... Dans le script final, je ne trouve pas de fichiers "." ou ".." lorsque je consulte la source ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    couv = new Array;
    couv[2] = './images/imagesdiaporama/ESSAI/img_nur1_tn.jpg';
    couv[3] = './images/imagesdiaporama/ESSAI/img_nur2_tn.jpg';
    couv[4] = './images/imagesdiaporama/ESSAI/img_nur3_tn.jpg';
    couv[5] = './images/imagesdiaporama/ESSAI/img_nur4_tn.jpg';
    couv[6] = './images/imagesdiaporama/ESSAI/img_nur5_tn.jpg';
    couv[7] = './images/imagesdiaporama/ESSAI/img_nur6_tn.jpg';
    Donc maintenant, je suis encore plus perdu !
    Une idée?

  16. #16
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Autre fait troublant, lorsque je copie la soit-disante "image invisible" de mon diaporama, et que je la colle dans un logiciel de bureautique, cela affiche cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    couv = new Array;
    couv[2] = './images/imagesdiaporama/ESSAI/img_nur1_tn.jpg';
    couv[3] = './images/imagesdiaporama/ESSAI/img_nur2_tn.jpg';
    couv[4] = './images/imagesdiaporama/ESSAI/img_nur3_tn.jpg';
    couv[5] = './images/imagesdiaporama/ESSAI/img_nur4_tn.jpg';
    couv[6] = './images/imagesdiaporama/ESSAI/img_nur5_tn.jpg';
    couv[7] = './images/imagesdiaporama/ESSAI/img_nur6_tn.jpg';
    alors que si je fais la même chose avec une des images qui défile, cela colle l'image...

    Donc le navigateur interprète le code comme une image...

    Que faire?!

  17. #17
    Membre Expert
    Avatar de s.n.a.f.u
    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2006
    Messages
    2 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Août 2006
    Messages : 2 760
    Par défaut
    Salut,

    En fait, je ne vois plus où est le problème.
    Visiblement, tu récupères bien uniquement les images.
    C'est ton comptage qui est faux ?

    --- edit ---

    N'y aurait-il pas une coquille dans le compteur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    while($file =readdir($diropen)){
    	if((preg_match("/\.jpg/i", $file))&&(!is_dir("$file"))) {	
    		echo "couv[".$i."] = './images/imagesdiaporama/ESSAI/$file';"; 
            }
    	$i++;}
    $i s'incrémente même si ce n'est pas une image car il n'est pas dans le bloc 'if'

  18. #18
    Membre chevronné Avatar de mathieugamin
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    572
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 572
    Par défaut
    Question :
    Comment appelle-t-on un mec qui sollicite l'attention de plusieurs personnes pour un problème dont le solution est devant ses yeux?

    Réponse :
    Un

    C'était juste ça ! Cette saloperie de compteur pas dans le bloc while, et pas dans le bloc if.

    En tout cas, merci pour les astuces avec les regex, je m'en servirais dès que possible !

    Merci encore !

    Gamin

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Configuration d'un fichier de build
    Par spidetra dans le forum ANT
    Réponses: 1
    Dernier message: 31/01/2006, 14h06
  2. [Configuration] Inclure un fichier .c dans une page PHP
    Par Korma dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 18/01/2006, 13h49
  3. Pb de comptage de fichiers dans un dossier
    Par oz80 dans le forum Access
    Réponses: 2
    Dernier message: 15/11/2005, 15h26
  4. chargement fichier bizarre
    Par jiceher dans le forum C++
    Réponses: 14
    Dernier message: 28/08/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo