Page 1 sur 1

Problème de NaN

Posté : 03 avr. 2018, 08:21
par jeanluc974
Bonjour à tous,
Je suis débutant en javascript et j'essaye de créer une alerte dans ma petite application php.

Le contexte : Un utilisateur rentre des valeurs via un formulaire, de là je met en place une alerte lui indiquant si sa rétrocession est inférieur ou supérieur à 56.
J'utilise des variables php que je passe via des input type"hidden", ici je les ai déjà remplies, dans mon appli elles seront renseignées par la bdd.

voici le code :

Code : Tout sélectionner

<?php 
$prix_materiel=15500; 
$taux_ri=44.12; 
$frais1=0;
$frais2=0;
$tva1=1317.50;
$tva2=0;
?>
<form action="" method="post" enctype="multipart/form-data" name="" id="formulaireFinancement" class="formulaire">
<input type="hidden" name="prix_materiel" id="prix_materiel" value="<?php echo $prix_materiel; ?>">
<input type="hidden" name="taux_ri" id="taux_ri" value="<?php echo $taux_ri; ?>">
<input type="hidden" name="frais1" id="frais1" value="<?php echo $frais1; ?>">
<input type="hidden" name="frais2" id="frais2" value="<?php echo $frais2; ?>">
<input type="hidden" name="tva1" id="tva1" value="<?php echo $tva1; ?>">
<input type="hidden" name="tva2" id="tva2" value="<?php echo $tva2; ?>">

<input type="text" name="montant_2" id="montant_2"  class="input_form">
<input type="text" name="montant_subvention" id="montant_subvention" class="input_form">
<input type="text" name="deduction_base" id="deduction_base" onblur="RetroCession()" class="input_form">

<script>
function RetroCession()
{
var retro=parseFloat(document.getElementById("formulaireFinancement").elements['montant_2'].value);
if (!isNaN (retro))
{
var montant_2 = parseFloat(document.getElementById("formulaireFinancement").elements['montant_2'].value);
var deduction_base = parseFloat(document.getElementById("formulaireFinancement").elements['deduction_base'].value);
var montant_subvention = parseFloat(document.getElementById("formulaireFinancement").elements['montant_subvention'].value);
var prix_materiel = parseFloat(document.getElementById("formulaireFinancement").elements['prix_materiel'].value); 
var tvanpr = parseFloat(document.getElementById("formulaireFinancement").elements['tva1'].value); 
var taux_ri = parseFloat(document.getElementById("formulaireFinancement").elements['taux_ri'].value);
var tva_percue = parseFloat(document.getElementById("formulaireFinancement").elements['tva2'].value);
var frais1 = parseFloat(document.getElementById("formulaireFinancement").elements['frais1'].value);
var tva_net = (tvanpr)+(tva_percue) ; // debug ok c'est number
var apport_net = (montant_2)-(tva_net) ; // debug ok c'est number
var total1 = (prix_materiel)+(frais1) ; // debug ok c'est number
var total2 = (tvanpr)+(montant_subvention)+(deduction_base) ; // debug ok c'est number
var base_defisc = (total1)-(total2) ; // debug ok c'est number
var montant_ri = (base_defisc)*(taux_ri) ; // debug ok c'est number
var retro_ok = 56 ; // debug ok c'est number
var retrocession = (apport_net/montant_ri)*10000 ; // debug ok c'est number

   if (retrocession < retro_ok)
    {
        alert("ATTENTION votre rétrocession est inférieur à 56%. Elle est de : "+retrocession+" %");
        //alert("Votre retrocession est de : "+retrocession+" %.");
    }
   else
    {
        alert("Votre rétrocession est de : "+retrocession+" %.");
        //alert("Votre retrocession 1 net est de : "+retrocession_1);
    }
}else
{
alert("Vous devez entrer un chiffre, en utilisant le . comme séparateur");
}
}</script>
Donc mon problème est que quand j'utilise cette méthode (en remplissant déjà mes variables php, j'ai bien mon réusltat, si je les remplies via la bdd j'ai un NaN.
J'ai effectué des débugs avec Typeof et toutes mes variables sont "true".
Je n'y comprend plus rien.

Merci de votre aide.

Re: Problème de NaN

Posté : 03 avr. 2018, 13:23
par Frosty
Bonjour,
Il y a de grandes chances qu'il y ait un problème avec la récupération des données depuis la BDD.
Si tu fais un "echo" des variables concernées juste avant les input hidden ça donne quoi ?
Est-ce que l'affichage des erreurs PHP est activé ?
Pour être sûr :
* au début de ton code

Code : Tout sélectionner

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
* dans ton php.ini

Code : Tout sélectionner

display_errors = on
https://stackoverflow.com/a/21429652/488666

Re: Problème de NaN

Posté : 03 avr. 2018, 15:21
par jeanluc974
Bonjour et merci pour ta réponse,

J'ai testé de ce côté et j'ai bien mes valeurs.

Re: Problème de NaN [résolu]

Posté : 03 avr. 2018, 15:42
par jeanluc974
Bonjour,
C'est réglé, en fait j'ai vérifié mes entrées saisies et comme il se peu qu'il y ai une saisie vide alors NaN....

du coup j'ai rajouté :

Code : Tout sélectionner

if(document.getElementById("formulaireFinancement").elements['montant_subvention'].value == "")
{
	var montant_subvention = 0;
}
else
{
var montant_subvention = parseFloat(document.getElementById("formulaireFinancement").elements['montant_subvention'].value);
}
Ca fonctionne. enfin ...

Merci pour vos réponses.

Re: Problème de NaN

Posté : 03 avr. 2018, 17:36
par Frosty
Super ; content que ce soit résolu et merci d'avoir partagé tes conclusions :)