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

  FORUM HardWare.fr
  Programmation
  PHP

  Classement suivant un total calculé

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Classement suivant un total calculé

n°1677661
jenny50
Posté le 28-01-2008 à 09:14:22  profilanswer
 

Bonjour à tous,  
 
Je souhaiterai ajouter une colonne position à un tableau de résultat. J'éxécute une requete pour récupérer tous mes individus avec leur note (esthétique, morale...)
Pas de problème tous mes individus s'affiche les uns en dessous des autres. Je calcule leur note en additionnant esthétique + morale.
 
J'aimerai avoir une colonne 'position' où 1 est pour celui qui a rassemblé le plus de points, 2 pour le suivant et ainsi de suite...
 
Comment je peux procéder?
 
Merci par avance
JEnny


Message édité par jenny50 le 28-01-2008 à 14:47:35
mood
Publicité
Posté le 28-01-2008 à 09:14:22  profilanswer
 

n°1677665
CyberDenix
Posté le 28-01-2008 à 09:25:02  profilanswer
 

Il suffit de faire un tri sur ton tableau.
La "position" d'une ligne sera tout simplement son indice (+1) dans le tableau.


Message édité par CyberDenix le 28-01-2008 à 09:25:22

---------------
Directeur Technique (CTO)
n°1677666
flo850
moi je
Posté le 28-01-2008 à 09:25:44  profilanswer
 

SELECT esthetique ,morale,esthetique + morale AS total
FROM maTable
ORDER BY total  dESC


Message édité par flo850 le 28-01-2008 à 09:26:04

---------------

n°1677712
jenny50
Posté le 28-01-2008 à 10:21:05  profilanswer
 

Merci pour ces réponses rapides.
CyberDenix : je ne comprends pas ta solution, cela ne change rien.
 
Flo850 : je ne savais pas que l'on pouvait faire esthétique + morale dans une requete. Maintenant, le problème pour moi et que je ne peux pas faire cette addition car j'ai plusieurs note dans esthétique que je sépare par des ";". donc je dois faire un total avec le résultats de ma requete. De même pour morale. C'est ensuite que je fais le total des totaux et c'est celui-ci que j'aimerai positionner.
 

n°1677714
flo850
moi je
Posté le 28-01-2008 à 10:25:38  profilanswer
 

tu as donc un problème de conception de ta base de données

 

une colonne de base ded onnées ne doit JAMAIS contenir plus d'une valeur

 

en php , tu commence par stocker tout tes résultats dans un tableau , avec une colonne "total"
puis tu trie ce tableau sur cette colonne
enfin lors de l'affichage tu calcule la colonne "position"

Code :
  1. for($i = 0 ; $i < sizeof($monGrosTableauBienCrade) ; $i++)
  2. {
  3.       echo '<tr>';
  4.         //affichage de mes données
  5.       echo '<td>'.$monGrosTableauBienCrade[$i]["nom"].'</td>';
  6. .....
  7.       //affichaeg de la position
  8.       echo '<td>'.($i+1).'</tD>';
  9.       echo '</tr>';
  10. }
 


Message édité par flo850 le 28-01-2008 à 10:27:28

---------------

n°1677750
jenny50
Posté le 28-01-2008 à 10:50:31  profilanswer
 

Flo850 : je ne comprends pas comment je peux faire. Voici mon code:  
 

Code :
  1. ...requete...
  2. while()
  3. {
  4. $total = $esthetique + $moral ;
  5. <td><?=$nomIndividu?></td>
  6. <td><?=$esthetique?></td>
  7. <td><?=$moral?></td>
  8. <td><?=number_format($total/$max1*100,2,',','')?></td>
  9. }


 
Je souhaite ajouter un TD avec la position de mon individu?

n°1677772
flo850
moi je
Posté le 28-01-2008 à 11:14:43  profilanswer
 

pour savoir sa positin , tu dois comparer le resultat d'un individu aux autres
 
si tu ne peux pas trier lors de la requete ( et c'est pas possible vu ta base de données ) , tu es obligé de passer par une etape ou tu stocke les resultats dans un tableau et ou tu les trie
 
ensuite, tu fais l'affichage


---------------

n°1677786
jenny50
Posté le 28-01-2008 à 11:24:48  profilanswer
 

ok, je te remercie, ceci vient confirmer ce que je pensais. Pour stocker mes résultats dans un tableau, je fais comment?
 
Merci

n°1677790
soulmanto
Chat Noir replica
Posté le 28-01-2008 à 11:37:40  profilanswer
 

ben tu déclares un tableau, tu l'alimentes avec les résultats de la requête, tu tries, tu affiches [:spamafote]

 
Code :
  1. //requête
  2. $sql = "ta requête";
  3. $rec = mysql_query($sql);
  4. $results = array();
  5. while ($rs = mysql_fetch_assoc($rec))
  6. {
  7.     $result[] = $rs["nom_de_la_colonne"];
  8. }
  9. $result = asort($result);
  10. //affichage
  11. ...


Message édité par soulmanto le 28-01-2008 à 11:41:06
n°1677810
jenny50
Posté le 28-01-2008 à 12:03:15  profilanswer
 

merci beaucoup à tous.

mood
Publicité
Posté le 28-01-2008 à 12:03:15  profilanswer
 

n°1677869
jenny50
Posté le 28-01-2008 à 14:29:01  profilanswer
 

J'ai un problème d'affichage.
 

Code :
  1. $tb[$p] = $total; //p correspond à la position de mon individus (incrémenté)
  2. $ar1 = array_keys($tb);
  3. $ar2 = array_values($tb);
  4. $tab = array($ar1,$ar2);
  5. array_multisort($tab[1], SORT_ASC, SORT_NUMERIC);


 
Voici ce que cela donne :  

Code :
  1. array(2) { [0]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } [1]=> array(3) { [0]=> int(119) [1]=> float(468) [2]=> int(595) } }


 
C'est exactement ce que je veux mais maintenant, je n'arrive pas à afficher uniquement la "position" en fonction du total. Comment je dois faire?


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

  Classement suivant un total calculé

 

Sujets relatifs
Formule de classement pour concours ...[xsl-fo] Comment garder un titre avec le contenu suivant
Classement par pertinence[RESOLU] Ne compter dans classement seulement WHERE count > 5
PhpMyAdmin - modifier l'enregistrement suivantCentrer une fenetre dans une fenetre suivant la position scrollée
MYSQL calcule de datetimeSur excel, Equation disant JUSTE ou FAUX suivant 6 cellules
Comparaison de classementoracle + découper une chaînes de caractères suivant un séparateur
Plus de sujets relatifs à : Classement suivant un total calculé


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