Images aléatoires, mais pas comme d'hab

Eléphant du PHP | 164 Messages

04 févr. 2010, 00:14

Bonjour,

Je vous explique rapidement le truc à réaliser :
Il y a un concours, avec 8 partenaires par exemple. Je place les logos dans un repertoire "partenaires", il y a donc 8 logos. Je voudrais que mes 8 logos s'affichent en bas de ma page, mais dans un ordre aléatoire à chaque rechargement de page.

Comment je peux faire ceci ? Je fais faire afficher une image aléaoire ... mais une seule ... là il faut les 8, pas de doublon ... et juste en cherchant dans un repertoire (pas de sql en somme).

Merci

Eléphanteau du PHP | 10 Messages

04 févr. 2010, 00:20

Bonsoir,

L'idée serait de remplir un tableau avec les noms de tes images et de faire un shuffle (http://fr.php.net/shuffle) sur le tableau.

Donc, pour résumer :
- parcourir ton répertoire d'images et placer les noms de tes images dans un tableau
- exécuter un shuffle sur ton tableau
- afficher tes images


Bonne soirée.

Eléphant du PHP | 109 Messages

04 févr. 2010, 18:28

Bonjour à toi. :)

Une manière de faire serait de recourir à un tableau, ensuite de générer un nombre entre 0 et 7.
Chaque nombre représenterai une ligne du tableau. Une fois le nombre aléatoire sélectionné, il ne te reste plus qu'a appeler la ligne correspondant à ce numéro.

Je t'ai concocté un petit script pour t'aidé ;) :
<?php
$liste = array("logo_0.png", "logo_1.png", "logo_2.png", "logo_3.png", "logo_4.png", "logo_5.php", "logo_6.jpg", "logo_7.jpg");  //Tableau
$hasard = mt_rand(0, 7); //Nombre aléatoire
?>
<img src="logo_<?php echo $hasard; ?>.png">


Voila, j'espère t'avoir aidé :)
ANSI <font> <font> <font> <li> <p> <title> Mar I/O .NET

Eléphant du PHP | 199 Messages

04 févr. 2010, 18:31

Bonjour à toi. :)

Une manière de faire serait de recourir à un tableau, ensuite de générer un nombre entre 0 et 7.
Chaque nombre représenterai une ligne du tableau. Une fois le nombre aléatoire sélectionné, il ne te reste plus qu'a appeler la ligne correspondant à ce numéro.
Le problème c'est que tu sélectionnes qu'une image aléatoirement.
Lui il veut que les 8 images soient mises de facon aléatoire.
Pour moi la première solution proposée est la meilleure.

Eléphant du PHP | 168 Messages

04 févr. 2010, 18:39

le code de SinBert pourrait très bien aller mais il faudrait faire une boucle.

Eléphant du PHP | 199 Messages

04 févr. 2010, 18:54

le code de SinBert pourrait très bien aller mais il faudrait faire une boucle.
Il y aurait le risque que deux images soit afficher deux fois.

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

04 févr. 2010, 21:28

Il y aurait le risque que deux images soit afficher deux fois.
Pas nécessairement... on peut utiliser array_pop (ou autre) pour retirer les éléments du tableau au fur et à mesure qu'on les affiche...

M'enfin pour ma part, je pense comme toi que la solution de shizu est plus élégante :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 164 Messages

06 févr. 2010, 02:45

C'est bon ça marche.
$mydir = 'partenaires'; 
 if ($dir = @opendir($mydir)) 
 {
    while (($file = readdir($dir)) !== false) 
    {
      if($file != ".." && $file != ".")
       {
         $filelist[] = $file;
       }
    } 
closedir($dir);
 }
//Test a faire pour ne pas avoir d'erreur si il n'y a pas d'image dans le dossier
 if(sizeof($filelist) != '0') {
  sort($filelist);
 }
shuffle($filelist);
foreach ($filelist as $logo) {
    echo "<img src='partenaires/$logo' border=0> ";
}
Merci à vous tous pour vos réponses :o)