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 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()
    }
Et le
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