prouillac
Messages postés3Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention29 décembre 2007
-
28 déc. 2007 à 00:21
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDerniè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.
prouillac
Messages postés3Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention29 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']);
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.
nicomilville
Messages postés3472Date d'inscriptionlundi 16 juillet 2007StatutMembreDernière intervention28 février 201436 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 .....................
Vous n’avez pas trouvé la réponse que vous recherchez ?
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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);
prouillac
Messages postés3Date d'inscriptionjeudi 27 décembre 2007StatutMembreDernière intervention29 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.
malalam
Messages postés10839Date d'inscriptionlundi 24 février 2003StatutMembreDernière intervention 2 mars 201025 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'].