Page 1 sur 1

troncature nombre

Posté : 14 mars 2012, 11:59
par piotrowski-s
Bonjour à tous, j'ai deux requêtes qui m'affichent deux nombres différents. Je formates ces nombres pour un affichage de meilleure qualité.
Le nombre 1 est défini par cette requête:
<?php $sql7 = 'SELECT SUM(montant) as montant FROM factures WHERE n_doss=' . $_GET['n_doss'] . '';

$req7 = mysql_query ($sql7) or die ('Erreur SQL !<br>'.$sql7.'<br>'.mysql_error ()); 

while($data9 = mysql_fetch_assoc ($req7)) 

{ ?>
                      <?php $pp=$data9['montant'] ;
					  if (empty($data9['montant'])) {

echo '0,00'; }

else { 
 $pp = $data9['montant'] ; $nbr2 = $pp;

// Notation française
$pp = number_format($nbr2, 2, ',', ' ');
// 1 234,56
echo $pp; }

 ?>
                      <?php } ?>                      &euro;
Le second par une requête similaire:
<?php $sql5 = 'SELECT SUM(montant) as montant FROM versements WHERE n_doss=' . $_GET['n_doss'] . '';

$req5 = mysql_query ($sql5) or die ('Erreur SQL !<br>'.$sql5.'<br>'.mysql_error ()); 

while($data9 = mysql_fetch_assoc ($req5)) 

{ ?>
                      <?php  $nbr4=$data9['montant'] ;
					   if (empty($data9['montant'])) {

echo '0,00'; }

else {

// Notation française
$rgt = number_format($nbr4, 2, ',', ' ');
// 1 234,56
echo $rgt; }

 ?>
                      <?php } ?>
La synthèse est une différence entre ces deux nombres, à savoir:
<?php $solde1 = $pp - $data9['montant'] ; 

echo $solde1 ; ?> &euro;
Pour le premier nombre apparait: 19 857,32 €
Pour le second: 221,12 €
Je ne comprends pas pourquoi la soustraction n'est pas faite correctement, car il m'affiche "19 €".

D'avance merci pour l'aide.

Re: troncature nombre

Posté : 14 mars 2012, 12:13
par Mazarini
Il faut remplacer :
<?php $solde1 = $pp - $data9['montant'] ; 

echo $solde1 ; ?> &euro;
par
<?php 

echo 'pp = ',$pp,'<br>';
echo '$data9['montant'] = ',$data9['montant'],'<br>';
$solde1 = $pp - $data9['montant'] ; 
echo $solde1 ; ?> &euro;
comme ca on sera sur de ce que contiennent tes variables.

Re: troncature nombre

Posté : 14 mars 2012, 12:20
par piotrowski-s
ça me dit que les variables contiennent ça:
) Parse error: syntax error, unexpected T_STRING, expecting ',' o

Re: troncature nombre

Posté : 14 mars 2012, 12:32
par piotrowski-s
pp = 19 857,32
data9 = 221,12
-202 €

Voila la synthèse.

la différence entre les deux ne fait pourtant pas ce montant...

Re: troncature nombre

Posté : 14 mars 2012, 12:47
par piotrowski-s
Résolu :) Réponse:
    <?php 
$pp = str_replace(array(' ', ','), array('', '.'), $pp);
$rgt = str_replace(array(' ', ','), array('', '.'), $rgt);

$solde1 = $pp - $rgt ; 
$sd1 = number_format($solde1, 2, ',', ' ');
echo $sd1 ; ?> 

Re: troncature nombre

Posté : 14 mars 2012, 15:11
par Mazarini
Je pense que tu as compris le problème.

Par contre il faut que tu sois plus rigoureux dans le contenu de tes variables. Essayes d'avoir que des variables avec des nombres et ne fais la conversion que lorsque tu en as besoin. Conversion juste après la saisie (variable $_POST ou $_GET) et conversion juste avant l'affichage.

Tu sembles avoir les capacités pour programmer, mais il me semble que tu manques de bonnes habitudes, ce qui est normal quand on commence. Reprends tes programmes pour voir si tu peux les simplifier et les rendre plus "joli". Par exemple, mettre des noms de variables plus explicites serait pas mal.