PHP Wenn neuer Eintrag in MySql Datenbank

CHTMLVBFeli

Mitglied
Liebe Leute,
Ich programmiere einen Chat.
Bisher muss alle 5 Sekunden neu geladen werden.
Geht das auch ohne neu laden?
Also abfragen, ob ein neuer Eintrag in der Datenbank vorhanden ist und den dann ausgeben.
Vielen Dank im Voraus!
Liebe Grüße
CHTMLVBFeli :D:D:D:D:D:D
 
Hallo CHTMLVBFeli,

am einfachsten schickst du alle 5 Sekunden per AJAX (bzw. JavaScript) eine Anfrage an dein PHP-Skript.

Dann gäbe es noch die Möglichkeit, dass du Push-Nachrichten verschickst über Websockets. Also dass dein JavaScript keine Anfrage schickt, sondern Daten bekommt, wenn es neue Nachrichten gibt.

Einfaches AJAX-Beispiel:
Javascript:
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function()
{
  if (xhr.readyState==4)
    alert(xhr.responseText);
}
xhr.open("GET", "myscript.php?question=newMessages");
xhr.send(null);
Dies schickt eine Anfrage an myscript.php mit dem GET-Parameter question und gibt bei Erhalt einer Antwort diese auch aus.
 
Siehe mein Beispiel in Post 4.

Bei deiner Applikation würde ich dann noch einen Parameter namens lastMsgDate, in dem das Datum der letzten Nachricht steht, hinzufügen. So kann dein PHP-Skript nur die Nachrichten seit diesem Datum abrufen zu zurückgeben.
 
Hat ComFreek doch gerade gepostet :suspekt:

PHP-Seitig sollte es für dich ja kein Problem sein, wenn du es bis jetzt mit Neuladen geschafft hast.

edit: Weil die Zeit lokal/Server unterschiedlich sein kann, würde ich die Serverzeit
bei einer Anfrage mitgeben, zum Zwischenspeichern mit JS.
Und wenn wer den Chat erst aufmacht, hat er noch keine Zeit
und bekommt zB. die letzten 10 Nachrichten.

edit2: Wenn wer ein Datum schcikt, das weit in der Vergangenheit liegt,
sollte es auch eine Obergrenze geben, zB. dass er nur die letzten 50 Nachrichten bekommt.
 
Zurück