Page 1 sur 1

Affichage aléatoire d'une série d'image

Posté : 30 oct. 2009, 11:09
par l.dardanelli
Bonjour à tous,
J'ai trouvé dans la partie contribution du forum, un script permettant l'affichage aléatoire d'une image.
<?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&#91;&#93; = $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&#91;$random_img&#93;);
       
        //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&#91;0&#93; > $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&#91;0&#93;/$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&#91;1&#93;/$theight);
                }
        else
                {
                        //Sinon on garde la taille originale
                        $width = $size&#91;0&#93;; $height = $size&#91;1&#93;;
                }
        //On affiche l'image aléatoire (en respectant les standards ! <img src="./images/smilies/icon_smile.gif" alt=":)" title="Smile" /> )
        echo "<a href=\"".$chem_img."/".$listef&#91;$random_img&#93;."\" onclick=\"window.open(this.href,'_blank');return false;\"><img style=\"border: one; width: ".$width."px; height: ".$height."px\" src=\"".$chem_img."/".$listef&#91;$random_img&#93;."\" alt=\"".$listef&#91;$random_img&#93;."\" /></>";
        //On ferme le dossier
        closedir($handle);
?>
Ce que je souhaiterais, c'est afficher 3 images de façon aléatoire. Apparemment il faudrait faire une boucle et un test pour vérifier qu'une image ne s'affiche pas 2 fois...

Est-ce que quelqu'un pourrait m'aider?

Merci d'avance
Laurent

Re: Affichage aléatoire d'une série d'image

Posté : 30 oct. 2009, 17:17
par jojolapine
Essaye plutôt de faire un shuffle() sur ton tableau d'images, ensuite, tu prends les trois premières et le tour est joué ;)

Re: Affichage aléatoire d'une série d'image

Posté : 04 nov. 2009, 01:33
par l.dardanelli1
Bonsoir,
Merci pour ces éléments, j'ai finalement réussi à faire cet affichage aléatoire...
Maintenant, la question que je me pose concerne les liens sur les images. Je ne souhaite pas que les liens pointent vers mes images mais vers différentes pages de mon site, chaque lien étant bien sur fonction de l'image. Y a t'il un moyen de paramétrer cela dans un fichier .txt placé dans le répertoire des images (je parle de la correspondance image/lien)?
Puis de faire référence à ce fichier .txt dans mon script?

Merci d'avance
Laurent

Re: Affichage aléatoire d'une série d'image

Posté : 04 nov. 2009, 03:58
par niuxe
Hello,

Bien vu Jojolapine. Arf, j'aurai fait un array_rand() :q

Pour rester dans l'idée de jojolapine et te donner un bout de piste, tu vas faire un tableau à deux dimensions :
$mes_images = array(
	array(
		"0" => "image.jpg",
		"1" => "www.liens.com"
	),
	array(
		"0" => "image2.jpg",
		"1" =>"www.liens2.com"
	),
	array(
		"0" => "image3.jpg",
		"1" => "www.liens3.com"
	),
	array(
		"0" => "image4.jpg",
		"1" => "www.liens4.com"
	),
	// etc.
);
shuffle($mes_images);

for($i = 0 ; $i < 3 ; $i++){
	echo $mes_images[$i][0]."<br />";
	echo $mes_images[$i][1]."<hr />";
}
code fait de tête. Je peux m'être trompé.

Bon code à toi

Re: RESOLU : Affichage aléatoire d'une série d'image

Posté : 05 nov. 2009, 02:07
par l.dardanelli
Impeccable, merci pour votre aide
Laurent