Probleme etrange html/javascript/php

WRInaute discret
Bonjour,
Dans l'appli que je suis en train de créer je tombe sur un os.
J'ai fais un ptit script en javascript qui fonctionne nickel (durant mes testes).
Il utilise des champs de formulaire cachés . Et c'est la que ça coince.
Car en fait durant mes testes j'avais mis des valeur numériques pour le debuggage et tout allait bien. Mais l'utilité de ce script et de récupérer des variables php venant d'une BDD et donc j'y met mes variables ça ne fonctionne plus.
Je précise que mes variables sont bonnes et qu'en plus si l'on regarde le code source on voit en clair mes valeurs venant de la BDD.
Donc si vous avez une idée je suis preneur.
 
WRInaute occasionnel
Peut etre une simple erreur de synthaxe non ?

On peut voir le code ? sinon on va pas pouvoir aider ...
 
WRInaute discret
Voici le code de mon script:
Code:
<SCRIPT LANGUAGE="javascript">

function traiter(){
var quantite=document.calculprix.quantite.value;
var quantite1=document.calculprix.quantite1.value;
var quantite2=document.calculprix.quantite2.value;
var quantite3=document.calculprix.quantite3.value;
var quantite4=document.calculprix.quantite4.value;
var quantite5=document.calculprix.quantite5.value;
var quantite6=document.calculprix.quantite6.value;
var prix1=document.calculprix.prix1.value;
var prix2=document.calculprix.prix2.value;
var prix3=document.calculprix.prix3.value;
var prix4=document.calculprix.prix4.value;
var prix5=document.calculprix.prix5.value;
var prix6=document.calculprix.prix6.value;

if((quantite > quantite1) && (quantite < quantite2)){
  document.calculprix.prix.value=prix1;
}
if((quantite > quantite2) && (quantite < quantite3)){
  document.calculprix.prix.value=prix2;
}
if((quantite > quantite3) && (quantite < quantite4)){
  document.calculprix.prix.value=prix3;
}
if((quantite > quantite4) && (quantite < quantite5)){
  document.calculprix.prix.value=prix4;
}
if((quantite > quantite5) && (quantite < quantite6)){
  document.calculprix.prix.value=prix5;
}
if((quantite > quantite6) && (quantite < 100000000)){
  document.calculprix.prix.value=prix6;
}
}
</SCRIPT>

mes champs cachés :
Code:
<input type="hidden" name="quantite1" value="<?php echo $data['quantite1']; ?>">
<input type="hidden" name="quantite2" value="<?php echo $data['quantite2']; ?>">
<input type="hidden" name="quantite3" value="<?php echo $data['quantite3']; ?>">
<input type="hidden" name="quantite4" value="<?php echo $data['quantite4']; ?>">
<input type="hidden" name="quantite5" value="<?php echo $data['quantite5']; ?>">
<input type="hidden" name="quantite6" value="<?php echo $data['quantite6']; ?>">
<input type="hidden" name="prix1" value="<?php echo $data['prix1']; ?>">
<input type="hidden" name="prix2" value="<?php echo $data['prix2']; ?>">
<input type="hidden" name="prix3" value="<?php echo $data['prix3']; ?>">
<input type="hidden" name="prix4" value="<?php echo $data['prix4']; ?>">
<input type="hidden" name="prix5" value="<?php echo $data['prix5']; ?>">
<input type="hidden" name="prix6" value="<?php echo $data['prix6']; ?>">

mon champ de saisie :
Code:
<input type="text" name="quantite" onchange="traiter();">

et le champ d'affichage :
Code:
<td><input type="text" name="prix">

Tous mes champs de formulaire sont dans un formulaire nomé calculprix.

Mais ce qui me fais bizar c'est que si tu remplace les <?php $data['...']; ?> pas des valeur numérique le script fonctionne.Et que si tu regarde le source ces variables sont des identités numériques.

Mes champs de saisie étaient au début en des balises php (donc avec les variables adaptées) et je les ai sorties pour voir si ça changeait quelque chose mais non en fait.
 
J
JPC
Guest
bonjour,

déjà, tu devrais utiliser des id="" et des document.getElementById('') plutot que d'appeler les elements par leur nom, et tu ne traite pas les cas ou quantite vaut exactement quantite2, quantite 3 etc, ni <=quantite1...

si une de tes valeurs n'est pas renseignée, tu vas te prendre une erreur javascript, il faudrait voir quelle erreur tu obtiens dans ton test...

hormis ces cas (quantite= quantite1 ou 2 ou 3 etc et toutes les valeurs renseignées) , ça devrait fonctionner si ton formulaire a bien name="calculprix"
 
WRInaute impliqué
regarde peut être du coté de parseFloat() parseInt() pour caster ta value qui doit être du type String
 
WRInaute discret
le probleme est que le script ne veut pas de mes valeurs php .
Pour les conseils sur les autres points je vous remercie mais rien n'est débuggé encore.
 
WRInaute impliqué
et en enlevant les ' ' ?

en gros passer de
<?php echo $data['quantite1']; ?>
à
<?php echo $data[quantite1]; ?>
 
WRInaute occasionnel
bozoleclown a dit:
et en enlevant les ' ' ?

en gros passer de
<?php echo $data['quantite1']; ?>
à
<?php echo $data[quantite1]; ?>

Ca va faire :

Notice : undefined constant quantite1, assumed 'quantite1'

Ce qui veut dire que t'utilises une constante quantite1 que tu n'as pas définie, et comme php comprend que tu sais pas coder, il corrige à ta place.

Autre exemple :

echo Hello . "World" . '!!!' , hahahaha;

La syntaxe est pourrie, c'est faux, mais ça passe quand meme. Merci php
 
WRInaute discret
Il faut croire que mon php ne veut pas m'aider car ça ne fonctionne pas lol
Mais bon si le developpement web commence a devenir une question de chance je vais me faire marabou :wink:
 
WRInaute occasionnel
Sinon, essaye la bonne vieille méthode: tu mets tes valeurs en numérique dans tes champs et tu remplaces 1 à 1 par son équivalent PHP, pour voir si ça bloque dès le départ.
Vérifie que tu n'ai pas d'espace et que tes valeurs soient biens considérées comme des entiers.
 
WRInaute discret
Merci tu viens de me faire comprendre pourquoi ça ne marchait pas.
Mes nombres sont des réels et pas des entiers.
Et comme j'ai pas testé avec des nombres réels au départ je comprenais pas .
Encore merci à tous et surtout à toi Jaunalgi
 
WRInaute impliqué
et si tu faisais un var_dump($data);

tu pourrais voir ce qu'il y a dedans et s'il y a bien une valeur à la référence prix1..6 et quantite1..6
 
Discussions similaires
Haut