Page 1 sur 1

affichage aléatoire avec shuffle

Posté : 11 mai 2009, 02:08
par Anémone
Bonjour,

Je rencontre un problème très curieux avec un script d'affichage aléatoire de mots extraits d'une base.
Ce script m'affiche bien de façon aléatoire deux mots à chaque rechargement de la page, mais parmi ces deux mots il affiche également, parfois, le nom de la page sur laquelle se trouve le script, nom qui n'est pas dans la liste des mots de la base....... Voici le script:
$requete=mysql_query("SELECT main_keyword FROM textes");
while($tableau=mysql_fetch_array($main_keyword))
{$tab[]=$tableau['main_keyword'];
};
shuffle($tab);
 echo $tab[0]."<br>".$tab[1];
Merci,

Thierry

Posté : 11 mai 2009, 09:22
par stopher
Slt ,

J'avoue ne pas comprendre pourquoi ...
j'ai testé plusieurs choses pour tenter de trouver d'ou vient ton probléme ,

et la seule façon que j'ai trouvé pour afficher le nom de la page , est de généré un notice , en accédant à un élément du tableau qui n'existe pas .

Peux tu dans un premier temps vérifier le contenu de $tab avant de le passer à shuffle(),

et pourquoi pas aussi tester aprés l'avoir passé à shuffle() , mais je doute trés fortement que la fonction shuffle soit à l'origine de ton problème.
var_dump($tab);
Ch.

Posté : 11 mai 2009, 10:46
par Anémone
Bonjour,
merci de ta réponse, j'ai bien fait le test suggéré, qui m'a renvoyé 45 éléments alors que mon tableau n'en contient que 42, les trois premiers étant
array(45) { [0]=>  string(0) "" [1]=>  string(33) "dossiercontenantlapageduscript" [2]=>  string(13) "pageduscript.php"...
???
Tu as une idée?
Merci,

Thierry[/php]

Posté : 11 mai 2009, 10:54
par stopher
$tab est-il vide ?

Pour en être certain , initialise le , c'est plus propre , et au moins tu sais ce que tu as ..
//initialisation du tableau
$tab  =  array();

$requete=mysql_query("SELECT main_keyword FROM textes");

while($tableau=mysql_fetch_array($main_keyword)){
     $tab[]   =   $tableau['main_keyword'];
};

//Mélange du tableau
shuffle($tab);

//affichage du premier et second élément 
echo $tab[0]."<br>".$tab[1];

Posté : 11 mai 2009, 13:03
par Anémone
Merci!
L'initialisation du tableau comme tu me l'as suggérée a résolu le problème.
Merci encore et bonne journée

Thierry