Salut tout le forum,
J’ai besoin de votre aide.
dans un de mes projets j'ai un problème de synchronisation avec une boucle for et le lancement d'une fonction suivant le résultat de la boucle for
Le code javascript
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 $(document).ready(function () { $("#formulaire").submit(function () { if (document.getElementById("exerciceTermine").value == "Non" && verifierSiComplet() != 1) { document.getElementById("nbreTentative").value++; var nbreErreur = 0; for (let i = 1; i <= 3; i++) { var reponse = $('#' + i + '').val(); $.post('../page/comparer.php', { reponse: reponse, i:i }, function (donnees) { if (donnees == 0) { nbreErreur = 1; document.getElementById(i).className = "mauvaiseReponse"; document.getElementById("evaluation").value = Number(document.getElementById("evaluation").value) - 0.5; } else if (donnees == 1) { document.getElementById(i).className = "bonneReponse"; } }) } if (nbreErreur == 0) { document.getElementById("exerciceTermine").value = "Oui"; enregistrerEvaluation(); } } return false; }) }); function verifierSiComplet() { for (var i = 1; i <= 3; i++){ if (document.getElementById(i).value == "") { alert("Impossible de corriger, il manque au moins une réponse."); return 1; } } } function enregistrerEvaluation() { var nbreTentative = $("#nbreTentative").val(); var evaluation = $("#evaluation").val(); $.post('../page/envoyer.php', { nbreTentative: nbreTentative, evaluation: evaluation }, function () { }) }
La page comparer.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 <?php if(isset($_POST['reponse']) && !empty($_POST['reponse'])) { include("/var/www/connexionBddIntervention.php"); $chReponse = $bddIntervention->prepare('SELECT reponse FROM reponses'); $chReponse->execute(); $reponse = $chReponse->fetch(); $reponses = unserialize($reponse['reponse']); $chReponse->closeCursor(); $emplacement = $_POST['i'] - 1; if($_POST['reponse'] != $reponses[$emplacement]){ echo 0; }else{ echo 1; } } ?>
La page envoyer.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <?php if(isset($_POST['nbreTentative'],$_POST['evaluation']) && !empty($_POST['nbreTentative']) && !empty($_POST['evaluation'])){ include("/var/www/connexionBddIntervention.php"); $in = $bddIntervention->prepare("INSERT INTO candidatReponses (nbrTentatives, nbrPoints) VALUES(:nbrTentatives, :nbrPoints)"); $in->bindValue('nbrTentatives', $_POST['nbreTentative'], PDO::PARAM_INT); $in->bindValue('nbrPoints', $_POST['evaluation'], PDO::PARAM_INT); $in->execute(); $in->closeCursor(); } ?>
A la soumission du formulaire le if (nbreErreur == 0) {} est franchi immédiatement avant la fin de la boucle for
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 if (nbreErreur == 0) { document.getElementById("exerciceTermine").value = "Oui"; enregistrerEvaluation(); }
Comment faire pour que cette condition ne soit franchie qu'une fois la boucle for terminée.
Merci pour votre aide.
Partager