Bonjour,
Je suis en train de créer un site dont l'objet est de proposer à un utilisateur une liste de phrases dont il devra repérer la faute qui s'y trouve. Pour cela, il devra cliquer sur le mot fautif (chaque clic provoquant une insertion en bdd pour mémoriser la position du mot cliqué dans la phrase).
Une fois que l'utilisateur a cliqué sur toutes les phrases proposées (phase 1), une page distincte est chargée d'afficher toutes ces phrases et de vérifier s'il a donné les bonnes réponses (phase 2).
J'utilise le code suivant pour la phase 2 :
Je souhaite pouvoir mettre en surbrillance pour chaque phrase le mot sur lequel l'utilisateur a précédemment cliqué.
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 <?php $req = $base->prepare('SELECT Texte AS Phrase, positionCliquee ...'); $req->bindParam('QuestionnaireId', $QuestionnaireId, PDO::PARAM_INT); $req->execute(); $i=1;//numérotation mot dans la phrase while($donnees = $req->fetch(PDO::FETCH_ASSOC)) { $mots = preg_split("/[ ]+/u", $donnees ['Phrase']); $positionCliquee = $donnees ['positionCliquee']; foreach($mots as $span){ $string_span = '<span class="span" id="mot_'.$i.'">'.$span.' </span>'; echo $string_span; // affichage phrase $i++; }//fin foreach $num++; }//fin while
Exemple : si $donnees ['Phrase'] vaut "Chose promise, chose dut.", le traitement preg_split aboutit au résultat suivant :
et si le visiteur a cliqué, lors de la phase 1, sur le mot n° 4 ($positionCliquee = 4), le mot "dut" devra être mis en surbrillance (ou en gras).
Code : Sélectionner tout - Visualiser dans une fenêtre à part <span class="span" id="mot_1">Chose</span> <span class="span" id="mot_2">promise,</span> <span class="span" id="mot_3">chose</span> <span class="span" id="mot_4">dut.</span>
Ce traitement devra être reproduit pour chaque phrase affichée (en fonction de la position du mot cliqué).
Voyez-vous comment procéder pour aboutir à ce résultat ? Merci.
Partager