[Qst] - Simple décompte de fichiers...

Eléphant du PHP | 103 Messages

04 févr. 2009, 01:59

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 :

Code : Tout sélectionner

<? $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 :&nbsp;'.$comptrep.'<br />Nombre de photos (Maj.) :&nbsp;'.$comptrepup.'</td>'; echo '<td align="center">Nombre de miniatures :&nbsp;'.$comptvig.'<br />Nombre de miniatures (Maj.) :&nbsp;'.$comptvigup.'</td>'; echo '</tr></table>';
Mais je pense que mon code est un poil fastidieux...

A vous lire,

ViPHP
ViPHP | 1380 Messages

04 févr. 2009, 10:06

Tout d'abord, l'emploi de la fonction ereg() n'est plus recommandé. Fonction lente, d'un autre âge et quelque-peu poussiéreuse! Je pense qu'elle ne sera d'ailleurs plus reprise dans PHP6. Quant à la fonction glob(), je n'ai aucune idée sur sa vitesse mais elle ne me semble pas fort usitée.

Ensuite tu pourrais faire le tout en plus conçis, en utilisant un code du genre:
$dir = '/vers/ton/repertoire/';

$listeFichiers = scanDir($dir);
$extensionJpg = 0;

foreach ($listeFichiers as $fichier) {

	/*	On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */
	if (is_file($dir . $fichier) && preg_match('#[^·]\.jpg$#i', $fichier)) {
		$extensionJpg++;
	}

}

echo $extensionJpg;
ripat

Eléphant du PHP | 103 Messages

04 févr. 2009, 14:22

(...)
echo $extensionJpg;[/php]
Merci... J'ai planché sur ton code.

Maintenant, j'en suis la, mais j'ai d'autres pbs.
Déjà, que penses tu de mon code, a ce stade ?

Code : Tout sélectionner

(...) <table width="660" border="1" cellspacing="0" cellpadding="0"> <tr> <th> <? $rep = '../pict/photos/'; $backuprep = '../admin/move/photos/'; $rep1 = substr_replace($rep, 0, -1); $vig = '../pict/photos/thumbs/'; $backupvig = '../admin/move/thumbs/'; $vig1 = substr_replace($vig, 0, -1); $ext = 'jpg'; $ipl = '4'; $wid = '120'; $widtab = '96%'; $bor = '0'; $cpd = '0'; $cpd = '0'; $cls = 'art'; // $xplodevig = explode('.',$lstvig2); $listerep = scanDir($rep); $extensionrep = 0; foreach ($listerep as $fichrep) { /* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */ if (is_file($rep . $fichrep) && preg_match('#[^·]\.jpg$#i', $fichrep)) { $extensionrep++; } } $listevig = scanDir($vig); $extensionvig = 0; foreach ($listevig as $fichvig) { /* On ne retient que les fichiers && ceux dont l'extention est jpg ou JPG */ if (is_file($vig . $fichvig) && preg_match('#[^·]\.jpg$#i', $fichvig)) { $extensionvig++; } } echo '<div align="center">'; echo '<table width="'.$widtab.'" border="'.$bor.'" cellpadding="'.$cpd.'" cellspacing="'.$csc.'"><tr>'; echo '<td align="center">Nombre de photos ".jpg" :&nbsp;'.$extensionrep.'</td>'; echo '<td align="center">Nombre de miniatures ".jpg" :&nbsp;'.$extensionvig.'</td>'; echo '</tr></table><br />'; echo '<table width="'.$widtab.'" border="1" cellpadding="'.$cpd.'" cellspacing="'.$csc.'"><tr>'; $compt=0; $dp = opendir($vig); while($entree = readdir($dp)){ if (preg_match('#[^·]\.jpg$#i', $entree)) { $class = substr($entree, -7, -4); $rest = substr($entree, 0, -8); // Definition de la version haute def. de l'image $entree1 = substr_replace($entree, '', 0, 4); // EXIF ini_set('exif.encode_unicode', 'UTF-8'); $exif = exif_read_data($rep.$entree1, 0, true); $date0 = $exif['EXIF']['DateTimeOriginal']; $date1 = substr($date0, 0, 10); //$date2 = str_replace(":", "/", $date1); $date2 = explode(":", $date1); if(is_file("$vig/$entree") && preg_match('#[^·]\.jpg$#i', $fichvig)){ if($compt%$ipl == 0){ echo '</tr><tr>'; } echo '<td align="center">'; echo "<a href=# onClick="window.open('".$rep.$entree1."','_blank','toolbar=0, location=0, directories=0, status=0, scrollbars=1, resizable=1, copyhistory=0, menuBar=0, width=800, height=600');return(false)">"; echo '<img border=0 width='.$wid.' src="'.$vig.$entree.'"></a><br /><font size="1">'; echo '&nbsp;'.$exif['FILE']['FileName'].'<br>'; // echo '&nbsp;'.$exif['IFD0']['DateTime'].'<br>'; echo '- '.$date2[2].'/'.$date2[1].'/'.$date2[0].' -<br>'; // echo ''.$exif['EXIF']['DateTimeOriginal'].'<br>'; echo ''.$exif['IFD0']['Model'].'<br>'; echo 'Ouverture : '.$exif['COMPUTED']['ApertureFNumber'].'<br>'; echo 'Exposition : '.$exif['EXIF']['ExposureTime'].'<br>'; echo 'ISO : '.$exif['EXIF']['ISOSpeedRatings'].'<br><br><br>'; // echo '&nbsp;'.$exif['EXIF']['Flash'].'<br>'; // echo '&nbsp;'.$exif['COMPUTED']['Copyright.Photographer'].'<br>'; // echo '&nbsp;'.$exif['COMPUTED']['Copyright.Editor'].'<br>'; // echo '&nbsp;'.$exif['COMPUTED']['Copyright'].'<br>'; // echo '&nbsp;'.$exif['IFD0']['Copyright'].'<br>'; echo '</font><br /><FORM name="Suppr"><input type"button" name="bouton" value="Supprimer" onclick="'; rename($rep.$entree1, $backuprep.$entree1); rename($vig.$entree1, $backupvig.$entree1); echo '"></FORM> </td>'; $compt++; } } } echo '</tr></table>'; echo '</div>'; ?> </th> </tr> </table> (...)
J'ai un pb sur la suppression des images (enfin déplacements) :
(...)
	echo '</font><br /><FORM name="Suppr"><input type"button" name="bouton" value="Supprimer" onclick="';
	rename($rep.$entree1, $backuprep.$entree1);
	rename($vig.$entree1, $backupvig.$entree1);
	echo '"></FORM> </td>';

(...)
A vous lire,

Edit : J'ai mis à jour ici même :
:arrow: http://www.phpfrance.com/forums/voir_sujet-246064.php