Toujours des variables!

prouillac Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 29 décembre 2007 - 28 déc. 2007 à 00:21
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 30 déc. 2007 à 09:34
Bonjour,
Soit un  QCM en JavaScript :
Je ne parviens pas à faire passer la variable javascript nommée Score (cette variable  est le score obtenu par l'élève à la fin de l'exercice) dans le champ "value" d'un formulaire afin de la récupérer dans une page PHP.
Autrement dit: l'élève fait son exercice. A la fin son score s'affiche ("Votre score est de ...%"). Dans un formulaire, il entre son nom et son prénom, et il envoie. Par PHP, je récupère bien son nom et son prénom , ainsi que la date et l'heure de l'exercice (qui s'écrivent dans un fichier .txt ou .html), mais je n'arrive pas à récupérer son score! Or, c'est ce dont j'ai surtout besoin.Ca fait des jours et des nuits que je sèche!
Je mets dans le formulaire un champ "hidden" avec  name="note" et  value="la_variable _Score" mais elle ne passe pas dans $_POST ['note'] . Pouvez-vous  m'aider?
Merci.

8 réponses

Moritus Messages postés 130 Date d'inscription jeudi 22 décembre 2005 Statut Membre Dernière intervention 23 novembre 2011
28 déc. 2007 à 02:54
essai


moi je fais comme ca


echo "";


dans un de mes script


je ne suis pas expert en javascript mais si tu met ton code je peut essai de t'aider


@+
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 déc. 2007 à 08:14
Hello,

montre comment tu l'initialises, cette variable js, et tu la passes au champ note.
0
prouillac Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 29 décembre 2007
28 déc. 2007 à 10:42
Merci à Moritus et à malalam pour leurs réponses.

La partie du code qui génère la variable Score est :
[Code<script type= "text/javascript">
function CalculateOverallScore(){
 var TotalWeighting = 0;
 var TotalScore = 0;
 
 for (var QNum=0; QNum<State.length; QNum++){
  if (State[QNum] != null){
   if (State[QNum][0] > -1){
    TotalWeighting += I[QNum][0];
    TotalScore += (I[QNum][0] * State[QNum][0]);
   }
  }
 }
 if (TotalWeighting > 0){
  Score = Math.floor((TotalScore/TotalWeighting)*100);
 }
 else{
//if TotalWeighting is 0, no questions so far have any value, so
//no penalty should be shown.
  Score = 100; </script> Code]

Ensuite, dans le formulaire, je mets ceci:


<form method=post action=reponses.php>
Nom:Prénom

Enfin, le script "reponses.php" est le suivant:
[ Code <?php
//Ouverture du fichier en écriture
$fp = fopen("reponses.html",a);


//On convertit les caracteres html
$nom = htmlspecialchars($_POST['nom']);
$prenom = htmlspecialchars($_POST['prenom']);
$score = htmlspecialchars($_POST['note']);


$d = date ( "d/m/Y H:i:s" );
 
$page = "";
$page .= "$nom $prenom $score $d
<hr>\n";
//On rajoute le message
fwrite($fp,"$page" ,strlen("$page"));


//fermeture du fichier
fclose($fp);


echo "Merci, $prenom"
echo "votre score a bien été  enregistré";
?>Code]
Dans mon fichier "reponses.html" , je récupère parfaitement nom, prenom, et date, mais pas le score. Je ne sais comment faire.
Merci de bien vouloir m'éclairer.
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
28 déc. 2007 à 11:12
peut être que j'ai tout faux mais je ne vois pas la déclaration de ta variable je ne vois que : Score = Math.floor((TotalScore/TotalWeighting)*100);
Ma question est donc où est la déclaration de ta variable ???Score ............... n'est pas une déclaration il faudrai que tu initialise ta variable : var Score .....................
 
0

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

Posez votre question
sidf Messages postés 1216 Date d'inscription mardi 20 décembre 2005 Statut Membre Dernière intervention 18 octobre 2012 5
28 déc. 2007 à 17:14
salut

au vu de ça,
je dirai que le nom de ta variable est note et nom score
et pour la charger en js

if (TotalWeighting > 0){
  Score = Math.floor((TotalScore/TotalWeighting)*100);

ce serait plutot

if (TotalWeighting > 0){
document.forms[0].note.value = Math.floor((TotalScore/TotalWeighting)*100);
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
28 déc. 2007 à 18:54
Ou plus joli, mettre un id à ton formulaire (id="myFrm" par exemple) et :
with(document.getElementById('myFrm')) {
    note.value = Math.floor((TotalScore/TotalWeighting)*100);

}
0
prouillac Messages postés 3 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 29 décembre 2007
29 déc. 2007 à 22:50
Bonjour,
Je le mets où, ce
with(document.etc... ?
Et il sertà quoi, exactement?
Depuis le temps que j'écume les forums de javascript et php, je constate que chacun a des solutions, et qu'aucune ne marche. N'y a-t-il donc pas UN moyen simple de récupérer des variables?
Merci de votre compréhension.
PS: Pour répondre à Nicomilville, la variable est initialisée à 0 au début du script, qui est très long. Mais cela ne change rien au fait que ladite variable ne passe pas dans la page reponses.php, quelle que soit la valeur qu'elle puisse prendre.
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
30 déc. 2007 à 09:34
Si tu veux mettre la valeur d'une variable JS dans la valeur d'un champ de formulaire, la seule solution est de la lui assigner.
Où tu dois mettre ce code, il n'y a que toi qui puisse répondre. Et cette solution fonctionne. Celle de Sidf (qui est la même hein...juste écrite différemment) aussi. Si ça ne fonctionne pas chez toi, c'est que tu t'y prends mal simplement.
Sidf t'a bien montré les choses : tu remplaces le code où tu assignes ta valeur à "score" par ce code. Quand ce code JS sera appelé, ton champ "note" prendra cette valeur, et à soumission, tu la retrouveras dans $_POST['note'].
0
Rejoignez-nous