[Php] - Question simple...

Résolu
Salutations,

J'ai juste une question simple.
Je cherche à compter, QUELQUE SOIT LA TAILLE DE L'EXTENSION (Majuscules comme minuscules), les fichiers dépandant d'une certaine extension...

En gros, j'ai dans un dossier des ".JPG" et des ".jpg", et je cherche à comptabiliser l'ensemble...
Pour l'instant, j'en suis la :

"(...)

<?
$rep = '../pict/photos';
$vig = '../pict/photos/thumbs';
$ext = 'jpg';
$extup = 'JPG';
$ipl = '4';
$wid = '120';
$widtab = '96%';
$bor = '0';
$cpd = '0';
$cpd = '0';
$cls = 'art';

//Donne l'extension d'un fichier
function extension($fichier)
{
ereg("\.([^\.]*$)", $fichier, $beuha);
return $beuha[1];
}

$lstrep = glob($rep.'/*.'.$ext);
$lstrepup = glob($rep.'/*.'.$extup);
$lstrep2 = current($lstrep);
// $lstrep3 = strtolower($lstrep); // on met en minuscule
$comptrep = count($lstrep);
$comptrepup = count($lstrepup);

$lstvig = glob($vig.'/*.'.$ext);
$lstvigup = glob($vig.'/*.'.$extup);
$lstvig2 = current($lstvig);
$comptvig = count($lstvig);
$comptvigup = count($lstvigup);

// extension du fichier
$xploderep = explode('.',$lstrep2);
$extensionrep = $xploderep[sizeof($xploderep)-1]; // dernier element
//
echo 'Extension du fichier final : '.$extensionrep.'<br />';

// extension du fichier
$xplodevig = explode('.',$lstvig2);
$extensionvig = $xplodevig[sizeof($xplodevig)-1]; // dernier element
// $extensionvig = strtolower($extensionvig); // on met en minuscule
echo 'Extension du fichier vignette : '.$extensionvig.'<br />';

echo '<div align="center">';
echo '<table width="'.$widtab.'" border="'.$bor.'" cellpadding="'.$cpd.'" cellspacing="'.$csc.'"><tr>';
echo '<td align="center">Nombre de photos : '.$comptrep.'<br />Nombre de photos (Maj.) : '.$comptrepup.'</td>';
echo '<td align="center">Nombre de miniatures : '.$comptvig.'<br />Nombre de miniatures (Maj.) : '.$comptvigup.'</td>';
echo '</tr></table>';
(...)"

Mais je pense que mon code est un poil fastidieux...

A vous lire,

5 réponses

  1. Esc9G : Oui, aussi, mais peu importe, une fois que je saurais faire pour 2, 3 ça ne sera pas un pb... ;-)

    khalilkhalil : Heu, je n'ai rien compris... Speak English ?
    1. Bonjour,

      Tu pourrais essayer quelque chose comme ça.
      L'avantage, c'est que tu définis sans problème autant d'extensions / de répertoires que tu veux, sans devoir modifier tout le code.

      <?php
      
          //Donne l'extension d'un fichier
          function extension($fichier)
          {
              ereg("\.([^\.]*$)", $fichier, $beuha);
              return strtolower($beuha[1]);
          } 
          
          function getTypeFromFichier($fichier)
          {
              $type = "";
              $ext = extension($fichier);
              
              switch ($ext)
              {
                  case "bmp":
                  case "gif":
                  case "jpg":
                  case "png":
                      $type = $ext;
                      break;
                  case "jpeg":
                      $type = "jpg";
                      break;
                  default:
                      $type = "autre";
                      break;
              }
              
              return $type;
          }
          
          // On initialise le tableau qui contient les données
          $repertoiresAChercher = array();
          $repertoiresAChercher[] = array("chemin" => '../pict/photos', "nom" => 'photos', "detail" => array());
          $repertoiresAChercher[] = array("chemin" => '../pict/photos/thumbs', "nom" => 'vignettes', "detail" => array());
          
          // On boucle sur ce tableau
          foreach($repertoiresAChercher as $cle => $valeur)
          {
              // Pour chaque chemin, on parcourt tous les fichiers
              $rep = opendir($valeur['chemin']);
              while (false !== ($fichier = readdir($rep)))
              {
                  if($fichier != '..' && $fichier !='.' && $fichier != '' && !is_dir($rep."/".$fichier))
                  {
                      $type = getTypeFromFichier($fichier);
                      if (!isset($repertoiresAChercher[$cle]['detail'][$type]))
                          $repertoiresAChercher[$cle]['detail'][$type] = 0;
                      $repertoiresAChercher[$cle]['detail'][$type]++;
                  }
              }
          }
          
          // $repertoiresAChercher contient maintenant pour chaque répertoire à chercher, son chemin, son nom, et un tableau donnant pour chaque type de fichier le nombre existant.
          // On le parcourt à nouveau pour l'affichage.
          foreach($repertoiresAChercher as $rep)
          {
              echo "<div>Nombre de ".$rep['nom']." : <blockquote>";
              foreach($rep["detail"] as $cle => $valeur)
                  echo "$cle : $valeur fichiers<br />";
              echo "</blockquote></div>";
          }
      ?>


      Xavier

      PS : j'ai codé ça à l'instant, sans tester. Il peut y avoir des erreurs de syntaxe, je te laisse les résoudre. Tu peux toujours me poser des questions s'il le faut, mais je ne répondrai sans doute pas avant demain.
      1. pour vous il faut travailler c tres simple moi 2 année informatique et je sais comment fait cet algorithme allez fait le principe apres .....................................................