Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/05/2007, 11h44   #1
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Par défaut [SQL] Comment faire la somme d'un champ

j'ai une table avec 5 champs dont l'un des champs est le salaire de chaque employé et j'aimerais faire la somme de tous les salaire.
Comment je dois faire? Ya-t-il une fonction ou bien dois-je faire une boucle while du type :

Code PHP :
1
2
3
4
5
6
7
8
9
10
11
$sql8 = "SELECT Salaire_Perso FROM `personnel` WHERE Id_Section='$service'";
$query8 = mysql_query($sql8) or die($sql8 . ' : '  . mysql_error());
$data8 = mysql_fetch_assoc($query8);
 
$i = 0;
while($data8 = mysql_fetch_array($query8))
{
$i = $i + $data8['Salaire_perso'];		
} //fin du while
 
echo 'Somme des salaires : ' .$i ;
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 11h58   #2
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
J'ai donc fait la boucle while, cependant elle ne prends pas en compte le premier n-uplet (1ère ligne) de ma table. Elle me fait la somme de tous les autres mais pas la 1ère ligne!
Merci
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 12h16   #3
Modérateur
 
Avatar de Nesmontou
 
Homme Benjamin PREVOT
Architecte de système d'information
Inscription : septembre 2004
Messages : 1 570
Détails du profil
Informations personnelles :
Nom : Homme Benjamin PREVOT
Âge : 30
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Activité : Architecte de système d'information
Secteur : Finance

Informations forums :
Inscription : septembre 2004
Messages : 1 570
Points : 2 506
Points : 2 506
Salut, jette un oeil à la fonction sql SUM : http://dev.mysql.com/doc/refman/5.0/...functions.html (bas de page)

Ca t'évitera une boucle inutile
__________________
Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

F.A.Q. : Java, PHP, (X)HTML / CSS

N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème
Nesmontou est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h13   #4
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
OK merci a toi je vais jetter un oeil la dessus et je vous tiens au courant pour vous informer si mon probleme est réglé ou pas! Merci
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h22   #5
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Merci mais ca ne marche pas

Voici ce que j'ai fait :
Code PHP :
1
2
3
4
5
 
$sql8 = "SELECT Salaire_Perso FROM `personnel` WHERE Id_Section='$service'";
 
$somme_salaire=SUM($sql8); ou encore
$somme_salaire=SUM($data8); (<= en référence à ce que j'avais fait plus haut)

Voici l'erreur :
Citation:
Fatal error: Call to undefined function: sum() in u:\pc stagiaire\hamza slimani\site php\autres pages\budget.php on line 60
Je pense que cette fonction n'est utilisable que sous phpMyAdmin et non sous ma page html/php
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h37   #6
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Au fait j'ai fait ca :

Code PHP :
1
2
3
4
5
 
$sql8 = "SELECT SUM(Salaire_Perso) FROM `personnel` WHERE Id_Section='$service'";
$query8 = mysql_query($sql8) or die($sql8 . ' : '  . mysql_error());
$data8 = mysql_fetch_assoc($query8);
$somme_salaire=$data8['Salaire_Perso'];

Mais ya un petit probleme pour récupérer le resultat !
Cette ligne la ne marche pas ?
Code PHP :
$somme_salaire=$data8['Salaire_Perso'];

Parce-que voici l'erreur que l'on m'affiche :

Citation:
Notice: Undefined index: Salaire_Perso in u:\pc stagiaire\hamza slimani\site php\autres pages\budget.php on line 62
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h40   #7
Invité régulier
 
Inscription : mai 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 14
Points : 9
Points : 9
SUM marche comme count, ou autres fonctions du même type.

C'est DANS ta requête SQL que tu dois inclure le SUM...

Donc tu passes de :
$sql8 = "SELECT Salaire_Perso FROM `personnel` WHERE Id_Section='$service'";

à
$sql8 = "SELECT SUM(Salaire_Perso) FROM `personnel` WHERE Id_Section='$service'";

j'ai pas testé, mais ça doit marcher...

A noter, tu as aussi :

* AVG: Calcule la moyenne d'une colonne (ou de chaque regroupement si elle est couplée à la clause GROUP BY)
* COUNT: Calcule le nombre de lignes d'une table (ou de chaque regroupement ...)
* MAX: Calcule la valeur maximale d'une colonne (ou de chaque regroupement ...)
* MIN: Calcule la valeur minimale colonne (ou de chaque regroupement ...)
* SUM: Effectue la somme des valeurs d'une colonne (ou de chaque regroupement ...)

EDIT :

pour récupérer la valeur dans ton array, tu dois plutôt mettre :
$somme_salaire=$data8['0'];
XhiAlpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h43   #8
Nouveau Membre du Club
 
Avatar de Yagami_Raito
 
Inscription : mai 2007
Messages : 106
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 106
Points : 26
Points : 26
Merci pour vos réponses !!

Voici le code si jamais quelqu'un avait le même problème que moi :

Code PHP :
1
2
3
4
5
6
7
 
$sql8 = "SELECT SUM(Salaire_Perso) as somme_salaire FROM `personnel` WHERE Id_Section='$service'";
$query8 = mysql_query($sql8) or die($sql8 . ' : '  . mysql_error());
$data8 = mysql_fetch_assoc($query8);
$somme_salaire=$data8['somme_salaire'];
 
echo 'Somme des salaires des employés : ' .$somme_salaire;


EDIT: Le fait que tu compare la fonction SUM() à la fonction COUNT() m'a beaucoup aidé !
Merci à vous
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2007, 13h54   #9
Invité régulier
 
Inscription : mai 2007
Messages : 14
Détails du profil
Informations forums :
Inscription : mai 2007
Messages : 14
Points : 9
Points : 9
juste pour clore le topic, voilà un petit bout de code analogue :

$sql1 = mysql_query("SELECT count(*) FROM ma_table WHERE DATE(nom_de_champ) >= '$variable_php'");
$nb_reserv = Mysql_result($sql1,(0),(0));

Ca marche bien. Ici, j'utilise un Mysql_result.
Si on fait un
echo $nb_reserv ;

On a bien le nombre de lignes répondant à la requète...
XhiAlpha est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 03h40.


 
 
 
 
Partenaires

Hébergement Web