[PHP/MYSQL] 2 while pour 1 requete mysql

Résolu/Fermé
MH - 8 déc. 2011 à 11:38
 MH - 9 déc. 2011 à 10:54
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

A voir également:

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
Stringman621 Messages postés 1305 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 337
8 déc. 2011 à 11:46
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 ;)
0
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...
0
Stringman621 Messages postés 1305 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 1 septembre 2012 337
8 déc. 2011 à 13:23
J'ai répondu et je vois ma proposition...
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
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
0
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 ;)
0
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 :)
0