Problème de récupération d'une variable

ML -  
 ML -
Bonjour, j'espère que quelqu'un pourra m'aider. En fait, j'ai créé une page en html assimilable à un formulaire. Lorsque je clique sur "Envoyer", c'est un fichier php qui se charge de "classer" les informations transmises par le formulaire afin d'envoyer un mail dans ma boîte, pour que je puisse moi-même faire mes statistiques.

Mon problème est le suivant : je voudrais aussi qu'apparaisse dans mon mail la durée de remplissage du formulaire. J'ai alors créé une fonction en javascript me permettant d'afficher (alert) les minutes et secondes, mais je n'arrive pas à "récupérer" ces deux variables dans le fichier php.

Comment puis-je faire ?? Merci beaucoup.

7 réponses

Reivax962 Messages postés 3742 Statut Membre 1 011
 
Bonjour,

Pour ce faire, il faut que tu crées dans ton formulaire deux champs cachés :

<input type="hidden" name="minutes" id="minutes" />
<input type="hidden" name="secondes" id="secondes" />

Ensuite, au moment où tu faisais ton "alert", fais plutôt

document.getElementById("minutes").value = #minutes#;
document.getElementById("secondes").value = #secondes#;

(si ton formulaire a un attribut name="truc", tu peux supprimer les "id" des champs cachés, et faire les appels plus simplement :

document.truc.minutes.value = #minutes#;
document.truc.secondes.value = #secondes#;
)

Les valeurs minutes et secondes seront passées de la même façon que le reste de ton formulaire à la page appelée par la bouton de soumission.

Xavier
0
ML
 
Merci pour tes conseils Xavier, mais cela ne semble pas fonctionner. Pour essayer d'avancer, je vais mettre les parties les plus "intéressantes" de mon code...

Entre <head> et </head> :
<script language="javascript">
 <!--
  function heuredebut()
  {  debut = new Date();
     Start = debut.getTime();
     alert("L'ordinateur mémorise l'heure de début...");
  }

  function calculeheure()
  {  var fin = new Date();
     var diff = (fin.getTime() - Start)/1000;
     var secondeabs = Math.round(diff);
     var seconderel = secondeabs % 60;
     var minuteabs = Math.round((secondeabs-30)/60);
     secondes = "" + ((seconderel > 9) ? seconderel : "0" + seconderel);
     minutes = "" + ((minuteabs > 9) ? minuteabs : "0" + minuteabs);
     alert("Temps passé : "+minutes+" minutes et "+secondes+" secondes.");
     document.formulaire.minutes.value = #minutes#;
     document.formulaire.secondes.value = #secondes#;
  }
 //-->
</script>


Entre <body> et </body> :
<body BACKGROUND="./fondmath.gif">
<script language="javascript">
  <!--
    heuredebut();
  //-->
</script>
   (...)
<FORM METHOD="post" action="sendmail2.php" name="formulaire" onsumit="calculeheure()"><div align="center">
<input type="hidden" name="minutes">
<input type="hidden" name="secondes">
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" bordercolorlight="#808080">
   (...)
<b><font color="#FF0000" size="5">Une fois cliqué sur "Envoyer", veuillez patienter 
un instant pendant l'envoi des données...</font><font size="4"><br>
<br>
</font></b>
<INPUT TYPE="submit" VALUE="Envoyer"></TD></TR>
</TABLE></div>
</FORM>
				
</body>


Et enfin, une partie de mon fichier sendmail2.php :
<?php
$msg = "";
if ($q17 == "")  { $expediteur = "bogosszen@msn.com"; }
else             { $expediteur = $q17; }
$destinataire = "bogosszen@msn.com";
$sujet = "Questionnaire sur les TICE";


// Récupération des variables provenant du formulaire
// et création des entrées correspondantes dans le mail qui sera envoyé
   (...)
  $msg .= "--------------------------------------------------\n\n";
  
  $min = $_POST['minutes'];
  $sec = $_POST['secondes'];
  $msg .= "J'ai passé $min minutes et $sec secondes à remplir ce questionnaire.";
  
mail($destinataire, $sujet, $msg, $expediteur);

echo("<HTML><HEAD>");
echo("<TITLE>Message d'envoi des données!</TITLE></HEAD><BODY BACKGROUND=./fondmath.gif>");
echo("<p align=center> </p><p align=center><font size=4 color=#800080><b>Vos réponses ont bien été 
enregistrées. Nous vous remercions de votre participation<br>
et vous souhaitons une agréable continuation.</b></font></p>");
echo("<p align=center><span style=letter-spacing: 2px><blink>
<span style=text-decoration: overline><u><font size=7 color=#FF0000>
<strong>MERCI !!!</strong></font></u></span></blink></span></p>");
echo("<p align=center>Vous pouvez maintenant fermer cette fenêtre ou cet onglet.</p></BODY></HTML>");

?>


Dans le mail que je reçois, la dernière phrase est alors : "J'ai passé minutes et secondes à remplir ce questionnaire.".

Petite question au passage : est-ce normal que mes "alert" ne s'affichent pas (je les ai essayer sur un ordi avec IE 6, c'est nickel, et chez moi avec IE 7 ou Mozilla 1.5, ça ne s'affiche pas) ?

Merci.
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Oui, évidemment ;)
     secondes = "" + ((seconderel > 9) ? seconderel : "0" + seconderel);
     minutes = "" + ((minuteabs > 9) ? minuteabs : "0" + minuteabs);
     alert("Temps passé : "+minutes+" minutes et "+secondes+" secondes.");
     document.formulaire.minutes.value = #minutes#;
     document.formulaire.secondes.value = #secondes#;
Quand j'ai écrit ça, c'était sans connaître le nom de tes variables. Il faut remplacer #minutes# par minutes et #secondes# par secondes ;)

Désolé, j'aurais dû préciser !

Xavier
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
(et pour tes alert() qui ne s'affichent pas, sous mozilla, tu as une console d'erreur qui pourra te donner une piste)
0
ML
 
Ok. Maintenant, j'ai la première alerte qui s'affiche (l'ordinateur mémorise l'heure de début...), mais pas la seconde, et le mail n'aboutit plus. Aurais-je encore une autre erreur ?

Désolé, je suis assez débutant, j'ai presque tout appris en un jour, le temps de faire mon formulaire... Merci à toi Xavier.
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Ah, c'est peut-être de ma faute :)

Même si elles sont vides, il se peut qu'il faille préciser les valeurs des champs hidden, sinon champ.value ne sera pas trouvé...

<input type="hidden" name="minutes" value="" />
<input type="hidden" name="secondes" value="" />

Ca donne quoi ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ML
 
Désolé, j'ai dû m'absenter. Modification faite, le comportement est presque le même que dans le message précédent : la première alerte s'affiche, mais dès que je clique sur Envoyer, il n'y a que la "page" de remerciements qui s'affiche. Le mail est bien envoyé (mais toujours "J'ai mis minutes et secondes à remplir ce questionnaire."), mais l'alerte ne s'affiche pas...
0
Reivax962 Messages postés 3742 Statut Membre 1 011
 
Je crois que j'ai trouvé :)
Dans ta balise form : onsumit="calculeheure()"
Au lieu de onsubmit="calculeheure()"

Non ?
0
ML
 
Merci beaucoup Xavier, ça marche nickel. Dire qu'une toute petite erreur peut engendrer autant de problème. En tout cas, merci à toi, beau boulot, et bonne soirée !!

;) Martial.
0