affichage aléatoire avec shuffle

Eléphant du PHP | 112 Messages

11 mai 2009, 02:08

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

ViPHP
ViPHP | 1136 Messages

11 mai 2009, 09:22

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.
Modifié en dernier par stopher le 11 mai 2009, 10:50, modifié 1 fois.

Eléphant du PHP | 112 Messages

11 mai 2009, 10:46

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]

ViPHP
ViPHP | 1136 Messages

11 mai 2009, 10:54

$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];

Eléphant du PHP | 112 Messages

11 mai 2009, 13:03

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