[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 ?
    0
    1. Aucune idée ?

      A vous lire,

      MaT.
      0
      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.
        0
        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 .....................................................
          -3