Salut à tous!

merci à vous qui prenez le temps de lire ce message

Petite présentation du code défaillant :

1) Un bouton "message" est placé sur mon site.

2) en cliquant sur ce bouton, une division dédiée aux messages persos s'ouvre (ainsi qu'une en-tête, pas important). En outre, la fonction "actualiser_messages" est appelée.

3) cette fonction envoie une requête (ajax) pour récupérer les messages dans ma bdd. Les infos recueillies sont renvoyées sous le format :
id-nom-prenom/message-message|id-nom-prenom/message-message-message ...
(id, nom, prenom de l'envoyeur)

4) les données reçues sont alors triées de façon à afficher toutes les conversations (1 par personne ).
Le nom de l'envoyeur ainsi que le premier message y figure.

5) En cliquant sur une conversation, les messages s'affichent à la place des conversations.


Voici le code :

Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
<div id="messages_persos"> Messages </div>
<div id="en-tete"> 
  <div id="fermeture"> X </div>  
</div>
<div id="conversations">
</div>
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
 var div_message = document.getElementById('messages_persos');
 var div_conversations = document.getElementById('conversations');
 var entete = document.getElementById('en-tete');
 div_message.onclick = function() {
	 entete.style.display = 'block';	
	 div_conversations.style.display = 'block';	
         actualiser_messages();		 
 };
 document.getElementById('fermeture').onclick = function () { div_conversations.style.display = 'none'; entete.style.display = 'none'; };
function actualiser_messages() {
  var xhr = new XMLHttpRequest();
  xhr.open('GET','nv_messages.php');
  xhr.onreadystatechange = function () { 
      if (xhr.readyState == 4 && xhr.status == 200){
	    var reponse = xhr.responseText;
		  if(reponse.length){
			 var tab_reponses = reponse.split('|'),
			     tab_reponses_long = reponse.length;
		div_conversations.innerHTML='';   	 
			for ( var i=0, div; i<tab_reponses_long; i++){
			   div=div_conversations.appendChild(document.createElement('div'));
			   var conversation = tab_reponses[i].split('/');
			   var expediteur = conversation[0].split('-');
			   var messages = conversation[1].split('-');
			   div.innerHTML = '<span>'+expediteur[1]+' '+expediteur[2]+'</span> <br/>'+messages[0];
			   var messages_len = messages.length;
			   div.onclick = function (){
				div_conversations.innerHTML='';  
				for (var j=0, div2; j<messages_len; j++){
					div2=div_conversations.appendChild(document.createElement('div'));
					div2.innerHTML=messages[j];
				}
			}; 
		}  
	}
   }
}; 
  xhr.send(null);	
 }

Le problème ?

Tout va très bien jusqu'à l'étape 4, le nom s'affiche, ainsi que le premier message. Mais à l'étape 5, en cliquant sur une conversation (n'importe laquelle), c'est forcement les messages de la dernière conversation de la boucle qui s'affichent.

Quelqu’un aurait-il une idée du problème?
Merci d'avance