PHP: Récuperation d'un calcul MySQL

Eléphanteau du PHP | 43 Messages

10 oct. 2010, 08:15

Bonjour. Après des heures de recherches, je reviens vers vous pour mon problème.
Je sais interagir avec PHP et MySQL pour récupérer des données suite aux requêtes.
Mais dernièrement, j'ai découvert la fonction MySQL SUM() pour obtenir la somme
des données d'une colonne. Exemples :
SELECT SUM( debit ) FROM `banque` WHERE `date` BETWEEN '2010-01-01' AND '2010-06-01'
SELECT SUM( credit - debit ) FROM `banque` WHERE `date` BETWEEN '2010-01-01' AND '2010-06-01'
Et MySQL répond parfaitement en donnant la somme des données.
Mais comment récupérer cette somme via PHP sachant que les fonctions mysql_fetch_assoc($requete) ou mysql_fetch_array($requete,MYSQL_ASSOC)
s'attendent à récupérer toutes les données d'une colonne?
Merci de votre réponse.
Tarek

Mammouth du PHP | 19672 Messages

10 oct. 2010, 09:33

Utilise des alias :
SELECT SUM( debit ) AS somme_debit 
FROM `banque` 
WHERE `date` BETWEEN '2010-01-01' AND '2010-06-01';
SELECT SUM( credit - debit ) AS solde 
FROM `banque` 
WHERE `date` BETWEEN '2010-01-01' AND '2010-06-01';
Comme ça, tu récupère l'alias comme nom de colonne, « somme_debit » pour la première, « solde » pour la seconde.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 43 Messages

10 oct. 2010, 09:52

Une réponse aussi rapide, bravo!
Je vais essayer ta solution.
Je viens de trouver une autre solution avec foreach(), sans doute moins élégante: quelle fierté :-)
$sql = "SELECT SUM(credit) FROM {$_POST['compte']}  WHERE date BETWEEN '{$_POST['date1']}' AND '{$_POST['date2']}'";
//envoi de la requête pour calcul créditeur
$requete = mysql_query ($sql,$id_connex);
while($leTableau = mysql_fetch_assoc($requete))
{
 // Affichage des valeurs du tableau
foreach($leTableau as $cle => $valeur) 
{ 
echo 'du ', $_POST['date1'], ' au ', $_POST['date2'], '<br/>';
echo 'crédit: ', '+', round($valeur,2) , '€', '<br/>';
}
}
Et ça fonctionne ausi bien avec SUM(debit) que SUM(debit-credit)
Débutant, mais ça avance doucement...Merci à tous!