Afficher 5 image sur son index en provenance d'un dossier ..

fabien14
Invité n'ayant pas de compte PHPfrance

08 août 2006, 10:49

Bonjour

J'ai recuperer un Script qui me convient mais je voudrai legerement le modifié et je ni arrive pas ....

Code : Tout sélectionner

$chocolat2 = $e['id']; $folder=opendir("images/$chocolat2/mini"); while ($file = readdir($folder)) $names[count($names)] = $file; closedir($folder); //sort file names in array sort($names); //remove any non-images from array $tempvar=0; for ($i=0;$names[$i];$i++){ $ext=strtolower(substr($names[$i],-4)); if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){$names1[$tempvar]=$names[$i];$tempvar++;} } //random srand ((double) microtime() * 10000000); $rand_keys = array_rand ($names1, 2); //random image from array $slika=$names1[$rand_keys[0]]; //image dimensions $dimensions = GetImageSize($slika); if (isset($HTTP_GET_VARS["pic"])){header ("Location: $slika");} else {echo "<img src=\"images/$gpays2/mini/$slika\" $dimensions[3]>";}
Je voudrai que ce code m'affiche sur mon index 5 images de mon dossier images/$chocolat2/mini (chocolat2 est recuperer ceci marche trés bien....)

Mais il n'affiche qu'une photos du repertoire... et je voudrai que quand ya moins de 5 photos sa naffiche que les photos qu'il y a (qu'il y est pas un message d'erreur comme koi il a pas les 5 photos) et aussi je voudrai mettre une condition que si le dossier existe pas alors ne pas afficher les photos ....

Merci de votre aide

fabien14
Invité n'ayant pas de compte PHPfrance

08 août 2006, 11:15

Re coucou en faite j'ai trouver 1 autre code qui est bien mieux mais qui je narrive pas a faire certaine modif ...

Code : Tout sélectionner

<? $chocolat2 = $e['id']; $dir="images/$chocolat2/mini"; $dossier=opendir($dir); while($fichier=readdir($dossier)){ $berk=array('.', '..'); if(!in_array($fichier,$berk)){ $lien=$dir.'/'.$fichier; print '<div style="float:right;height:50px; ">'; if(file_exists($lien)){ print '<img src="'.$lien.'" width="50" height="30" alt="" /><p>&nbsp;</p>'; } print '</div>'; } } ?>
Je voudrai qu'il me limite a 5 le nombre d'affiche des images...

et aussi dans le dossier il y a des thumb et j'ai un index.html, comment lui dire de prendre et d'afficher que les format d'image (jpg, jpeg, png, gif) ?

Merci pour votre aide

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

08 août 2006, 12:02

Pour limiter à 5 images l'affichage, il te suffit d'utiliser un compteur. Tu l'initialise à 0 puis, à chaque fois que tu affiches une image dans ta boucle, tu l'incrémente. S'il arrive à 5 dans ta boucle, il te suffit de sortir de la boucle en utilisant la commande break :
$compteur = 0;
while (...) {

  if ($compteur >= 5) // si le compteur atteind ou dépasse 5
    break; // interrompt la boucle

  ...

  echo '<img ... >';
  $compteur++; // incrémente le compteur

}
Pour savoir si un fichier est une image, tu peux vérifier son type MIME, ou bien simplement controler son extension comme cela est fait dans le premier code que tu donnes (même si c'est pas très joliment fait) :
$ext=strtolower(substr($names[$i],-4));  // récupère les 4 derniers caractères du nom du fichier
if ($ext==".jpg"||$ext==".gif"||$ext=="jpeg"||$ext==".png"){
 ... // si le fichier est une image, affichage et incrémentation du compteur
}

fabien14
Invité n'ayant pas de compte PHPfrance

08 août 2006, 12:40

Merci de t'es reponses

J'ai reussi a mettre le compteur mais je n'arrive pas a lui faire afficher que les images ....

Code : Tout sélectionner

<? $chocolat2 = $e['id']; $compteur = 0; $dir="images/$chocolat2/mini"; $dossier=opendir($dir); while($fichier=readdir($dossier)){ if ($compteur >= 5) break; $berk=array('.', '..'); if(!in_array($fichier,$berk)){ $lien=$dir.'/'.$fichier; print '<div style="float:right;height:50px; ">'; if(file_exists($lien)){ print '<a href="index.php?dest=gal&chocolat='.$chocolat2.'"><img src="'.$lien.'" width="70" height="50" title="Accéder à la galerie d\'images" alt="Accéder à la galerie d\'images" /></a>'; print '<p>&nbsp;</p>'; $compteur++; } print '</div>'; } } ?>
Merci pour votre aide.

fabien14
Invité n'ayant pas de compte PHPfrance

08 août 2006, 13:18

Toujours pas reussi ...

J'ai une petite croix de faite par mes 2 fichiers qui sont Thumbs.db et index.html ... je n'arrive pas a lui dire de pas prendre c'est fichier ....