Version complète: sur le forum Webmaster Hub : Récupération de plusieurs données
Webmaster Hub > Création et exploitation de Sites Internet > Les langages du Net > PHP
theprogrammeur
Re-bonjour

Après avoir réusssi à insérer des données dans ma base, je voudrais bien en sélectionner 5 aléatoirement. Pour ce faire, j'ai utilisé ce script:
CODE
$connection = mysql_connect("***", "***", "***");
if (!$connection) {
    die('Connexion impossible : ' . mysql_error());
}
mysql_select_db("*****");
$requete = 'SELECT * FROM table ORDER BY RAND() LIMIT 5';
$mysql_reponse = mysql_query($requete);
$i = 0;
while($i<=5){
$lien = mysql_fetch_row($mysql_reponse);
$i++;
}
echo $lien[0];

mysql_close($connection);

Ce n'est qu'un script pour vérifier qu'il sélectionne bien 5 données différentes et qu'il les stocke dans un Array. C'est pourquoi j'ai voulu tester une des entrées de l'Array en l'écrivant. Seul problème, rien ne s'affiche sur ma page. Pourtant je ne vois pas d'erreurs.
Quelqu'un peut-il m'aider?

Merci d'avance.
Dan
Tu n'as pas défini $lien comme étant une array .... donc $lien[0] n'existe pas wink.gif

Remplace:
CODE
$lien = mysql_fetch_row($mysql_reponse);

par
CODE
$lien[] = mysql_fetch_row($mysql_reponse);


Dan
theprogrammeur
J'ai fait comme tu l'as proposé mais alors dans toutes les 'cases' des l'array il est écrit....Array.
Ex:je echo $lien[0] affiche Array au lieu du contenu!
Dan
Que te donne un
CODE
print_r($lien);

?

Il est logique que $lien[0] te donne une array parce que le résultat de mysql_fetch_row() est une array tongue.gif
Donc $lien est une "array de arrays" !
theprogrammeur
print_r donne ceci:
CODE
Array ( [0] => Array ( [0] => info1  ) [1] => Array ( [0] => info8 ) [2] => Array ( [0] => info4  ) [3] => Array ( [0] => info12  ) [4] => Array ( [0] => info2  ) [5] => )

C'est parfait, il a bien sélectionné les 5 données aléatoirement. Seulement, mon but n'était pas de les écrire dans la page mais de les écrire dans un fichier .txt sous cette forme:
CODE
<li>info_aleatoire1</li>
<li>info_aleatoire2</li>
<li>info_aleatoire3</li>
<li>info_aleatoire4</li>
<li>info_aleatoire5</li>

Je ne voulais les écrire que pour voir comment ça s'affichait et si jamais ça s'affichait seulement dans une seule variable, j'aurais utilisé la fonction explode() pour diviser la grosse variable dans un array. La seule chose qu'il me manque pour l'instant c'est de pouvoir arriver individuellement à chaque case de l'array pour mettre <li> devant et </li> après.
Dan
Et bien tout simplement avec les affichages de $lien[0][0], $lien[0][1] ... $lien[0][4], non? whistling.gif

Mais si tu n'as pas besoin de cette array plus tard, tu peux aussi remplacer ce code dans ta source:
CODE
while($i<=5){
     $lien[] = mysql_fetch_row($mysql_reponse);
     $i++;
}

par
CODE
while($lien = mysql_fetch_row($mysql_reponse)) {
     print "<li>".$lien[0]."</li>"; // ou fputs(...) si tu préfères l'écrire dans un fichier
}
theprogrammeur
Merci beaucoup Dan. Mon problème est réglé
Ceci est une version "bas débit" de notre forum. Pour voir la version complète avec plus d'information, la mise en page et les images, veuillez cliquer ici.