Bonjour,
J'essaie de coder un tchat avec le framework PHP Laravel (MVC) et un code Javascript vanilla et AJAX.
Je parviens à envoyer mes messages en base de données ainsi qu'à les afficher dans le tchat, cependant j'ai mis un setInterval pour actualiser le tchat toutes les x secondes, or à chaque actualisation je vois l'intégralité des messages être affichés. Je ne souhaiterais évidemment afficher que les derniers messages postés. Pourriez vous m'aider svp ?
Voici leEt le
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 function msgLoader() { let xmlhttp = new XMLHttpRequest() xmlhttp.onreadystatechange = function() { if(this.readyState == 4) { if(this.status == 200){ let messages = JSON.parse(this.response) let discut = document.querySelector("#discut") messages.reverse() for(let message of messages){ discut.innerHTML = '<div class=\"flex justify-end mb-4\"><div class=\"mr-2 py-3 px-4 bg-blue-400 rounded-bl-3xl rounded-tl-3xl rounded-tr-xl text-white\">' + message.content + "</div></div>" + discut.innerHTML lastID = message.id } } } } xmlhttp.open("GET", "msgLoader/"+lastID) xmlhttp.send() }
Code PHP : 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 public function msgLoader(Request $request, $lastID) { if($request->isMethod('GET')){ $msgs = DB::table('messages') ->select('content') ->where('id', '>', $lastID) ->take(5) ->get(); $messagesJSON = json_encode($msgs); echo $messagesJSON; } else{ return response()->json(['message' => 'no']); } }
En vous remerciant par avance
Partager