Liste le nombre d'images identiques dans un dossier

Résolu
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010 - 22 juil. 2008 à 14:51
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 - 24 juil. 2008 à 17:13
Bonjour,
Je voudrais afficher le nombre d'images identiques dans un dossier.
C'est dire connaitre le nombre d'images commençant ainsi AZETRPMON1000_1, AZETRPMON1000_2,...
J'utilisai glob :
-------------------------------------
$files = glob("../../Images/500500/".$val['Reference']."*.jpg");
$compteur = count($files);
echo "Il y a $compteur photo";
 If ($compteur > 1) { echo "s"; }
echo " en cliquant l'agrandissement.
-------------------------------------
Mais glob ne fonctionne pas chez free et j'ai trop de mal avec opendir() car je cherche à connaitre le nombre de certain fichier du dossier et non pas tous les fichiers du dossier.
Merci pour un coup de main ;)

23 réponses

babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 00:25
Un grand merci et en plus j'ai tout compris
3
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 10:42
Regarde voir du coté de DirectoryIterator, qui devrait te donner tout ce dont tu a besoin.

DirectoryIterator utilise php5, free ne le fait pas de base, mais un .htaccess devrait solutionner ton problème.

Bonne journée

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
23 juil. 2008 à 14:33
Je suis pas assez calé que toi. Mon code fesait 3 lignes.
Je demande pas le code tout fait mais le princepe de fonctionnement.
Il faut ouvrir le dossier regarder dans une boucle les fichiers commençant pareil.
fermer le dossier et faire un count?
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 14:36
$oD = new DirectoryIterator ('./ton/dossier/');

$iCount = 0;
foreach ($oD as $element) {
    if (!$oD->isDot ())
        $iCount++;
}

$iCount devrait te retourner le nombre de fichier dans le dossier, si je ne me suis pas trompé.

http://www.ReFlectiv.Net
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
23 juil. 2008 à 15:22
Fatal error: Cannot instantiate non-existent class: directoryiterator
 PHP Version 4.3.10
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 15:47
Il te faut php 5.
Free le propose, tu doit juste créer un fichier .htacces et y ajouter une directive que tu trouvera sur google (free+htaccess+php5)
Sinon essaye de nommer tes fichiers .php5 ?

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
23 juil. 2008 à 16:38
Avec la fonction suivante, j'ai le nombre total de fichiers dans un dossier, mais ce que je voudrais c'est le nombre de fichiers commençant par AZETRPMON1000_

-----------------------------------------------------------------------------------------
$num_images = count_files("../../Images/500500/");
function count_files($dir)
{
$num = 0;
$dir_handle = opendir($dir);
 while($entry = readdir($dir_handle))
  if(is_file($dir.'/'.$entry))
    $num++;
   closedir($dir_handle);
    return $num;
}
echo $num_images;
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 16:58
$num_images = count_files("../../Images/500500/");
function count_files($dir)
{
$num = 0;
$dir_handle = opendir($dir);
 while($entry = readdir($dir_handle))
  if(is_file($dir.'/'.$entry) && substr ($entry, 0, 14) == 'AZETRPMON1000_')
    $num++;
   closedir($dir_handle);
    return $num;
}
echo $num_images;

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
23 juil. 2008 à 17:28
Super et pourquoi ça marche pas quand je remplace la valeur en dure par ma valeur en base.
Merci pour ta patience
-----------------------------------------------------------------
$num_images = count_files("../../Images/500500/");
function count_files($dir)
{
$num = 0;
$dir_handle = opendir($dir);
 while($entry = readdir($dir_handle))
  if(is_file($dir.'/'.$entry) && substr ($entry, 0, 13) == $val["Reference"])
    $num++;
   closedir($dir_handle);
    return $num;
}
echo "".$num_images."";
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 18:10
Parce que substr retourne la chaine de caractère indiquée en premier paramètre, à partir du second paramètre sur une longueur du troisieme parametre. En l'occurence, il prends la valeur $entry, de 0 sur une longueur de 13. Si $val['reference'] ne fait pas 13 de long, ca ne marchera pas forcément. Donc tu met :

substr ($entry, 0, strlen ($val["Reference"])) == $val["Reference"])

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
23 juil. 2008 à 21:47
Ca me retourne le nombre total de fichier du dossier :-(.
Je me tire les cheveux.
$num_images = count_files("../../Images/500500/");
function count_files($dir)
{
$num = 0;
$dir_handle = opendir($dir);
 while($entry = readdir($dir_handle))
  if(is_file($dir.'/'.$entry) && substr ($entry, 0, strlen ($val['Reference'])) == $val['Reference'])
    $num++;
   closedir($dir_handle);
    return $num;
}
echo "".$num_images."";
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
23 juil. 2008 à 23:54
$val['Reference'] n'a aucune valeur dans une fonction car sa portée n'est pas globale :

$num_images = count_files("../../Images/500500/", $val['Reference']);
function count_files($dir, $reference)
{
$num = 0;
$dir_handle = opendir($dir);
 while($entry = readdir($dir_handle))
  if(is_file($dir.'/'.$entry) && substr ($entry, 0, strlen ($reference)) == $reference)
    $num++;
   closedir($dir_handle);
    return $num;
}
echo "".$num_images."";

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 11:48
Le même code dans une autre page j'ai cette erreur :
Fatal error: Call to undefined function: count_files()
C'est incompréhenssible.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
24 juil. 2008 à 13:49
tu inclu le fichier contenant la fonction ?
Parce que apparement il n'accède pas à ce fichier ! :p

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 15:17
Non j'ai pas encore mis la function à part, elle est directement dans le code de la page.
J'ai pris exactement le code entre des balises <td> et dans l'autre page j'ai l'erreur.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
24 juil. 2008 à 15:29
fait voir ton code ?

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 15:36
                                        <td height="40" valign="middle" colspan="3">
                                         
                                            <?
           echo "../../absolut/Images/500500/
".$val['Reference'];
          $num_images = count_files("../../absolut/Images/500500/", $val['Reference']);
          function count_files($dir, $Reference)
          {
          $num = 0;
          $dir_handle = opendir($dir);
           while($entry = readdir($dir_handle))
            if(is_file($dir.'/'.$entry) && substr ($entry, 0, strlen ($Reference)) == $Reference)
           $num++;
          closedir($dir_handle);
          return $num;
          }
          echo "Il y a $num_images photo";
          If ($num_images > 1) { echo "s"; }
                                        echo " en cliquant l'agrandissement.
".
                                        </td>

Résultat :
../../absolut/Images/500500/
SAIFANFAN1000
Fatal error: Call to undefined function: count_files() in d:\
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 15:47
C'est simple je prend le code de la page qui ne fonctionne pas et je le remplace par celui dont la page fonction. Résultat aucun changement la page qui fonctionnait fonctionne toujours malgré le changement de code.
A ce coller une balle même s'il doit y avoir une explication.
0
codefalse Messages postés 1123 Date d'inscription mardi 8 janvier 2002 Statut Modérateur Dernière intervention 21 avril 2009 1
24 juil. 2008 à 15:53
essaye voir :

          function count_files($dir, $Reference)
          {
          $num = 0;
          $dir_handle = opendir($dir);
           while($entry = readdir($dir_handle))
            if(is_file($dir.'/'.$entry) && substr ($entry, 0, strlen ($Reference)) == $Reference)
           $num++;
          closedir($dir_handle);
          return $num;
          }
          $num_images = count_files("../../absolut/Images/500500/", $val['Reference']);

bien que je n'y croie pas.
Tu es sur que le répertoire est valide ?

http://www.ReFlectiv.Net
0
babatt92 Messages postés 33 Date d'inscription lundi 13 septembre 2004 Statut Membre Dernière intervention 10 juillet 2010
24 juil. 2008 à 16:05
Et si pourtant c'est ça. Faudra m'expliquer pourquoi?
0
Rejoignez-nous