Fonction d'évaluation

Mammouth du PHP | 545 Messages

20 déc. 2006, 18:13

Salut,

Encore un soucis pour moi aujourd'hui !

Je désire créer une fonction JavaScript qui me retourne une appréciation sur la récupération après un effort. Cette apprèciation utilisera 2 données:
<input name="fcp3" type="text" id="fcp3" value="0" size="3" maxlength="3" onblur="verifFc(this);" />
et
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(this);" />
Si pour la fonction 'verifFc' cela ne pose pas de problème, il n'en va pas de même pour la fonction 'evalRecup' car j'ai déjà un problème pour le 2e alert qui ne me renvoit rien !
// **************************** Fonction test des champs FC ****************************
function verifFc(chpFc) {
	var fcTab = chpFc;
	var fc = Number(chpFc.value);
	// alert (fc);
	if(fc < 20 || fc > 220){
    	alert('La FC doit être comprise dans des limites raisonnables !');
        chpFc.value = '0';
        chpFc.focus();
        return(false);
    	}
	}
// **************************** Fin de la fonction test des champs FC ****************************




// **************************** Fonction d'évaluation de la récupération ****************************
// ne fonctionne pas !
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	alert("La FC du palier 3 est de " + fcM);
//	if(fcrecup == 0 || fcp3 == 0) return(" "); //Pas de message d'erreur !
//    if(fcrecup < (fcp3 * 0.5652)) return("Excellente");
//    if(fcrecup < (fcp3 * 0.5815)) return("Très bonne");
//    if(fcrecup < (fcp3 * 0.6033)) return("Bonne");
//    if(fcrecup < (fcp3 * 0.6304)) return("Moyenne");
//    if(fcrecup < (fcp3 * 0.663)) return("Médiocre");
//    if(fcrecup < (fcp3 * 0.6902)) return("Mauvaise");
//    return("Très mauvaise");
    } 
// **************************** Fin de la fonction d'évaluation de la récupération ****************************
Pour le reste (tous les '//'), ce sont des restes d'une fonction PHP !

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

20 déc. 2006, 18:17

Stop, y'a des choses qui commence à entrer !
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(fcrecup, fcp3);" />
Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
ViPHP | 1961 Messages

20 déc. 2006, 18:21

Stop, y'a des choses qui commence à entrer !
<input name="fcrecup" type="text" id="fcrecup" value="0" size="3" maxlength="3" onblur="verifFc(this); evalRecup(fcrecup, fcp3);" />
Merci
Je doute que ça fonctionne.

Tu crois qu'a ce niveux il connait fcp3 ???
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 545 Messages

20 déc. 2006, 18:27

Tu crois qu'a ce niveux il connait fcp3 ???
Oui, la valeur dans l'alert correspond !
Je doute que ça fonctionne.
Mais que tu doute bien ... je ne sais pas comment renvoyer la valeur :roll:
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	alert("La FC du palier 3 est de " + fcM);
	if(fcR == 0 || fcp3 == 0) return(" "); //Pas de message d'erreur !
    if(fcR < (fcM * 0.5652)) return("Excellente");
    if(fcR < (fcM * 0.5815)) return("Très bonne");
    if(fcR < (fcM * 0.6033)) return("Bonne");
    if(fcR < (fcM * 0.6304)) return("Moyenne");
    if(fcR < (fcM * 0.663)) return("Médiocre");
    if(fcR < (fcM * 0.6902)) return("Mauvaise");
    return("Très mauvaise");
    } 
Si tu as un tuyau ... Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
ViPHP | 1961 Messages

20 déc. 2006, 18:34

Re,
Change ceci

Code : Tout sélectionner

evalRecup(fcrecup, fcp3);
par

Code : Tout sélectionner

evalRecup(fcrecup, document.getElementById('fcp3'));
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 545 Messages

20 déc. 2006, 18:45

J'ai fait la transformation dans le champs 'input' mais est-ce que je dois faire cela aussi dans la fonction ... cela fonctionne déjà !

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

ViPHP
ViPHP | 1961 Messages

20 déc. 2006, 18:49

Logiquement non, car tu recupères dans ta fonction

Code : Tout sélectionner

var fcM = Number(fcp3.value);
pour tes calculs.
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Mammouth du PHP | 545 Messages

20 déc. 2006, 20:35

Suis-je dans le bon pour faire mon test ?
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	alert("La FC du palier 3 est de " + fcM);
	if ((fcrecup==0) || (fc3==0)) return 0;
		switch (fcrecup)
		{
		case (fcM * 0.5652): return "Excellente";break;
		case (fcM * 0.5815): return "Très bonne";break;
		case (fcM * 0.6033): return "Bonne";break;
		case (fcM * 0.6304): return "Moyenne";break;
		case (fcM * 0.6902): return "Mauvaise";break;
		default: return "Très mauvaise";break;
		}
    } 
Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Mammouth du PHP | 545 Messages

21 déc. 2006, 12:12

Salut,

Décidement, je ne trouve pas la solution ... je dois passer à coté de quelque chose car je n'ai même pas les alerts dans le 'switch' qui s'affiche:
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	alert("La FC du palier 3 est de " + fcM);
	// if ((fcrecup==0) || (fc3==0)) return 0;
		switch (fcR, fcM)
		{
		case (fcR < (fcM * 0.5652)): // recup = "Excellente";
		alert ("Eval récup Excellente");
		break;
		case (fcR < (fcM * 0.5815)): // recup = "Très bonne";
		alert ("Eval récup Très bonne");
		break;
		case (fcR < (fcM * 0.6033)): // recup = "Bonne";
		alert ("Eval récup Bonne");
		break;
		case (fcR < (fcM * 0.6304)): // recup = "Moyenne";
		alert ("Eval récup Moyenne");
		break;
		case (fcR < (fcM * 0.6902)): // recup = "Mauvaise";
		alert ("Eval récup Mauvaise");
		break;
		default: // recup = "Très mauvaise";
		alert ("Eval récup est impossible");
		}
    } 
Comment est-ce possible ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

21 déc. 2006, 12:54

Salut,

Je ne pense pas que cette syntaxe soit très appréciée par le JS :-k
switch (fcR, fcM)
Je sais que c'est une ancienne fonction PHP mais je ne suis pas sûr que le JS soit d'accord :P
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 545 Messages

21 déc. 2006, 13:14

Salut,

Quel(s) conseille(s) me donnes-tu parce que je ne vois pas de porte de sortie ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Eléphanteau du PHP | 32 Messages

21 déc. 2006, 13:18

Et bien ne pourrais tu pas utilisé des if et else if ?

Mammouth du PHP | 545 Messages

21 déc. 2006, 14:15

Et bien ne pourrais tu pas utilisé des if et else if ?
Ok, c'est dans la boîte !
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	alert("La FC du palier 3 est de " + fcM);
	// if ((fcrecup==0) || (fc3==0)) return 0;

if (fcR < (fcM * 0.5652)) alert ("Eval récup Excellente");
else if (fcR < (fcM * 0.5815)) alert ("Eval récup Très bonne")
else if (fcR < (fcM * 0.6033)) alert ("Eval récup Bonne")
else if (fcR < (fcM * 0.6304)) alert ("Eval récup Moyenne")
else if (fcR < (fcM * 0.6902)) alert ("Eval récup Mauvaise")
else alert ("Eval récup est impossible");
Pas d'autres problème avant que je ne devellope ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!

Eléphanteau du PHP | 32 Messages

21 déc. 2006, 14:31

Oublie pas les point virgule après tes alert
function evalRecup(fcrecup, fcp3){
    var fcR = Number(fcrecup.value);
    alert("La FC après 5 minutes de récupération est de " + fcR);
    var fcM = Number(fcp3.value);
    alert("La FC du palier 3 est de " + fcM);
    // if ((fcrecup==0) || (fc3==0)) return 0;

if (fcR < (fcM * 0.5652)) 
  alert ("Eval récup Excellente");
else if (fcR < (fcM * 0.5815)) 
  alert ("Eval récup Très bonne");
else if (fcR < (fcM * 0.6033)) 
  alert ("Eval récup Bonne");
else if (fcR < (fcM * 0.6304)) 
  alert ("Eval récup Moyenne");
else if (fcR < (fcM * 0.6902)) 
  alert ("Eval récup Mauvaise");
else 
  alert ("Eval récup est impossible");

Mammouth du PHP | 545 Messages

21 déc. 2006, 16:58

Voilà c'est dans la boîte ... merci pour les ';' que j'avais oublié !
Donc voici ma fonction:
// **************************** Fonction d'évaluation de la récupération ****************************
function evalRecup(fcrecup, fcp3){
	var fcR = Number(fcrecup.value);
	// alert("La FC après 5 minutes de récupération est de " + fcR);
	var fcM = Number(fcp3.value);
	// alert("La FC du palier 3 est de " + fcM);
	var recup = " ";
	if (fcR < (fcM * 0.5652)) { 
		recup = "Excellente";
		//alert ("Eval récup Excellente");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}
	else if (fcR < (fcM * 0.5815)) {
		recup = "Très bonne";
		//alert ("Eval récup Très bonne");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}
	else if (fcR < (fcM * 0.6033)) {
		recup = "Bonne";
		//alert ("Eval récup Bonne");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}		
	else if (fcR < (fcM * 0.6304)) {
		recup = "Moyenne";
		//alert ("Eval récup Moyenne");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}
	else if (fcR < (fcM * 0.6902)) {
		recup = "Mauvaise";
		//alert ("Eval récup Mauvaise");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}
	else {
		recup = "Très mauvaise";
		//alert ("Eval récup est Très mauvaise");
		document.forms.test.recup.readonly = false;
        document.forms.test.recup.value = String( recup );
        document.forms.test.recup.readonly = true;
		}
	//alert ("Recup est "+ recup);	
	}
// **************************** Fin de la fonction d'évaluation de la récupération ****************************
Vous ne voyez pas de problème pouvant en découler ?

Merci
Sebe

Pour moi, le PHP est une nouvelle aventure qui a commencée fin octobre 2005 ... c'est plus exitant que le HTML!