Page 1 sur 1

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

Posté : 13 avr. 2010, 10:54
par arme
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

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

Posté : 13 avr. 2010, 11:20
par Aureusms
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'];
}
?>

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

Posté : 13 avr. 2010, 11:21
par Aureusms
Note : pour les 2 ORDER cela marche sous l'écriture (exemple) "ORDER CIRCUIT ASC, resultat DESC"

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

Posté : 13 avr. 2010, 11:43
par arme
si je veux que circuit soit en RANDOM, peux tu m'indiquer la requete a effectuer ?

merci par avance Aureusms :D

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

Posté : 13 avr. 2010, 12:15
par Aureusms
Il y est avec

$id_au_hazard = rand (0,$nombre_de_circuit);

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

Posté : 13 avr. 2010, 12:48
par arme
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

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

Posté : 13 avr. 2010, 13:04
par arme
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