Discussion:
comment faire une soustraction
(trop ancien pour répondre)
patrick
2007-05-11 19:58:54 UTC
Permalink
bonjour,

j'essaie de faire une soustraction de données qui se trouve dans une bd
mysql

exemple: débit - crédit = solde

voici mon code:

#######################################
$sql1=mysql_query('SELECT SUM(lb_débit) as total_débit FROM
`edc_livre_banque`');
$resa=mysql_fetch_assoc($sql1);
print ('total_débit: ');
echo $resa[total_débit];
print (' Euros');
?>
<br>
<?php

$sql2=mysql_query('SELECT SUM(lb_credit) as total_credit FROM
`edc_livre_banque`');
$resb=mysql_fetch_assoc($sql2);
print ('total_credit: ');
echo $resb[total_credit];
print (' Euros');
#######################################
?>
<br>
<?php


print ('solde: ');
echo $solde[$resa - $resb];
print (' Euros');
?>

j'ai cherché un peu par tous mai rien trouvé

patrick
Olivier Miakinen
2007-05-11 20:20:49 UTC
Permalink
Bonjour.

C'est un jeu pour savoir combien on trouvera d'erreurs ?
Post by patrick
j'essaie de faire une soustraction de données qui se trouve dans une bd
mysql
Je suppose que ça doit pouvoir se faire en SQL directement, mais n'étant
pas un spécialiste je ne réponds pas à cette question. Voir le groupe
consacré aux bases de données, fr.comp.applications.sgdb.
Post by patrick
exemple: débit - crédit = solde
#######################################
$sql1=mysql_query('SELECT SUM(lb_débit) as total_débit FROM
`edc_livre_banque`');
On a droit aux accents dans les noms de champs ?
Post by patrick
$resa=mysql_fetch_assoc($sql1);
Tu n'as pas vérifié que ta fonction mysql_query() avait fonctionné, et
donc que $sql1 est valide.
Post by patrick
print ('total_débit: ');
Ok.
Post by patrick
echo $resa[total_débit];
Même si les accents sont autorisés dans les noms de champ, ici tu
utilises une constante total_débit au lieu de la chaîne 'total_débit'.
Fais un essai avec error_reporting(E_ALL) pour détecter toutes les
erreurs de ce genre.
Post by patrick
print (' Euros');
?>
<br>
<?php
$sql2=mysql_query('SELECT SUM(lb_credit) as total_credit FROM
`edc_livre_banque`');
$resb=mysql_fetch_assoc($sql2);
Même remarque que précédemment concernant la réussite ou l'échec de la
requête.
Post by patrick
print ('total_credit: ');
echo $resb[total_credit];
Et même remarque concernant les chaînes de caractères.
Post by patrick
print (' Euros');
#######################################
?>
<br>
<?php
print ('solde: ');
echo $solde[$resa - $resb];
Si j'ai bien tout suivi, $resa et $resb sont des tableaux. Je ne vois
pas bien comment tu peux soustraire un tableau d'un autre, puis t'en
servir comme index dans un troisième. Au passage, je ne vois pas où est
défini ce troisième tableau $solde.
Post by patrick
print (' Euros');
?>
j'ai cherché un peu [partout mais je n'ai] rien trouvé
Doc PHP : <http://www.php.net/docs.php>.
(Commencer par regarder ce qui concerne les chaînes de caractères et les
tableaux avant de passer aux fonctions MySQL.)

FAQ de ce groupe : <http://faqfclphp.free.fr/>.

Groupe de discussion sur les SGBD : <news:fr.comp.applications.sgbd>.
patrick
2007-05-14 20:44:13 UTC
Permalink
merci pour ta réponse

excusez moi mais je débute j'ai trouvé un scripte sur le net et j'asseye
juste de l'adapter

je sais pas pour les accents mais c'est la correction de orthographe qui
ma changé les 'e' en 'é'

j'ai rajouté la ligne :error_reporting(E_ALL) et je n'ai pas d'erreur>
les 2 première requêtes fonctionnent
##############
$sql1=mysql_query('SELECT SUM(lb_debit) as total_debit FROM
`edc_livre_banque`');
$resa=mysql_fetch_assoc($sql1);
print ('total_debit: ');
echo $resa['total_debit'];
print (' Euros');
?>
<br>
<?php
$sql2=mysql_query('SELECT SUM(lb_credit) as total_credit FROM
`edc_livre_banque`');
$resb=mysql_fetch_assoc($sql2);
print ('total_credit: ');
echo $resb['total_credit'];
print (' Euros');
total_debit: 19625.92 Euros
total_credit: 17493.73 Euros
solde: -1 Euros
c'est ici que ça coinsse
le solde est toujours "-1"
<?php
$solde = ($sql1-$sql2);
print ('solde: ');
print ($solde);
print (' Euros');
?>
Yanick
2007-05-18 17:55:42 UTC
Permalink
[...]
<?php
$solde = ($sql1-$sql2);
print ('solde: ');
print ($solde);
print (' Euros');
?>
$sql1 et $sql2 sont des ressource MySQL, pourquoi essais-tu de les
soustraire ?

Si $resa['total_debit']; et $resb['total_credit']; te donnent les
valeurs que tu désires, pourquoi ne pas travailler avec ces variables-
là ?

$solde = $resa['total_debit'] - $resb['total_credit'];

devrait te retourner la bonne réponse.

Mais je te conseille une autre approche :

$result = mysql_query("SELECT SUM(lb_credit) as 'total credit',
SUM(lb_debit) AS 'total debit' FROM
`edc_livre_banque`");
$res = mysql_fetch_assoc($result);

echo "Total débit : " . $res['total debit'] . "\n";
echo "Total crédit : " . $res['total crédit'] . "\n";
echo "Solder : " . ($res['total debit'] - $res['total credit']);

Comme tu peux voir, une seule requête et tu as tout ce dont tu as
besoin. De plus, le tout est plus simple à lire... et qu'une seule
requête.

Remarque que (personnellement) je mets en double guillements la
requête et en simple guillement le nom des champs ; ceci te permet de
mieux cerner les différentes parties de te requêtes (qu'est-ce qui est
un champ ou un nom de champ, un mot-clé, etc.)

Je te réfère à la documentation de MySQL (http://dev.mysql.com/doc/
refman/5.0/fr/select.html) et à la doc de PHP MySQL (http://fr.php.net/
mysql)

P'tit Marcel
2007-05-12 10:15:57 UTC
Permalink
Post by patrick
j'essaie de faire une soustraction de données qui se trouve dans une bd
mysql
echo $solde[$resa - $resb];
echo $resa['total_débit'] - $resb['total_credit'];

au passage, note l'utilisation des guillemets pour délimiter les chaînes
de caractères.

a+
--
P'tit Marcel
patrick
2007-05-14 20:44:13 UTC
Permalink
voila j'ai trouvé

$sql4=mysql_query('SELECT SUM(lb_credit) - SUM(lb_debit) as solde FROM
`edc_livre_banque`');
$resd=mysql_fetch_assoc($sql4);
echo $resd['solde'];

merci
Continuer la lecture sur narkive:
Loading...