Calcul d'une vitesse !

Mammouth du PHP | 545 Messages

14 déc. 2006, 14:36

Bonjour,

Je ne suis pas certain d'être dans le bon forum bien que ce soit une question de fonction Javascript ... je suis désolè si c'est le cas !

Comme vous allez pouvoir le remarquer, je ne suis qu'un débutant de Javascript et la fonction en question a été faite en grande partie par
dans un autre post.

Déjà, voyons le problème tournant sur mon site (d'essaies) !

Si vous remplissez le champs du temps sur 4', nous devrions récupérer une valeur de '200'm/minutes au lieu de '0.00205761316872428'm/minutes ... ce qui ne colle ni de loin, ni de près !

2 fonctions sont utilisées pour l'affichage:
// code repris du fichier PHP *************************************************
     // Fonction de calcul de la vitesse
     function vitesse($tempsp, $palier, $facteur) {
         if($tempsp != 0) return ($palier*$facteur/$tempsp);
      return (false);
     } 
//Fin de la reprise ***********************************************************
  // Test du champs temps
  function verifTemps(chpTemps, v_field){
      var tempTab = chpTemps.value.split(':');
      var temps = 0;
      for(i = 0; i < tempTab.length; i++){
         // Conversion de la valeur en entier
         var t = parseInt(tempTab[i]);
         // Teste si la valeur est un chiffre
         if(isNaN(t)){
            alert('Seuls les chiffres sont acceptés');
            chpTemps.value = '00:00:00';
            chpTemps.focus();
            return(true);
         }
         // Teste si les minutes et (ou) les secondes
         // sont comprises entre 0 et 59
         if(i != 0 && tempTab[i] > 59){
            alert('Les minutes ou les secondes ne peuvent exéder 59');
            chpTemps.value = '00:00:00';
            chpTemps.focus();
            return(false);
         }
         // Cumul du temps
      }
      temps = (( Number( tempTab[0] ) * 3600 ) + ( Number( tempTab[1] ) *60 ) + ( Number( tempTab[2] )) ;
      alert(temps);
      // Si cumul <= 0 return faux (invalide)
      if(temps <= 0) {
          alert('Le temps doit être supérieur ou égal à une seconde');
          chpTemps.value = '00:00:00';
          chpTemps.focus();
          return(true);
     } else {
           alert(v_field);
          switch (v_field){
          case 1 : 
               $palier = 800;
               $facteur = 1/(24*60);
               vitesse1 = vitesse(temps, $palier, $facteur);
               document.forms.test.vitesse1.readonly = false;
               document.forms.test.vitesse1.value = String( vitesse1 );
               document.forms.test.vitesse1.readonly = true;

          case 2 :
               $palier = 800;
               $facteur = 1/(24*60);
               vitesse2 = vitesse(temps, $palier, $facteur);
               document.forms.test.vitesse2.readonly = false;
               document.forms.test.vitesse2.value = String( vitesse2 );
               document.forms.test.vitesse2.readonly = true;

// Reste encore à travailler le reste

          case 3 :
               $palier = $palier3;
               $facteur = 1/(24*60);
               vitesse3 = vitesse(temps, $palier, $facteur);			   
			   document.forms.test.vitesse3.readonly = false;
               document.forms.test.vitesse3.value = String( vitesse3 );
               document.forms.test.vitesse3.readonly = true;
          
		  case 4 :
               document.forms.test.vma. readonly = false;
               document.forms.test.vma. value = "nouvelle_valeur";
               document.forms.test.vma. readonly = true;
		  
          }

     }
} 
Je pense que le problème vient du fait que je n'utilise pas un temps décimal ! ? !

Vous avez des idées pour moi ?

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

14 déc. 2006, 15:37

Re,

J'ai en partie [réglé] mon problème ... il y a vait un double emploie de variable !

La 1er fonction devient:
function vitesse($tempsp, $palier) {
         if($tempsp != 0) return (($palier/$tempsp) / 60  );
      return (false);
     } 
pour la 2e, j'ai opéré qq changements:
  // Test du champs temps
  function verifTemps(chpTemps, v_field){
      var tempTab = chpTemps.value.split(':');
      var temps = 0;
      for(i = 0; i < tempTab.length; i++){
         // Conversion de la valeur en entier
         var t = parseInt(tempTab[i]);
         // Teste si la valeur est un chiffre
         if(isNaN(t)){
            alert('Seuls les chiffres sont acceptés');
            chpTemps.value = '00:00:00';
            chpTemps.focus();
            return(true);
         }
         // Teste si les minutes et (ou) les secondes
         // sont comprises entre 0 et 59
         if(i != 0 && tempTab[i] > 59){
            alert('Les minutes ou les secondes ne peuvent exéder 59');
            chpTemps.value = '00:00:00';
            chpTemps.focus();
            return(false);
         	}
         // Cumul du temps
      }
      temps = (( Number( tempTab[0] ))
             + ( Number( tempTab[1] ) / 60 )
             + ( Number( tempTab[2] ) / 3600 ) ) ;
      alert(temps);
      // Si cumul <= 0 return faux (invalide)
      if(temps <= 0) {
          alert('Le temps doit être supérieur ou égal à une seconde');
          chpTemps.value = '00:00:00';
          chpTemps.focus();
          return(true);
     } else {
           alert(v_field);
          switch (v_field){
          case 1 : 
               $palier = 800;
			   
               vitesse1 = vitesse(temps, $palier);
               document.forms.test.vitesse1.readonly = false;
               document.forms.test.vitesse1.value = String( vitesse1 );
               document.forms.test.vitesse1.readonly = true;

          case 2 :
               $palier = 800;
               
               vitesse2 = vitesse(temps, $palier);
               document.forms.test.vitesse2.readonly = false;
               document.forms.test.vitesse2.value = String( vitesse2 );
               document.forms.test.vitesse2.readonly = true;

          case 3 :
               $palier = $palier3;
               
               vitesse3 = vitesse(temps, $palier);			   
			   document.forms.test.vitesse3.readonly = false;
               document.forms.test.vitesse3.value = String( vitesse3 );
               document.forms.test.vitesse3.readonly = true;
          
		  case 4 :
               document.forms.test.vma. readonly = false;
               document.forms.test.vma. value = "nouvelle_valeur";
               document.forms.test.vma. readonly = true;
		  
          }

     }
} 
Maintenant que dois-je faire pour:
- que la vitesse ne comporte que 2 chiffres après la virgule ?
TROUVE
 // Fonction de calcul de la vitesse
	function vitesse($tempsp, $palier) {
         if($tempsp != 0) return ((Math.round((($palier/$tempsp) / 60  ) * 100 )) / 100);
      return (false);
     } 
- que lorsque je remplis le 1er champs, pour que la réponse n'apparaît pas dans tous les champs 'vitesse' voir ici

Merci
Sebe

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