problème de doublons avec images aléatoires

Totoffe
Invité n'ayant pas de compte PHPfrance

26 nov. 2009, 14:55

Bonjour,

Voici mon petit soucis, j'ai créé un code me permettant d'afficher des images aléatoires (51 exactement), le problème, c'est que j'ai des doublons, ce que je voudrai absolument éviter.

Voici mon code :
<?php
	session_start();
	if (isset($_GET['reset']))
	{
		$cpt = 1;
		echo '<script type="text/javascript">window.setTimeout("location=(\'index.php\');",0);</script>';
	}
	elseif (isset($_SESSION['cpt']))
		$cpt = $_SESSION['cpt'] + 1;
	else
		$cpt = 1;
		$_SESSION['cpt'] = $cpt;
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="en">
	<head>
		<?php
			$num = 50;
			if ($cpt <= $num)
			echo '<script type="text/javascript">window.setTimeout("window.location.reload();",200);</script>';
		?>
	</head>
	<body>
		<?php		
			// CHOIX DE L'IMAGE ALÉATOIRE
				$root = "data/";
				$file = glob("$root/*.jpg", GLOB_BRACE);
				$fi = array_rand($file);
				echo utf8_encode("<a href=''><img src=\"$file[$fi]\" /></a>");
Comment faire pour que chaque image soit unique ?
J'ai pensé à écrire chaque nom dans un fichier txt lors de son affichage, puis à comparer l'image aléatoire avec la liste, mais c'est super lourd comme méthode, n'y a t il pas plus simple ? (Idem, si l'on peut remplacer le JS par du PHP pour les 51 affichages).

Merci

ViPHP
ViPHP | 1136 Messages

26 nov. 2009, 15:14

Salut ,

moi j'enlèverai la valeur choisi du tableau .


Donc :
$fi = array_rand($file);
unset($file[$fi[0]]);
Ainsi à la prochaine selection , cette image ne pourra plus être selectionnée .


Edit : Arf .. mal lue .. ce n'est pas une boucle ... mon exemple ne fonctionne donc pas pour ton cas ...

Ch.