tri sur un affichage d'images

catcom951
Invité n'ayant pas de compte PHPfrance

08 juil. 2011, 10:43

Bonjour
je souhaiterai faire une sélection dans un fichier d'images (17) ou apparaissent les vignettes (th) et les images en tailles réelles (ph).

Pour un besoin particulier je souhaite afficher 4 vignettes de ce même fichier sur une page, or je n'arrive pas à faire la sélection , toutes les images s'affichent
voici mon code

 <?php
// url du fichier qui contient les images
$urlphoto = "http://monsite.com/galerie/photos/17/";

// nom du répertoire qui contient les images
$nomRepertoire = "galerie/photos/17/";
$Fichier = 'th_';

if (is_dir($nomRepertoire))
   {
   $dossier = opendir($nomRepertoire);
   while ($Fichier = readdir($dossier))
       {
      if ($Fichier != ('th_')  AND (stristr($Fichier,'.gif') OR stristr($Fichier,'.jpg') OR stristr($Fichier,'.png') OR stristr($Fichier,'.bmp')))
	  function GestionExceptions ($exception)
	  {
	  GestionErreurs (E_USER_Erro
        {
        // Hauteur de toutes les images
        $h_vign = "120";
        $taille = getimagesize($nomRepertoire."/".$Fichier);
        $reduc  = floor(($h_vign*100)/($taille[1]));
        $l_vign = floor(($taille[0]*$reduc)/100);
      
          echo '<a target="_blank" href="', $urlphoto, '/',$Fichier, '">';
          echo '<img src="', $urlphoto, '/',$Fichier, '" ';
          echo "width='$l_vign' height='$h_vign'>";
          echo "</a>&nbsp;";
		  
          }
        }    
   closedir($dossier);
   }else{
   echo' Le répertoire spécifié n\'existe pas';
   }
?>
je vous remercie de bien vouloir m'aider

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 juil. 2011, 11:25

Si ton code affiche toutes les images du répertoire, c'est parce qu'il n'y a rien pour lui dire quand s'arrêter :)

Ce qu'il te faut c'est ajouter un compteur que tu vas incrémenter dans ta boucle while (à chaque fois qu'il affiche une image) et lorsque tu en auras affiché le nombre voulu, tu pourras indiquer à php d'arrêter l'exécution du while.

Pour cela tu peux soit utiliser l'instruction "break" qui permet d’interrompre une boucle (if ($compteur >= 4) break; ), ou en ajoutant un critère dans la condition de ta boucle while ( while ($Fichier = readdir($dossier) && $compteur < 4) )
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

08 juil. 2011, 14:28

merci beaucoup, j'ai trouvé ce que je cherchais

Invité
Invité n'ayant pas de compte PHPfrance

08 juil. 2011, 14:44

voici ce que j'ai trouvé AND (substr($Fichier,0,3)=='ph_'

en revanche mes photos sont collées comment puis je crée un espace entre chaque voir mettre un trait html ?
Merci encore de vos réponses
Très bon week end et encore merci