Affichage aléatoire de 4 images sans doublon

Pouet24 Messages postés 25 Statut Membre -  
Pouet24 Messages postés 25 Statut Membre -
Bonsoir,

dans le cadre de la création d'un tirage de tarot, je dois

- faire un tirage de 5 images. (sur 22)
- les 4 premières doivent être différentes
- la 5ème peut être la même qu'une des 4 premières.

J'ai créé un bout de code qui ne fonctionne pas --> y a des doublons.

Je suis une vraie débutante.

Je vous donne le code ainsi que la page où il est actuellement à l'essai afin que vous voyez sous quelle forme je veux le placer.

<?php
				$totalimages=22;
				
				$nimages[1]="/images/01.gif";
				$nimages[2]="/images/02.gif";
				$nimages[3]="/images/03.gif";
				$nimages[4]="/images/04.gif";
				$nimages[5]="/images/05.gif";
				$nimages[6]="/images/06.gif";
				$nimages[7]="/images/07.gif";
				$nimages[8]="/images/08.gif";
				$nimages[9]="/images/09.gif";
				$nimages[10]="/images/10.gif";
				$nimages[11]="/images/11.gif";
				$nimages[12]="/images/12.gif";
				$nimages[13]="/images/13.gif";
				$nimages[14]="/images/14.gif";
				$nimages[15]="/images/15.gif";
				$nimages[16]="/images/16.gif";
				$nimages[17]="/images/17.gif";
				$nimages[18]="/images/18.gif";
				$nimages[19]="/images/19.gif";
				$nimages[20]="/images/20.gif";
				$nimages[21]="/images/21.gif";
				$nimages[22]="/images/22.gif";

				srand((double)microtime()*1000000);


				$affiche1=rand(1,$totalimages);
				$affiche2=rand(1,$totalimages);
				$affiche3=rand(1,$totalimages);
				$affiche4=rand(1,$totalimages);
				$affiche5=rand(1,$totalimages);
			?>

			<a href="#" onClick="a.src='<?echo $nimages[$affiche1];?>'">
			<img name="a" src="/images/des3.jpg" border="0">
			</a>

			<a href="#" onClick="b.src='<?echo $nimages[$affiche2-=$affiche1];?>'">
			<img name="b" src="/images/des3.jpg" border="0">
			</a>

			<a href="#" onClick="c.src='<?echo $nimages[$affiche3-=$affiche1&&$affiche2];?>'">
			<img name="c" src="/images/des3.jpg" border="0">
			</a>

			<a href="#" onClick="d.src='<?echo $nimages[$affiche4-=$affiche1&&$affiche2&&$affiche3];?>'">
			<img name="d" src="/images/des3.jpg" border="0">
			</a>

			<a href="#" onClick="e.src='<?echo $nimages[$affiche5];?>'">
			<img name="e" src="/images/des3.jpg" border="0">
			</a>


et la page http://astro-free.com/tarot.php

D'avance, un tout grand merci!
A voir également:

8 réponses

Homme Grenouille
 
Salut,

bein...ca va pas marcher comme ca.
Pourquoi ??
Tu recharges la page a chaque clique, alors comment peux tu savoir quelle carte á deja ete tirée. Exactement. Soit tu passes par l'adresse ou tu passe les données sous un formulaire.

Aprés, soit tu recharges la page avec "moins" de possiblilites pour les cartes oubien tu fais tourner ta boucle aussi longtemps que tu veux.

l' Homme grenouille
0
Pouet24 Messages postés 25 Statut Membre
 
Mm, merci pour cette réponse mais ça m'aide pô beaucoup...

Pourrais-tu m'en dire plus? un exemple ou euh... je sais pas... mais un peu plus :)
0
lefou
 
Pour les 4 premières :
list($affiche1, $affiche2, $affiche3, $affiche4) = array_slice(shuffle($nimages), 0, 4);
0
Pouet24 Messages postés 25 Statut Membre
 
Lefou,
je le place où ce morceau là?
je dois enlever quoi?

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Pouet24 Messages postés 25 Statut Membre
 
Navrée mais, j'm'en sors pas du tout du tout.
0
lefou
 
Comme ça
<?php

$nimages = array('/images/01.gif', '/images/02.gif', '/images/03.gif', 
                 '/images/04.gif', '/images/05.gif', '/images/06.gif', 
                 '/images/07.gif', '/images/08.gif', '/images/09.gif', 
                 '/images/10.gif', '/images/11.gif', '/images/12.gif', 
                 '/images/13.gif', '/images/14.gif', '/images/15.gif', 
                 '/images/16.gif', '/images/17.gif', '/images/18.gif', 
                 '/images/19.gif', '/images/20.gif', '/images/21.gif', 
                 '/images/22.gif');

shuffle($nimages); 
list($affiche1, $affiche2, $affiche3, $affiche4) = array_slice($nimages, 0, 4);
        
shuffle($nimages);
$affiche5 = $nimages[0];
?>

      <a href="#" onClick="a.src='<?php echo $affiche1; ?>'">
      <img name="a" src="/images/des3.jpg" border="0">
      </a>

      <a href="#" onClick="b.src='<?php echo $affiche2; ?>'">
      <img name="b" src="/images/des3.jpg" border="0">
      </a>

      <a href="#" onClick="c.src='<?php echo $affiche3; ?>'">
      <img name="c" src="/images/des3.jpg" border="0">
      </a>

      <a href="#" onClick="d.src='<?php echo $affiche4; ?>'">
      <img name="d" src="/images/des3.jpg" border="0">
      </a>

      <a href="#" onClick="e.src='<?php echo $affiche5; ?>'">
      <img name="e" src="/images/des3.jpg" border="0">
      </a>
0
Pouet24 Messages postés 25 Statut Membre
 
Merci Lefou!

Mm, dernière petite chose, est-ce que tu pourrais commenter le code? Histoire que je comprenne le pourquoi du comment? Rien d'urgent bien sûr :)
0
Pouet24 Messages postés 25 Statut Membre
 
Bon, je reviens à la charge.

Est-ce qu'il serait possible que la 5ème carte apparaisse directement après les 4 premiers cliks?

Donc 4 cliks sur les 4 premières cartes et hop, la 5ème apparait :$

Merciii
0