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 01/06/2007, 15h24   #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] Multiplication après requête qui donne plusieurs données en résultats

Voici l'aspect de ma table personnel :
-Id
-Nom
-Prenom
-Salaire
-Etablissement
-Taux_de_charge

Voici ma requete :
Code PHP :
1
2
3
4
 
$sql = "SELECT Salaire, Taux_de_charge FROM `personnel` WHERE Etablissement='$Etab'";
$query = mysql_query($sql) or die($sql." : ".mysql_error());
$data = mysql_fetch_assoc($query);

J'aimerais multiplier chacun des salaires avec le taux de charges qui correspond cependant je ne vois pas du tout comment faire !!

Une boucle while pour parcourir le résultat ? Cependant dans mon résultat j'ai les salaires et les taux de charges..Bref je sais pas trop si vous m'avez compris ou pas donc si jamais posez vos questions!

Merci à vous
__________________
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 15h27   #2
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Soit tu le fais directement en SQL :

Code :
1
2
3
$sql = "SELECT (Salaire* Taux_de_charge) as Result FROM `personnel` WHERE Etablissement='$Etab';
$query = mysql_query($sql) or die($sql." : ".mysql_error());
$data = mysql_fetch_assoc($query);
Soit tu fais une boucle while pour récupérer chaque ligne du tableau et tu fais le calcul:
Code :
1
2
3
4
5
6
7
$sql = "SELECT (Salaire* Taux_de_charge) as Result FROM `personnel` WHERE Etablissement='$Etab';
$query = mysql_query($sql) or die($sql." : ".mysql_error());
$result = array();
while($data = mysql_fetch_assoc($query))
{
$result[] = $data['Salaire'] * $data['Taux_de_charge'];
}
Dans les deux cas, pour les afficher faudra faire une boucle sur les résultats donc ca revient à peu près au meme.
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 15h30   #3
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
Toujours la quand il faut koopajah !

Je pense que j'aurais d'autres questions sur ce topic la

merci beaucoup
__________________
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/06/2007, 15h33   #4
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Pas de problèmes, et ca me change de mes XSL qui m'en font voir de toutes les couleurs.

Il faut penser que SQL est un language très puissant et qu'il n'est pas toujours plus rapide de déléguer les calculs à PHP!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h20   #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
Bonjour à tous !
koopajah j'ai repris ton code :
Code PHP :
1
2
3
4
5
 
$sql25 = "SELECT (Salaire_Perso* Taux_de_charge) as result FROM `personnel` WHERE Etablissement='$Etab' AND `Type_Contrat`='CDI'";
$query25 = mysql_query($sql25) or die($sql25." : ".mysql_error());
$data25 = mysql_fetch_assoc($query25);
$charge_CDI = $data25['result'];

J'aimerais savoir si le code que tu m'as donnée effectue bien ce que je souhaite. Voila le resultat que je veux obtenir.
Le (salaire du 1er employé de ma base * taux de charges qui correspond) + (salaire du 2ème employé de ma base * taux de charges qui correspond) + etc etc...

Ne faut-il pas que j'utilise la fonction SUM ?
Code PHP :
1
2
3
4
$sql25 = "SELECT SUM(Salaire_Perso* Taux_de_charge) as result FROM `personnel` WHERE Etablissement='$Etab' AND `Type_Contrat`='CDI'";
$query25 = mysql_query($sql25) or die($sql25." : ".mysql_error());
$data25 = mysql_fetch_assoc($query25);
$charge_CDI = $data25['result'];[/



Merci pour vos réponses !
__________________
Yagami_Raito est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h24   #6
Membre éclairé
 
Avatar de Asmodean
 
Inscription : février 2006
Messages : 311
Détails du profil
Informations personnelles :
Âge : 26
Localisation : France

Informations forums :
Inscription : février 2006
Messages : 311
Points : 346
Points : 346
Envoyer un message via MSN à Asmodean
Oui oui ca correspond. Ce que fait SQL c'est qu'il va chercher toutes les lignes qui répondent à la clause WHERE. ensuite il récupèrent les colonnes dont tu as besoin (et éventuellement des résultat d'opération comme dans ton cas) pour chaque ligne. Donc le taux de charge sera bien appliqué au salaire correspondant.

Après effectivement tu peux appliquer un SUM si c'est la somme des salaires qui t'intéresse.
Asmodean est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h26   #7
Membre Expert
 
Inscription : janvier 2005
Messages : 2 288
Détails du profil
Informations forums :
Inscription : janvier 2005
Messages : 2 288
Points : 2 287
Points : 2 287
Effectivement si tu veux la somme de tous les salaires multipliés par leur taux de charge il faut que tu fasses la multiplication ET la somme, mais ca n'était pas expliqué comme ça dans ton premier message il me semble. Et ton code semble bon à première vue!
koopajah est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/06/2007, 11h34   #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
Oui je ne l'avais pas cité dans mon premier message tu as bien raison donc vous ne pouviez pas le deviné à moins que vous soyez devin...

Bref, merci en tout cas pour vos réponses, ça m'a bien aidé !!
__________________
Yagami_Raito 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 07h20.


 
 
 
 
Partenaires

Hébergement Web