Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1403 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  Requête double en MySQL

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Requête double en MySQL

n°1948871
seozus
Posté le 09-12-2009 à 23:02:51  profilanswer
 

Bonjour à vous tous!
 
Je suis webmaster d'un site de quiz et je suis en travail pour la v3.0 (www.quizcity.net), et me voila confronté a un blocage de connaissance côté MySQL. Je crois que ça peut se faire, mais Google ne me donne rien d'intéressant sur le sujet. Voici mon problème:
 
Jai une table quiz dans lesquels sont stockés mes quiz et l'affichage de la liste se fait avec la requete suivante:

Code :
  1. $req = mysql_query("SELECT * FROM sets WHERE catid = '".$_GET['catid']."' AND isopen='1' AND quizlang='".$is_lang."' ORDER BY name LIMIT ".$start.", ".$nbpp."" );


 
Et j'ai une table "statistics" où le résultat de chaque partie est enregistré. Je détermine le niveau de difficulté du quiz selon la moyenne et je vais l'afficher dans ma liste de quiz. Jusqu'ici tout va bien. Par contre, je veux offrir un tri selon la moyenne... C'est là que ça se corse...
 
Je me suis fait une fonction pour calculer la moyenne et déterminer le niveau de difficulté, et cette fonction est appelée dans mon while d'affichage:

Code :
  1. function niveau($id){
  2. $extractionStats = mysql_query("SELECT * FROM statistics WHERE setid='".$id."'" );
  3.  if( mysql_affected_rows() >= 5 ){
  4.   $total = 0;
  5.   $totalpoints = 0;
  6.   $nbsaved = 0;
  7.   while($niveau = mysql_fetch_array($extractionStats)){
  8.    $total += $niveau['score'];
  9.    $totalpoints += $niveau['totalscore'];
  10.    $nbsaved++;
  11.   }
  12.   $resultatPourcent=number_format($total/$totalpoints*100,0);
  13.   if($resultatPourcent <= 40){
  14.    echo '<font color="#C00000" size="2"><b>Très difficile</b></font>';
  15.   }
  16.   else if($resultatPourcent <= 60){
  17.    echo '<font color="#FF0000" size="2"><b>Difficile</b></font>';
  18.   }
  19.   else if($resultatPourcent <= 80){
  20.    echo '<font color="#FF8000" size="2"><b>Moyen</b></font>';
  21.   }
  22.   else if($resultatPourcent < 90){
  23.    echo '<font color="#60E000" size="2"><b>Facile</b></font>';
  24.   }
  25.   else
  26.   {
  27.    echo '<font color="#40FF00" size="2"><b>Très facile</b></font>';
  28.   }
  29.  }
  30.  else
  31. {
  32. echo '<span onmouseover="montre(\'Il faut au moins <b>5</b> résultats pour<br>déterminer le niveau de difficulté.\');" onmouseout="cache();"><font color="grey" size="2"><b>En calcul...</b></font></span>';
  33. }
  34. }


 
La moyenne est dans $resultatPourcent, et il faudrait que je puisse classer en ordre ASC de $resultatPourcent...
 
Est-ce possible en une seule requête MySQL? Si oui, comment?
 
Merci de votre précieuse aide, je ne sais plus trop où chercher...  :ange:  
 


---------------
www.failqc.com : FailBlog québécois
mood
Publicité
Posté le 09-12-2009 à 23:02:51  profilanswer
 

n°1948882
pataluc
Posté le 09-12-2009 à 23:51:01  profilanswer
 

tu dois pouvoir faire qqchose du genre:

Code :
  1. SELECT sets.name, avg(score) AS moyenne
  2. FROM statistics
  3.    JOIN sets ON statistics.setid=sets.setid
  4. WHERE ...
  5. ORDER BY moyenne DESC;


Message édité par pataluc le 09-12-2009 à 23:51:31
n°1948911
SuperKebab
Posté le 10-12-2009 à 07:56:42  profilanswer
 

Fais attention aussi aux injections sql, même si sur cette requete tu crains rien à part une belle erreur.
 
Si ton $_GET['catid'] contient une quote, ta requete plante.
 
Si t'utilises pas les requetes préparées, utilise au moins mysql_real_escape_string() pour échapper chaque variable que tu injectes.

n°1951004
Profil sup​primé
Posté le 16-12-2009 à 19:35:24  answer
 

ouais, ou bien transtype quand tu as à faire à des entiers (avec (int))


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  Requête double en MySQL

 

Sujets relatifs
Generateur Password + Sauvegarde MYSQLutilisation de mysql dans un shell linux
Requete pour remplacer une partie de chaine via MyadminMigration Oracle vers MySQL plus de 10 millions d'enregistrements
requetemettre le resultat d'une requete dans une variable
[ADO] Executer requête Update sous VBProblème requete SQL : double et différent
[MySQL] une requête avec "double classement": possible??MYSQL et double order sur une requete
Plus de sujets relatifs à : Requête double en MySQL


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR