Version complète: sur le forum Webmaster Hub : Afficher des images d'un répertoire
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
cccp
Bonjour,
j'ai trouvais un script et j'aimerrai le modifier un peut avec votre aide, SVP.
Comme ce script permet d'afficher une image prise de manière aléatoire dans un
répertoire, mais moi j'ai des fichiers .php dans le même répertoire et j'envie q'il prend en compte que des fichiers images.
Merci pour votre aide. rolleyes.gif
A+

CODE
<?php

// ------------------------------------------------------------------------- //
// Afficher une image aléatoire                                              //
// ------------------------------------------------------------------------- //
// Auteur: Gap <gap_AT_melo.com>                                                //
// Web:    http://www.scout.ch/gsfa                                          //
// ------------------------------------------------------------------------- //

/*
Ce script permet d'afficher une image prise de manière aléatoire dans un
répertoire.

Il ouvre le répertoire et compte le nombre de fichiers images correspondants aux
critères (type d'image, hauteur, largeur). Une de ces images est ensuite affichée.
Le répertoire peut contenir toutes sortes d'autres fichiers, seules les images
correspondantes seront prises en compte.
*/

$rep = "galeries/galerie_sajkaca/";     // Répertoire contenant les images

$filter[type] = 1;2;6;    // Format d'image. 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD,
                     //                 6 = BMP
$filter[height] = 1000; // Hauteur de l'image en pixels
$filter[width] = 1000; // Largeur de l'image en pixels

$i = 0; // Initialisation du compteur
$d = dir("$rep"); // Ouverture du répertoire

while($file=$d->read())
{
   // Empèche de prendre les entrées . et .. du répertoire
   if ($file != "." && $file != "..")
   {

       {
           // Remplissage du tableau des noms de fichier des images
           $table[$i] = $file;
           $i++; // Incrémentation du compteur d'images
       }
   }
}
$d->close(); // Fermeture du répertoire
srand((double)microtime()*1000000);

// Définition d'un nombre aléatoire dans la fourchette du nombre d'images
$nbr=rand(0,($i-1));

// Définition d'une variable contenant le chemin d'acces relatif à l'image  
// choisie par le nombre aléatoire dans le tableau
$display = $rep.$table[$nbr];
$info = getimagesize($display);

echo '<a href="galeries/galerie_3/"><img src="'.$display.'" border="0" '.$info[3].'></a>'; // Affichage de l'image

?>
sgaiotti
Bonjour

Ce qui est bizard, c'est que ton tableau $filter n'est pas utilisé dans la suite du script car c'est lui qui permet de ne prendre que les images et pas tes fichiers php

Voici un code qui le fait tres bien
CODE
# // Dossier des fonds depuis l'emplacement du script, sans / à la fin !
# $dossier= " Adresse-dossier dans lequel est mis les petits images";
# $gdossier= " Adresse-dossier dans lequel est mis les grands images ";
# $host = " Adresse-dossier dans lequel est mis le script, sans / à la fin !";
# // Extension des aperçus
# $extapp = "jpg";
#  
# // ----------------------
# // LISTAGE DES FONDS
# $dossier_open = opendir("$dossier");
# while ($fichier = readdir($dossier_open))
# {
# if (!strstr($fichier) && $fichier!="..")
# {
# $array_fichiers[] = "$fichier";
# $sec_fichier = explode(".", $fichier);
# $array_apercus[] = "$sec_fichier[0].$extapp";
# }
# }
# closedir($dossier_open);
#  
# //---------------------
# $gdossier_open = opendir("$gdossier");
# while ($fichier = readdir($gdossier_open))
# {
# if (!strstr($fichier) && $fichier!="..")
# {
# $array_fichiers[] = "$fichier";
# $sec_fichier = explode(".", $fichier);
# $array_apercus[] = "$sec_fichier[0].$extapp";
# }
# }
# closedir($gdossier_open);
#  
# // -------------------------------
# // CHOIX D'UN FOND
# // -------------------------------
# srand(date("d"));
# $nb = rand(0, count($array_fichiers)-1);
#  
#  
# ?><a href="<? echo "$host/$gdossier/$array_fichiers[$nb]"; ?>"
# target="_blank"><img src="<? echo "$host/$dossier/$array_apercus[$nb]"; ?> " whidth="170" height="115"
#  border="2" alt="Wallpaper du jour">
# </a>
# < ? echo ' <center>copyright daadi 2002 www.coolimages.fr.st'; ?>


Par contre, dans ce script, il s'agit d'une affichage par jour
il te suffit de modifier la variable srand

Il te suffit ensuite de tester que les 3 caracteres de droite sont égale à $extapp au moment du listage des fichiers
cccp
Salut,
En faite le script complet est comme ça:

CODE
<?php

// ------------------------------------------------------------------------- //
// Afficher une image aléatoire                                              //
// ------------------------------------------------------------------------- //
// Auteur: Gap <gap_AT_melo.com>                                                //
// Web:    http://www.scout.ch/gsfa                                          //
// ------------------------------------------------------------------------- //

/*
Ce script permet d'afficher une image prise de manière aléatoire dans un
répertoire.

Il ouvre le répertoire et compte le nombre de fichiers images correspondants aux
critères (type d'image, hauteur, largeur). Une de ces images est ensuite affichée.
Le répertoire peut contenir toutes sortes d'autres fichiers, seules les images
correspondantes seront prises en compte.
*/

$rep = "galeries/galerie_sajkaca/";     // Répertoire contenant les images

$filter[type] = 1;2;6;    // Format d'image. 1 = GIF, 2 = JPG, 3 = PNG, 5 = PSD,
                    //                 6 = BMP
$filter[height] = 1000; // Hauteur de l'image en pixels
$filter[width] = 1000; // Largeur de l'image en pixels

$i = 0; // Initialisation du compteur
$d = dir("$rep"); // Ouverture du répertoire

while($file=$d->read())
{
  // Empèche de prendre les entrées . et .. du répertoire
  if ($file != "." && $file != "..")
  {
$info = getimagesize($rep.$file);
       // Filtre les images qui ne correspondent pas aux critères
       if($info[2] == $filter[type] && $info[1] == $filter[height] &&
          $info[0] == $filter[width])
       {

      {
          // Remplissage du tableau des noms de fichier des images
          $table[$i] = $file;
          $i++; // Incrémentation du compteur d'images
      }
  }
}
$d->close(); // Fermeture du répertoire
srand((double)microtime()*1000000);

// Définition d'un nombre aléatoire dans la fourchette du nombre d'images
$nbr=rand(0,($i-1));

// Définition d'une variable contenant le chemin d'acces relatif à l'image  
// choisie par le nombre aléatoire dans le tableau
$display = $rep.$table[$nbr];
$info = getimagesize($display);

echo '<a href="galeries/galerie_3/"><img src="'.$display.'" border="0" '.$info[3].'></a>'; // Affichage de l'image

?>

J'ai juste supprimé ça:
CODE
$info = getimagesize($rep.$file);
       // Filtre les images qui ne correspondent pas aux critères
       if($info[2] == $filter[type] && $info[1] == $filter[height] &&
          $info[0] == $filter[width])
       {

Car je sais pas comment faire pour que il affiche les images en sa taille d'origine.
Si tu sais comment m'aider...ça serra simpa.
Merci encore
cccp
Et encore....
Cela peut être aussi possible: d'afficher les images d'origine en plus petit (sans crée a part des petits images) mais en gardant la hauteur proportionnelle à la largeur.
Merci
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.