[PHP/MYSQL] 2 while pour 1 requete mysql [Résolu/Fermé]

Signaler
-
 MH -
Bonjour,

J'essai d'obtenir 2 tableaux identiques à partir d'une seule requete SQL, et de le sortir dans 2 listes différentes. Impossible d'avoir 2 résultats, et je ne pas faire 2 requêtes MySQL différentes car j'utilise RAND().



$result = mysql_query("SELECT nom, vote FROM objet ORDER BY RAND() LIMIT 12");

echo '<ul>';
while($ar= mysql_fetch_array($result)){
	echo '<li>'. $ar['nom']. '</li>';
}
echo "</ul>";

echo '<ul>';
while($ra= mysql_fetch_array($result)){
	echo '<li>'. $ra['vote']. '</li>';
}
echo "</ul>";



Merci de votre aide

7 réponses

Bonjour

Si tu veux parcourir deux fois le résultat de la requête sans la relancer, le plus simple est d'utiliser mysql_data_seek qui ré-initialise le parcours :
echo '<ul>';
while($ar= mysql_fetch_array($result)){
	echo '<li>'. $ar['nom']. '</li>';
}
echo "</ul>";
mysql_data_seek($result,0);
echo '<ul>';
while($ra= mysql_fetch_array($result)){
	echo '<li>'. $ra['vote']. '</li>';
}
echo "</ul>";

Une autre solution serait d'enregistrer les valeurs qui t'intéressent dans un tableau dans ta première boucle, et de faire ta seconde boucle sur ce tableau :
$memo=array();
echo '<ul>';
while($ar= mysql_fetch_array($result)){
	echo '<li>'. $ar['nom']. '</li>';
        $memo[]=$ar['vote'];
}
echo "</ul>";

echo '<ul>';
foreach ($memo as $ra){
	echo '<li>'. $ra. '</li>';
}
echo "</ul>";
2
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60769 internautes nous ont dit merci ce mois-ci

Messages postés
1305
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 septembre 2012
266
Bonjour,

ton code ne serais pas plutôt :

$result = mysql_query("SELECT nom, vote FROM objet ORDER BY RAND() LIMIT 12");

echo '<table>';
while($ar= mysql_fetch_array($result)){
echo '<tr>';
echo '<td>'. $ar['nom']. '</td>';
echo '<td>'. $ra['vote']. '</td>';
echo '</tr>';
}
echo "</table>";

Je propose ça mais je ne suis pas sûr que ca te convienne (c'est pour faire avancer le schmilblick ;)
Ceci est un test, je vois qu'il est indiqué " 1 réponse" mais impossible de la visualisé. EDIT : Et maintenant "2" alors que je ne vois que la mienne...
Messages postés
1305
Date d'inscription
mardi 13 décembre 2005
Statut
Membre
Dernière intervention
1 septembre 2012
266
J'ai répondu et je vois ma proposition...
Bonjour

Stringman621, tu n'as pas fait une réponse mais un commentaire.
Les commentaires mis directement dans la question ne sont pas visibles pour les non inscrits comme MH et moi. C'est une cause très fréquente de malentendus sur CCM
Je remet mon message ;)

Bonjour,

ton code ne serais pas plutôt :

$result = mysql_query("SELECT nom, vote FROM objet ORDER BY RAND() LIMIT 12");

echo '<table>';
while($ar= mysql_fetch_array($result)){
echo '<tr>';
echo '<td>'. $ar['nom']. '</td>';
echo '<td>'. $ra['vote']. '</td>';
echo '</tr>';
}
echo "</table>";

Je propose ça mais je ne suis pas sûr que ca te convienne (c'est pour faire avancer le schmilblick ;)
Au poil Monsieur le père, les deux marchent parfaitement.

Stringman621, merci mais je mentionnais tableau par réflexe, c'était plus le problème PHP que la syntaxe HTML qui me posait problème :)