calculs en PHP

Mammouth du PHP | 702 Messages

13 mars 2012, 17:46

Bonjour à tous, j'ai une requête, qui est censé me renvoyer un nombre mais elle me renvoit rien. Or pourtant toutes les conditions sinequa none sont bien vérifiées.

Voici le code.
 <td width="150" bgcolor="#EEEEEE">SOMMES ENCAISSEES</td>

                    <td width="153" align="right" bordercolor="#D9D9D9" bgcolor="#EEEEEE"><?php $sql3 = 'SELECT SUM(montant) as montant FROM versements WHERE n_doss=' . $_GET['n_doss'] . '';

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

while($data2 = mysql_fetch_assoc ($req3)) 

{ ?>
                      <?php if (empty($data2['montant'])) {

echo '0,00'; }

else { echo $data2['montant']; }

 ?>
                      <?php } ?>
 &euro;</td>

                    <td width="55" align="center" bordercolor="#D9D9D9" bgcolor="#EEEEEE"> </td>
                </tr>

                <tr>
                    <td width="150" bgcolor="#D9D9D9">A NOUS REVENIR</td>

                    <td width="153" align="right" bordercolor="#D9D9D9" bgcolor="#D9D9D9"><?php $valeur2 = ($data2['montant']* $user['bareme'])/100 ; echo $valeur2 ?> &euro;</td> 
en fait je veux récupérer un pourcentage sur un montant et ce montant est la somme totale de divers versements. lorsque je fais un echo pour les versements, tout apparait bien comme il faut, mais cette valeur n'est pas prise en compte pour le calcul.

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 17:49

Vérifies ce que tu as dans $user['bareme'].
De plus vu que tu n'as qu'un seul enregistrement ta boucle while() ne sert pas à grand chose.

Mammouth du PHP | 702 Messages

13 mars 2012, 17:51

dans bareme j'ai bien un nombre (7)

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 17:52

Donc 100% représente 7€ ? ;)

Mammouth du PHP | 702 Messages

13 mars 2012, 17:54

non, 7 c'est le pourcentage applicable.

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 18:00

Au temps pour moi, je n'avais pas lu le HTML.

As-tu supprimé la boucle ? Car il doit tenter de la parcourir une seconde fois et donc écraser le résultat trouvé.
Jamais testé en pratique, mais ce serait de bonne logique selon moi.

Mammouth du PHP | 702 Messages

13 mars 2012, 18:05

bah si je supprimes la boucle il ne va pas ma faire la somme des versements?

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 18:08

La boucle est inutile, pas le calcul qui est dedans. ;)
//...
while( $data = mysql_fetch_array($res) ){
  // ...
}
revient dans le cas d'un enregistrement unique à :
// ...
$data = mysql_fetch_array($res);
// ...
Car mysql_fetch_xxx renvoie false lorsqu'il n'y a plus d'enregistrement, mais sinon elle renvoie le n-uplet trouvé (ce qui est donc différent de false et on rentre dans l'itération de la boucle).

Mammouth du PHP | 702 Messages

13 mars 2012, 18:11

mais concrètement, je ne comprends pas, je le laisse ou le supprime? si je le supprimes je le remplace par quoi? Cordialement.

ViPHP
xTG
ViPHP | 7331 Messages

13 mars 2012, 18:50

//...
while( $data = mysql_fetch_array($res) ){
  // ...
}
revient dans le cas d'un enregistrement unique à :
// ...
$data = mysql_fetch_array($res);
// ...

Mammouth du PHP | 2278 Messages

13 mars 2012, 21:47

$data = mysql_fetch_array($res); // avec grande raison
SUGGESTION découlant des remarques précédentes et de la lecture du code visible...
// mais d'où sort ce $user['bareme']? c'est visiblement un tableau mais ça coûterait peu d'écrire:
$bareme = $user['bareme']; print "<br> bareme $bareme";
et de se servir de cette variable dans le calcul...
Vanitas vanitatum et omnia vanitas
Mes derniers livres :
Sauvez les Mots chez BoD,
Tous les chemins mènent à ROM chez BoD