Affiche plusieux Images aléatoire dans un dossier site web

Fermé
jeremyguyot Messages postés 58 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 5 juillet 2016 - Modifié par jordane45 le 26/02/2016 à 09:35
jeremyguyot Messages postés 58 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 5 juillet 2016 - 26 févr. 2016 à 18:11
Bonjour j'ai trouver un script sur internet qui me permette d'afficher une image aléatoire de mon répértoires upload ce pendans je veux qu'il en affiche une autre a coté comme ça sa en faira 2 le code que j'ai est celuis-ci :


Image aléatoire
<?php
########################################
#
# Affichage image aléatoire //manucci.info
#
########################################

//On indique le dossier images
$chem_img = "./images";
//On ouvre le dossier images
$handle = opendir($chem_img);

//On parcoure chaque élément du dossier
while ($file = readdir($handle))
{
//Si les fichiers sont des images
if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file))
{
$listef[] = $file;
}
}

$random_img = rand(0, count($listef)-1); //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées.

//On calcule la largeur et la hauteur de l'image aléatoire
$size = getimagesize($chem_img."/".$listef[$random_img]);

//Largeur maximale de l'image pour la création des miniatures
$largeur_maxi = 180;
//Si la largeur dépasse la limite autorisée...
if ($size[0] > $largeur_maxi)
{
//...la nouvelle largeur est égale à la limite à ne pas dépasser
$width = $largeur_maxi;
//La largeur d'origine divisée par la largeur limitée (on obtient un chiffre qui sert à faire la même proportion pour la hauteur)
$theight = ($size[0]/$largeur_maxi);
//La hauteur originale est divisée par le chiffre obtenu précédemment afin que l'image conserve les mêmes proportions que l'originale (mais en mode vignette)
$height = ($size[1]/$theight);
}
else
{
//Sinon on garde la taille originale
$width = $size[0]; $height = $size[1];
}
//On affiche l'image aléatoire (en respectant les standards ! :) )
echo "<a href=\"".$chem_img."/".$listef[$random_img]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" /></a>";
//On ferme le dossier
closedir($handle);
?>

voila si vous pouvez m'aider c'est pour mon site http://wamiz.free.fr/uploads.php merci

EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI

Merci d'y penser dans tes prochains messages.
A voir également:

3 réponses

jordane45 Messages postés 38139 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 20 avril 2024 4 649
Modifié par jordane45 le 26/02/2016 à 10:03
Bonjour,

Voilou (codé un peu à l'arrache..mais ça fonctionne ^^ )


J'ai découpé en fonctions histoire que ça soit plus facile à utiliser.

Les fonctions :
<?php

function createLink($chem_img,$listef,$random_img,$width,$height){
return "<a href='".$chem_img."/".$listef[$random_img]."' 
          onclick='window.open(this.href,'_blank');return false;'>
     <img style='border: none; width: ".$width."px; height: ".$height."px' 
          src='".$chem_img."/".$listef[$random_img]."' 
          alt='".$listef[$random_img]."'></img>
    </a>";
}

function getImgFromDir($chem_img="./images"){
 //On ouvre le dossier images
  $handle = opendir($chem_img);

  //On parcoure chaque élément du dossier
  while ($file = readdir($handle)){
   //Si les fichiers sont des images
   if(preg_match ("!(\.jpg|\.jpeg|\.gif|\.bmp|\.png)$!i", $file)){
    $listeImg[] = $file;
   }
  }
  //On ferme le dossier
  closedir($handle);
 return $listeImg;
}



function getImgAlea($chem_img,$listef){
  //permet de prendre une image totalement au hasard (RANDom) parmi toutes les images trouvées.
  $random_img = rand(0, count($listef)-1); 
 
 //On calcule la largeur et la hauteur de l'image aléatoire
 if(file_exists($chem_img."/".$listef[$random_img])){
   $size = getimagesize($chem_img."/".$listef[$random_img]);
  }else{
  echo "Fichier introuvable : ".$chem_img."/".$listef[$random_img];
  return -1;
 }
 //Largeur maximale de l'image pour la création des miniatures
 $largeur_maxi = 180;
 //Si la largeur dépasse la limite autorisée...
 if ($size[0] > $largeur_maxi){
   //...la nouvelle largeur est égale à la limite à ne pas dépasser
   $width = $largeur_maxi;
   //La largeur d'origine divisée par la largeur limitée (on obtient un chiffre qui sert à faire la même proportion pour la hauteur)
   $theight = ($size[0]/$largeur_maxi);
   //La hauteur originale est divisée par le chiffre obtenu précédemment afin que l'image conserve les mêmes proportions que l'originale (mais en mode vignette)
   $height = ($size[1]/$theight);
 } else {
   //Sinon on garde la taille originale
   $width = $size[0]; $height = $size[1];
 }
 
 $result = array();
 $result['random_img'] = $random_img;
 $result['size'] = $size;
 $result['width'] = $width;
 $result['height'] = $height;
 
 return $result;
}

 

?>


Et donc.. pour utiliser les fonctions, il suffit d'utiliser :
//On récupère la liste des fichiers images du répertoire
$listef = getImgFromDir("./images"); 
$img1 = getImgAlea("./images",$listef);
$img2 = getImgAlea("./images",$listef);
while ($img1['random_img'] == $img2['random_img']){//pour éviter que la même image apparaisse deux fois...
 $img2 = getImgAlea("./images",$listef);
}
//On affiche l'image aléatoire (en respectant les standards ! :) )
if($img1){
  echo createLink("./images",$listef,$img1['random_img'],$img1['width'],$img1['height']);
}
if($img2){
  echo createLink("./images",$listef,$img2['random_img'],$img2['width'],$img2['height']);
}



Cordialement, 
Jordane                                                                 
0
jeremyguyot Messages postés 58 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 5 juillet 2016
26 févr. 2016 à 18:00
Salut le code que tu mla donné ne fonctionne pas enfaite je veux que a coté de l'image aléatoire il y a une déxiéme qui s'affiche si je mais deux fois le script l'image s'affiche en dessous
0
jeremyguyot Messages postés 58 Date d'inscription dimanche 15 novembre 2009 Statut Membre Dernière intervention 5 juillet 2016
26 févr. 2016 à 18:11
J'ai réussi a les placer grace au css mais je veut que la taille style: "width="200" height="100"

comment le placer ici //On affiche l'image aléatoire (en respectant les standards ! :) )
echo "<a href=\"".$chem_img."/".$listef[$random_img]."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: none; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef[$random_img]."\" alt=\"".$listef[$random_img]."\" /></a>";


merci
0