Calcul après affichage requete

Eléphant du PHP | 199 Messages

07 août 2005, 11:41

Alors la je sais pas comment faire !!
Pour faire la somme de nombre contenu dans un champ il faut utiliser ton SUM ?

Mammouth du PHP | 19672 Messages

07 août 2005, 11:49

SUM, MAX, AVG et quelques autres sont ce qu'on appelle des agregats en langage SQL, ce sont des fonctions internes communes à la plupart de SGBD . SUM va calculer le total de toutes les lignes d'u champ précisé en paramètre. donc pour le total du champs "notes", c'Est effectivement SUM(notes). Cependant, dans le cas où tu demandes également un autre champ dans ta requête, tu devras regrouper les résultats avec la clause GROUP BY. Prenons donc les champs "utilisateurs" et "notes" pour l'exemple. En demandant le total des notes et les utilisateurs, tu dois mettre une clause GROUP BY sur les utilisateur et la fonction SUM va effectuer le total par utilisateur.

Là, je ne suis pas certain de mon affaire avec un GROUP BY sur le champ d'une autre table. Il faudrait faire des tests. Il est possible qu'il faille faire le GROUP BY sur un champ de la même table que celle où sont les notes. Donc il faudra utiliser le champ identifiant l'utilisateur dans le GROUP BY
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

07 août 2005, 11:56

je vais faire des essais et je reviens te dire !!!

Eléphant du PHP | 199 Messages

07 août 2005, 11:59

Nikel dans phpmyadmin j'ai trouvé comment faire marcher AVG et j'ai adapté a SUM !!!
Ce que je pense faire c'est je fais ma premiere boucle qui va chercher les utilisateur et dans celle la je fais une requete qui calcule le total

Mammouth du PHP | 19672 Messages

07 août 2005, 12:01

Il est possible de le faire en une seule opération en SQL directement: ça accélèrera notablement les opération en limitant les échanges entre PHP et MySQL qui peut retrouver les valeurs recherchées.

Ceci dit, j'ai un peu de mal à visualiser ce que tu veux faire au juste...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

07 août 2005, 12:06

ba j'essaye et je te montrerai le code !!

Eléphant du PHP | 199 Messages

07 août 2005, 13:06

Alors voici la requete SQL dans Phpmyadmin :

Code : Tout sélectionner

SELECT SUM( note ) AS total FROM coms, mister WHERE mister.id = coms.wo GROUP BY prenom
Ensuite ma requete pour l'affichage
  <?php
include("../config.inc.php");
 $sql = 'SELECT SUM( note ) AS total '
        . ' FROM coms, mister '
        . ' WHERE mister.id = coms.wo '
        . ' GROUP BY prenom LIMIT 0, 30 ';
while ($donnees = mysql_fetch_array($sql) )
{
echo $donnees;
}
?>
Mais il y a une erreur :


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /var/www/free.fr/1/4/manio54/master/classement2.php on line 25

Mammouth du PHP | 19672 Messages

07 août 2005, 13:10

Gros malin, si tu exécutais ta requête avant de récupérer des résultats ??
<?php
include("../config.inc.php");
$sql = 'SELECT SUM( note ) AS total '
     . ' FROM coms, mister '
     . ' WHERE mister.id = coms.wo '
     . ' GROUP BY prenom ';
$execution = mysql_query($sql);
while ($donnees = mysql_fetch_array($execution) )
{
    echo("<p>". $donnees['total'] ."</p>\n";
}
?>
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

07 août 2005, 19:12

en effet je n'ai pas était très malin j'ai juste utiliser la creation de requete php depuis phpmyadmin et je n'es pas pensé a faire la requete !!

Bref merci beaucoup

Mammouth du PHP | 19672 Messages

07 août 2005, 19:19

[Résolu] :?:
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

07 août 2005, 19:58

En fait non j'ai bien le calcul d'effectué mais si je fais un echo qui montre le prenom cela n'affiche rien !!!

Je n'ai pas trop d'idée pour le faire en une seule requete !

Eléphant du PHP | 199 Messages

07 août 2005, 20:23

Alors j'ai reussi a faire afficher le prenom et le total
Un seul petit probleme c'est que le total est de toutes les notes pas seulement celle qui comporte le meme ID

Code : Tout sélectionner

SELECT prenom, SUM( note ) AS total FROM mister , coms GROUP BY mister.id = coms.wo

Mammouth du PHP | 19672 Messages

07 août 2005, 20:34

Tu as pas le sentiment qu'il manque une clause de tri ? Du genre WHERE...
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphant du PHP | 199 Messages

08 août 2005, 07:41

si justement je fais des essais mais sa ne marche pas !!

Eléphant du PHP | 199 Messages

08 août 2005, 07:44

Non je viens de trouver alors je mets le code sa peut toujours servir
 $sql = 'SELECT prenom, SUM( note ) AS total'
        . ' FROM mister , coms'
        . ' WHERE mister.id = coms.wo'
        . ' GROUP BY prenom  ';
Merci beaucoup Cyrano !!!