problème sur 2 requetes - recup info de la 1ere ??

Eléphanteau du PHP | 20 Messages

13 avr. 2010, 10:54

bonjour,

dans le but de faire un petit logiciel sur des chronos de circuits,
j'ai trouvé cette solution, mais elle ne marche pas, probleme de requete

je souhaite en premier faire une requete pour trouver un circuit au hazard :
....
$sql = 'SELECT circuit  FROM `contrelamontre` where `reel`="0" ORDER BY RAND( ) LIMIT 1'; 
$SqlStr = mysql_query($sql);
while ($rang=mysql_fetch_array($SqlStr))
{
$circuitchoisi = $rang['circuit'];
echo    $circuitchoisi;
}
ensuite je veux récupérer $circuitchoisi pour afficher mon chrono au hazard, mais ca ne marche pas :
...
$sql = 'SELECT id, epreuve, circuit, mail, idonline,resultat,mode,voiture,date,replay,certification,reel  FROM `contrelamontre`  where circuit=$circuitchoisi ORDER BY `resultat` ASC  LIMIT 1 '; 
$SqlStr = mysql_query($sql);
while ($rang=mysql_fetch_array($SqlStr))
{
$idonline = $rang['idonline'];
$circuit = $rang['circuit'];
$voiture = $rang['voiture'];
$resultat = $rang['resultat'];
....
en fait, il faudrait que WHERE circuit = $circuitchoisi de la requete précédente, car je souhaite afficher 1 circuit au hazard mais avec un ORDER aussi sur resultat pour prendre le meilleur.

Comme un requete avec 2 ORDER ne marche pas, j'ai pensé à ca, mais le resultat de la première requete je n'arrive pas à le mettre dans la seconde

merci pour votre aide par avance !! :D

ViPHP
ViPHP | 1996 Messages

13 avr. 2010, 11:20

Peut être un truc plus simple : récupères d'abord le nombre de circuit ensuite cré un nombre aléatoire avec PHP et injecte le dans ta requete
<?php
//soit count () dans la requete soit mysql_num_rows
$requete = "SELECT circuit FROM contrelamontre where reel=0";
$resultat_sql = mysql_query($requete);
$nombre_de_circuit = mysql_num_rows($resultat_sql);

$id_au_hazard = rand (0,$nombre_de_circuit);

$sql = 'SELECT id, epreuve, circuit, mail, idonline,resultat,mode,voiture,date,replay,certification,reel  FROM `contrelamontre`  where circuit='.$id_au_hazard .' ORDER BY resultat ASC  LIMIT 1 ';
$SqlStr = mysql_query($sql);
while ($rang=mysql_fetch_assoc($SqlStr))
{
$idonline = $rang['idonline'];
$circuit = $rang['circuit'];
$voiture = $rang['voiture'];
$resultat = $rang['resultat'];
}
?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

ViPHP
ViPHP | 1996 Messages

13 avr. 2010, 11:21

Note : pour les 2 ORDER cela marche sous l'écriture (exemple) "ORDER CIRCUIT ASC, resultat DESC"
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 20 Messages

13 avr. 2010, 11:43

si je veux que circuit soit en RANDOM, peux tu m'indiquer la requete a effectuer ?

merci par avance Aureusms :D

ViPHP
ViPHP | 1996 Messages

13 avr. 2010, 12:15

Il y est avec

$id_au_hazard = rand (0,$nombre_de_circuit);
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 20 Messages

13 avr. 2010, 12:48

ca ne marche pas désolé

je souhaite, faire une seule requete avec RANDOM sur circuit et ORDER sur resultat ASC avec 1 seule resultat

en fait dans ma base j'ai des centaines de chronos sur plusieurs circuits avec des resultats parfois sur les memes circuits

je voudrai que au hazard un circuit sorte, avec le meilleur resultat soit :
...

mysql_select_db ( 'contrelamontre' , $db ) or die( 'Erreur de selection ' . mysql_error ()); 
$sql = 'SELECT id, epreuve, circuit, mail, idonline,resultat,mode,voiture,date,replay,certification,reel  FROM `contrelamontre` where `circuit`="""" RANDOM circuit je ne sais pas comment l'ecrire""""  ORDER BY `resultat` ASC  LIMIT 1 '; 
$SqlStr = mysql_query($sql);
while ($rang=mysql_fetch_array($SqlStr))
{
$idonline = $rang['idonline'];
$circuit = $rang['circuit'];
$voiture = $rang['voiture'];
....
merci pour l'aide :D

Eléphanteau du PHP | 20 Messages

13 avr. 2010, 13:04

c'est bon j'ai trouvé

je fais une première requete en cherchant un circuit au hazard
je re-injecte le circuit dans ma deuxième requete pour avoir le meilleur resultat:
where `circuit`='$circuitchoisi' ORDER BY `resultat` ASC  LIMIT 1
merci a+ :D