Problème de NaN

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
jeanluc974
Messages : 3
Enregistré le : 03 avr. 2018, 08:15

Problème de NaN

Message par jeanluc974 » 03 avr. 2018, 08:21

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.

Avatar du membre
Frosty
Messages : 116
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Problème de NaN

Message par Frosty » 03 avr. 2018, 13:23

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

jeanluc974
Messages : 3
Enregistré le : 03 avr. 2018, 08:15

Re: Problème de NaN

Message par jeanluc974 » 03 avr. 2018, 15:21

Bonjour et merci pour ta réponse,

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

jeanluc974
Messages : 3
Enregistré le : 03 avr. 2018, 08:15

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

Message par jeanluc974 » 03 avr. 2018, 15:42

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.

Avatar du membre
Frosty
Messages : 116
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Problème de NaN

Message par Frosty » 03 avr. 2018, 17:36

Super ; content que ce soit résolu et merci d'avoir partagé tes conclusions :)

Répondre