magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007
-
15 oct. 2007 à 14:09
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007
-
23 oct. 2007 à 11:41
Bonjour,
J'ai un formulaire avec un champ texte Commentaire qui doit prendre en compte plusieurs données pour afficher le résultat voulu.
Comment faire pour que le calcul prenne en compte plusieurs variables ?
exemple :
function commente(imc) {
if (imc>=22 && imc<23) {
if (taille<160)
if (form.sexe.value==2)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 1 qui correspond à une perte de 3 à 5 kg." ;
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 15 oct. 2007 à 14:26
Bonjour,
<hr size="2" width="100%" />
if (imc>=22 && imc<23)
{ if (taille<160)
{ if (form.sexe.value==2)
{ les 3 conditions sont vraies }
else { les 2 1ères sont vraies }
}
else { la 1ère est vraie, pas la 2ème, la 3ème n'est pas testée }
}
else { la 1ère n'est pas vraie, les 2 autres ne sont pas testées }
<hr size="2" width="100%" />
if ( imc>=22 && imc<23 && taille<160 && form.sexe.value==2 )
{ les 3 conditions sont vraies }
else { au moins une n'est pas vraie }
<hr size="2" width="100%" />
ça dépend donc de ce qu'on veut faire
regarder aussi du coté de switch ( zone )
{ case valeur_1:
traitement...
break;
case valeur_2:
...
default:
}
<hr /> Cordialement Bul [mon Site] [M'écrire]
<hr />
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007 15 oct. 2007 à 15:33
Merci beaucoup, mais je ne m'en sort pas. Je n'arrive pas à ce que je veux.
Si je vous donne mon formulaire et mon script, pouvez-vous m'aider à trouver pourquoi cela ne marche pas ?
Encore merci de me donner un peu de votre temps, car de mon côté, je m'arrache les cheveux ...
}
function calculImc(form) {
form.imc.value = form.poids.value * 10000/(form.taille.value*form.taille.value) ; //arrondi 2 chiffres apres la virgule
form.commentaire.value = commente(form.imc.value) ;
}
function commente(imc) {
if (imc<19) {
return "Vous êtes maigre. Vous ne devez pas entreprendre de régime." ;
}
if (imc>=19 && imc<22) {
return "Votre poids est correct. Vous n'avez pas besoin de perdre du poids." ;
}
if (imc>=22 && imc<23)
{ if (taille<160)
{ if (form.sexe.value==2)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 1 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=22 && imc<23)
{ if (taille>=160 && taille<175)
{ if (form.sexe.value==2)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 2 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=22 && imc<23)
{ if (taille>=175)
{ if (form.sexe.value==2)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 3 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=22 && imc<23)
{ if (taille<170)
{ if (form.sexe.value==1)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 3 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=22 && imc<23)
{ if (taille>=170 && taille<185)
{ if (form.sexe.value==1)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 10 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=22 && imc<23)
{ if (taille>=185)
{ if (form.sexe.value==1)
return "Votre poids est correct mais vous êtes un peu enveloppé(e). Nous vous proposons un PROGRAMME 11 qui correspond à une perte de 3 à 5 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille<160)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 4 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille>=160 && taille<175)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 5 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille>175)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 6 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille<170)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 6 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille>=170 && taille<185)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 12 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=23 && imc<25,5)
{ if (taille>185)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids. Nous vous proposons un PROGRAMME 13 qui correspond à une perte de 5 à 7 kg." ;
}
if (imc>=25,5)
{ if (taille<160)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 7 qui correspond à une perte de 7 à 10 kg." ;
}
if (imc>=25,5)
{ if (taille>=160) && taille<175)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 8 qui correspond à une perte de 7 à 10 kg." ;
}
if (imc>=25,5)
{ if (taille<175)
{ if (form.sexe.value==2)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 9 qui correspond à une perte de 7 à 10 kg." ;
}
if (imc>=25,5)
{ if (taille<170)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 9 qui correspond à une perte de 7 à 10 kg." ;
}
if (imc>=25,5)
{ if (taille>=170) && taille<185)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 14 qui correspond à une perte de 7 à 10 kg." ;
}
if (imc>=25,5)
{ if (taille<185)
{ if (form.sexe.value==1)
return "Vous êtes en surpoids excessif, vous devez perdre du poids pour votre santé. Nous vous proposons un PROGRAMME 15 qui correspond à une perte de 7 à 10 kg." ;
}
}
</script>
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 15 oct. 2007 à 15:49
ce n'est probablement pas une question javascript, mais de logique.
fait un schéma, résoud "en français"... d'abord puis traduit en javascript.
<hr /> Cordialement Bul [mon Site] [M'écrire]
<hr />
Vous n’avez pas trouvé la réponse que vous recherchez ?
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007 17 oct. 2007 à 17:05
Bonjour,
J'ai bien bossé et je sens que j'y suis presque.
Peux-tu me dire pourquoi ce script ne marche pas ? Où est la faute ?
function calculProg(form) {
if (form.sexe.value==1) {
if (form.taille.value<170) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfait ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 3 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 6 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 9 est pour vous"
}
}
}
}
}
}
}
if (form.sexe.value==1) {
if (form.taille.value>=170 && form.taille.value<185) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfait ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 10 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 12 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 14 est pour vous"
}
}
}
}
}
}
}
if (form.sexe.value==1) {
if (form.taille.value>185) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfait ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 11 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 13 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 15 est pour vous"
}
}
}
}
}
}
}
if (form.sexe.value==2) {
if (form.taille.value<160) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfaite ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 1 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 4 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 7 est pour vous"
}
}
}
}
}
}
}
if (form.sexe.value==2) {
if (form.taille.value>=160 && form.taille.value<175) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfaite ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 2 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 5 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 8 est pour vous"
}
}
}
}
}
}
}
if (form.sexe.value==2) {
if (form.taille.value>175) {
if (form.perte.value<1) {
form.commentaire.value = "Vous êtes parfaite ainsi !"
} else {
if (form.perte.value>=1 && form.perte.value<3) {
form.commentaire.value = "Le Programme Douceur est pour vous"
} else {
if (form.perte.value>=3 && form.perte.value<5) {
form.commentaire.value = "Le Programme 3 est pour vous"
} else {
if (form.perte.value>=5 && form.perte.value<7) {
form.commentaire.value = "Le Programme 6 est pour vous"
} else {
if (form.perte.value>=7) {
form.commentaire.value = "Le programme 9 est pour vous"
}
}
}
}
}
}
}
}
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 17 oct. 2007 à 20:37
Bonjour,
Perso sans préjuger du reste j'aurai plutôt fait un truc du style
function calculProg(form) {
//-- Pour ameliorer la lisibilite var Comment = "Vous êtes parfait ainsi !"
var Perte = form.perte.value
var Taille = form.taille.value;
if( form.sexe.value==1) {
if( Taille < 170){
if( Perte >= 1)
Comment = "Le Programme Douceur est pour vous"
if( Perte >= 3)
Comment = "Le Programme 3 est pour vous"
if( Perte >= 5)
Comment = "Le Programme 6 est pour vous"
if( Perte >= 7)
Comment = "Le programme 9 est pour vous"
}
}
...ETC....
//-- On affecte a la fin
form.commentaire.value =Comment;
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 18 oct. 2007 à 08:57
moi je préfère :
if( form.sexe.value==1) {
if( Taille < 170)
{
if (Perte >= 7)
Comment = "Le programme 9 est pour vous";
else { if (Perte >= 5)
Comment = "Le Programme 6 est pour vous";
else { if (Perte >= 3)
Comment = "Le Programme 3 est pour vous";
else { if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
mais bon, c'est rien que pour emmouscailler PetoleTeam. ;o))
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007 18 oct. 2007 à 09:57
Bonjour et merci pour votre aide.
Pour emmouscailler Petole Team, ta version ne marche pas. Rien n'apparaît dans mon champs texte Commentaire.
Voici le script que j'ai écrit d'après tes conseils :
function calculProg(form) {
var Comment = "Vous êtes parfait ainsi !"
var Perte = form.perte.value
var Taille = form.taille.value ;
if (form.sexe.value==1) {
if (Taille<170){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 3 est pour vous"
if (Perte>=5)
Comment = "Le Programme 6 est pour vous"
if (Perte>=7)
Comment = "Le programme 9 est pour vous"
}
}
if (form.sexe.value==1) {
if (Taille>=170){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 10 est pour vous"
if (Perte>=5)
Comment = "Le Programme 12 est pour vous"
if (Perte>=7)
Comment = "Le programme 14 est pour vous"
}
}
if (form.sexe.value==1) {
if (Taille>=185){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 11 est pour vous"
if (Perte>=5)
Comment = "Le Programme 13 est pour vous"
if (Perte>=7)
Comment = "Le programme 15 est pour vous"
}
}
if (form.sexe.value==2) {
if (Taille<160){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 1 est pour vous"
if (Perte>=5)
Comment = "Le Programme 4 est pour vous"
if (Perte>=7)
Comment = "Le programme 7 est pour vous"
}
}
if (form.sexe.value==2) {
if (Taille>=160){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 2 est pour vous"
if (Perte>=5)
Comment = "Le Programme 5 est pour vous"
if (Perte>=7)
Comment = "Le programme 8 est pour vous"
}
}
if (form.sexe.value==2) {
if (Taille>=175){
if (Perte>=1)
Comment = "Le Programme Douceur est pour vous"
if (Perte>=3)
Comment = "Le Programme 3 est pour vous"
if (Perte>=5)
Comment = "Le Programme 6 est pour vous"
if (Perte>=7)
Comment = "Le programme 9 est pour vous"
}
}
form.commentaire.value = Comment ;
}
Et pour emouscailler aussi Bultez (y'a pas de raison !), ta version ne marche pas non plus. Voici le script selon tes conseils :
function calculProg(form) {
var Perte = form.perte.value
var Taille = form.taille.value ;
if (form.sexe.value==1) {
if (Taille < 170) {
if (Perte >= 7)
Comment = "Le programme 9 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 6 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 3 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
if (form.sexe.value==1) {
if (Taille >= 170) {
if (Perte >= 7)
Comment = "Le programme 14 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 12 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 10 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
if (form.sexe.value==1) {
if (Taille >= 185) {
if (Perte >= 7)
Comment = "Le programme 15 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 13 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 11 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
if (form.sexe.value==2) {
if (Taille < 160) {
if (Perte >= 7)
Comment = "Le programme 7 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 4 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 1 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
if (form.sexe.value==2) {
if (Taille >= 160) {
if (Perte >= 7)
Comment = "Le programme 8 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 5 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 2 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
if (form.sexe.value==2) {
if (Taille >= 175) {
if (Perte >= 7)
Comment = "Le programme 9 est pour vous";
else {if (Perte >= 5)
Comment = "Le Programme 6 est pour vous";
else {if (Perte >= 3)
Comment = "Le Programme 3 est pour vous";
else {if (Perte >= 1)
Comment = "Le Programme Douceur est pour vous";
}
}
}
}
}
form.commentaire.value = Comment ;
}
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 18 oct. 2007 à 11:53
Bonjour,
Traites nous de Blaireau pendant que tu y es...et tu auras RAISON car le problème est ailleurs, nous sommes en présence, me semble t-il, je ne me mouille plus, d'un problème de cohérence de données a comparer.
form.nom_du_champ.value retourne une STRING et non un ENTIER voir un FLOTTANT, donc...il faut convertir avant usage les comparaisons étant faite sur des nombres
var Perte = parseFloat(form.perte.value); // conversion en flottant
var Taille = parseFloat(form.taille.value);
// etc...pour les autres données à manipuler..
et moi qui pensais qu'il s'agissait d'un problème d'encapsulage de if, je lirais dorénavant le topic en plein.
PS : je me trompe peut être encore d'ailleurs...
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007 18 oct. 2007 à 12:26
Désolée, je ne voulais pas te vexer. J'ai essayé ce que tu m'a recommandé, mais sans succès.
Je suis sûre moi aussi que c'est un problème de cohérence mais je vois pas où il se trouve.
Mon script prend en compte 3 conditions pour calculer la réponse à donner : la Taille, le Sexe et la Perte.
La Taille et le Sexe sont saisis dans un formulaire (données non calculées), par contre, la Perte est calculée grâce à un autre script (qui marche). La Perte est calculée en fonction de la Taille et du Poids (données non calculées).
J'ai associé les 2 scripts à 2 boutons différents. Est-ce cela qui peut poser problème ?
PetoleTeam
Messages postés3426Date d'inscriptionlundi 26 décembre 2005StatutMembreDernière intervention14 janvier 201117 18 oct. 2007 à 17:12
Bonjour,
Vexé Oui d'avoir laissé cela mais pour le reste...
Ce qui a été écrit avant reste vrai concernant les données à manipuler, néanmoins tu peux affecter à un bouton une multitude de fonction du type
le plus clair étant pour des raison de lisibilité de mettre une fonction qui regroupe les autres
avec une fonction comme ceci
function Fct_Calculer( form_){
Fct_1( form_);
Fct_1( form_);
Fct_1( form_);
...etc...
Fct_n( form_);
}
Autre chose pendant que l'on y est, évite d'utiliser des mots reservés comme paramètre ou comme variable, IE et FireFox ne les interpréteront pas forcément de la même manière, voila le pourquoi de this.form en paramètre des fonctions.
A toi de jouer et de nous dire...
magalidelmas
Messages postés9Date d'inscriptionlundi 15 octobre 2007StatutMembreDernière intervention23 octobre 2007 22 oct. 2007 à 10:45
Bonjour,
Je suis arrivée à mes fins (enfin presque !) mais j'ai dû séparer mes 2 scripts. Ils fonctionnent, mais sur 2 pages différentes ... Sur la même page, il ya un conflit. OU ????
Bref, j'avance car mon patron me tanne.
J'ai encore une petite question. Comment arrondir mes résultats de calcul à 1 chiffre après la virgule ? A quel endroit de mon script (ci-dessous) je dois insérer cette fonction ? MERCI.