Calcul d'une vitesse !

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Calcul d'une vitesse !

par Sebe » 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

Calcul d'une vitesse !

par Sebe » 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