Activer un bouton ?

Mammouth du PHP | 545 Messages

11 déc. 2006, 01:13

Re,
Pour la citation, tu peux me citer. En régle générale je dis ce que je pense et j'assume.
Pour cetains c'est un défaut pour moi une qualité. A chacun de juger.
C'était un copier/coller et j'ai pas chercher plus loin que de mettre la citation :lol:
Le onblur="JavaScript:nom_fonction(this);"

Comme tu l'as compris le '&#058' (il manque le ; si je le mts il le transforme en :) c'est le code HTML pour écrire le caractère : (deux points). J'avais au départ mis les deux points mais le parseur de code les transforme en '&#058' (surement parce que je l'ai mis entre les balises php au lieu des balises code).
Je devenais vraiment fou avec ce truc ... je restais complètement bloqué dessus !
L'intérêt du paramètre this.

Tou simplement je passe à la fonction le champ lui même ce qui me permet d'exploiter dans la fonction le "caractéristiques" qui m'intéressent.
Dans ce cas son contenu(la valeur) chpTemps.value mais aussi de forcer un évenement chpTemps.focus().

Un autre intérêt, c'est de pouvoir utiliser la même fonction pour le même type de champ (seul le champ - this - est différent)
Même avec le changement précédent, la fonction ne me détecte pas d'erreur et pourtant il y en a une car je ne remplis aucun champs !

Pour bien s'immaginer ce que je veux faire c'est ici qui est un site où j'essaye tout et n'importe quoi ! En l'occurence, je vous laisse la version précédente avec les 2 boutons ... la version actuelle ne me renvoit pas les message d'erreur que j'attends.

Merci pour tout
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

11 déc. 2006, 01:24

Re,

Le même code (j'ai juste ajouté les deux autres champs)
Modifié en dernier par Ajoloca le 11 déc. 2006, 01:45, modifié 1 fois.
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

11 déc. 2006, 01:32

Re,

Cela ne peut pas être le même code, ça ne fonctionne pas chez moi ... j'ai dû me planter quelque part !

Je vais essayer de faire une bonne nuit et demain je péle la bête !

Merci, je sais plus ou moins où chercher ! :twisted:
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

11 déc. 2006, 11:41

Salut,

Un nouveau jour qui commence pour moi sous une bonnes étoiles car il y a du mieux et du vraiment mieux ... il y avait une différence dans la fonction utilisé que je me suis empêché de corriger !

Résultat:
Le test se fait correctement et renvoit une erreur mais il faut avoir préalablement cliqué dans le champs sinon, impossible d'avoir un message d'errerur en actionnant le bouton 'submit' ... que dois-je faire par rapport à cela ?
Concernant les champs de saisis, j'ai un peu changer la ligne de texte pour avoir ceci:
<input type="text" name="tempsp1" id="tempsp1" value="00:00:00" size="6" maxlength="8" onblur="verifTemps(this);" />
J'ai encore une question par rapport à la fonction 'verifTemps' que Ajoloca me propose c-à-d:
// document.validation(verifTemp(chpTemps), verifFormulaire()) 
function verifTemps(chpTemps){
   			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 += t;
   			}
   			// 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);
   			}
			} 
Puis-je y coller un 'else' pour que le calcul de vitesse s'opére ? Voici la fonction de calcul en PHP qui avait été faite:
// Fonction de calcul de la vitesse
function vitesse($tempsp, $palier, $facteur) {
    if($tempsp != 0) return ($palier*$facteur/$tempsp);
	return (false);
} 
Si je venais à lui coller ce 'else' et que l'on venait par la suite à changer le palier 3 (seul palier qui peut varier), n'y aura-t-il pas un problème ?

Merci

NB Maintenant que j'ai un model, je continu à bosser de mon coté sur le test des autres champs ... je vous donnerai des nouvelles que vous pouvez toujours suivre ici !
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

11 déc. 2006, 13:12

Re ... c'est encore moi !

Je continus mon petit bonhomme de chemin ... j'ai fait les test sur les autres saisies et cela fonctionne ! Comme j'avais envie d'un peu changer et d'apporter de l'amélioration, je me suis dans l'idée de créer un bouton 'Protocole de Test' qui me permettrait d'enlever tout ce texte avant le test tout en laissant la possibilité au visiteur de s'en faire une idée en cliquant sur le bouton qui ouvrirait une fenêtre avec tout le protocol !

C'est bien là que ce complique mon histoire car je ne voulais pas faire un lien vers une page extérieur mais utiliser une fonction (je commence à aimer ces bêtes là) et j'ai donc créer mon bouton de cette façon :
<input name="button" type="button" value="Protocole de test" onClick="protocole(this)"/></td>
et une fonction comme suit:
function protocole (){
		window.alert("Le C.A.T.- test est un test de course r&eacute;elle, sur le terrain, en trois paliers progressifs de vitesse. <BR /> * Déroulement sur piste plate et étalonnée; <BR /> * Utilisation d un cardio-fréquencemètre, <BR /> * Échauffement léger de dix minutes.")
		}
en me disant que la mise en page doit être comme pour le HTML ... et bien non, c'est pas si facile et vous pouvez vous en rendre compte sur le lien précédement donné !

Alors j'oublies ce procédé ou y-a-t-il une astuce ?

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

11 déc. 2006, 13:55

Bonjour,

Pour ce que tu cherches à faire, il faut partir sur une autre aproche

Regarde du coté de window.open() de JavaScript.

Ou bien de la balise <div></div> et des propriétés CSS display et z-index.
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

12 déc. 2006, 00:00

Salut,

Une journée entière à me gratter la tête pour me rendre compte que, puisque cela fonctionnait en appelant directement les pages, cela ne pouvait venir que du portail !

Après des recherches, je suis enfin tombé sur la solution:
function open_Window(theURL,winName,features) {
  	window.open(theURL,winName,features);
	}
<input name="button" type="button" value="Protocole du test" 
onClick="open_Window('<?php echo "$mosConfig_live_site"; ?>
/components/com_cat/html/protocole.html','protocole','scrollbars=yes,resizable=yes,width=500,height=400');"/>
Maintenant, je commence à y voir un peu plus clair ... passons à l'étape suivante !

A+
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

12 déc. 2006, 01:12

Re,

Dans mon test, j'aimerai savoir ce qu'il est mieux de faire (en fonction de la faisabilité aussi !):
1 Améliorer la fonction Javascript pour que le calcul de vitesse se fasse automatiquement
2. Utiliser le bouton submit pour générer une nouvelle page avec les résultats

Pour info: J'ai déjà les fonctions PHP de calcul pour le 2e choix
// Fonction de calcul de la vitesse
function vitesse($tempsp, $palier, $facteur) {
    if($tempsp != 0) return ($palier*$facteur/$tempsp);
 return (false);
} 

// Fonction d'évaluation de la récupération
function recup($fcrecup, $fcp3){
   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");
} 
J'aimerai mieux que le 2e choix soit la meilleure solution car j'ai comme qui dirait un problème avec le javascript :roll:

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

15 déc. 2006, 23:45

Salut,

Où en suis aujourd'hui ?
Après avoir dû changer les facteurs (évidement, ce n'est pas Excell ici), le code est capable d'appliquer la bonne réponse à la vitesse 1 et 2 par contre, je n'arrrive pas à récupérer la valeur du palier 3 !

Voici le code:
// code repris du fichier PHP *************************************************
     // Fonction de calcul de la vitesse
function vitesse($tempsp, $palier) {
	if($tempsp != 0) return ((Math.round((($palier/$tempsp) / 60  ) * 100 )) / 100);
    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] ))
           + ( 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 :
            // Ici cela devient coton car je n'arrive pas à récupérer la variable du combobox !
			// $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;
		  
        }
     }
	} 
En effet, si pour le palier 1 et 2 les valeurs sont 800m sans choix possible, il n'en est rien pour le palier 3 que je saisis ainsi:
                    <select name="palier3" size="1" id="palier3">
                      <option value="1000" selected="selected">1000 m - D&eacute;butant</option>
                      <option value="1500">1500 m - Sprinter</option>
                      <option value="2000">2000 m - Niveau moyen</option>
                      <option value="3000">3000 m - Bon niveau</option>
                    </select>
Peut-être qu'une bonne âme de passage pourrait me filer un coup de main ou un bon tuyau ?

D'avance, merci.
Sebe

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