Einfacher Chat mit Ajax

  • Hallo,


    ich möchte gerne eine ganze einfach Datenbankabfrage für einen Chat machen.

    Der Chat wird kaum benutzt, und mir reicht erstmal eine automatische aktualisierung der Nachrichten.


    Ich habe 2 Dateien:

    - "Index.php" -> Darstellung der Chatbox

    - "chat.php" -> Abfrage der von der Datenbank (Maximal 30 Nachrichten)


    In der Index befidnet sicher folgender Code um die chat.php erneut abzufragen und ins Element "Chat" zu schreiben.


    Code
    $(document).ready(function() {
        $("#chat").load("funktionen/chat.php");
        var refresh = setInterval(function() {
            $("#chat").load("funktionen/chat.php");
        }, 2000);
    });


    Das funktioniert soweit sehr gut, nur lasse ich auch die Profilbilder anzeigen und man sieht wie die immer wieder neu geladen werden.

    Wie schaffe ich es, dass nur der neuste Eintrag geladen wird und nicht immer die letzten kompletten 30 Einträge?


    Danke

  • Hi basti,


    verstehe ich nicht ganz. Ich ersetze ja mit Javascript das komplette Div und muss somit auch immer alle Einträge aus der DB lesen und ausgeben.

    Ich möchte aber nur die neuen auslesen und dem div hinzufügen.

  • Man liest eine Db mit Php aus und nicht mit Javascript.

    Dann sollte man da schon nur das holen was man brauch und nicht 30 Einträge die man dann mit Javascript noch verkürzen muß,

    Aber vieleicht verblöde ich gerade auch.


    Warten wir mal ab was die Chat profis sagen.


    Vieleicht solltest du auch mal zeigen wie dein Php Script zu den Chat aussehen tut , oder vielcht auch Link zu den Chat damit man mal dein Quellcode sehen kann.

  • du brauchst doch nur noch die 30 in einer 1 aus zutauschen dann hast du doch den letzen Beitrag

    Code
    ORDER BY timestamp DESC LIMIT 1;

    Oder liege ich da jetzt falsch ?


    Genau wie deine 2 te while Schleife, da es ja LIMIT 1 ist kann ja nicht mehr als ein Eintrag kommen und somit wird die Schleife ja auch nicht gebraucht. Selbst Limit 1 könnte man auch Weg machen weil es eigentlich ja nur eine benutzerid geben sollte und nie mehr als 1 Person finden darf.


    Oder liege ich da auch falsch ????

  • Wie kann man das denn dann abfragen? Die will ja nur den letzten Beitrag haben. Wenn den aber über drei neue Beiträge da sind müsste man ja wissen bis wohin gelesen wurde. Da das bei jeden Chat Teilnehmer anders sein kann würde ich erst abfragen ob und wie viele Einträge I in den letzten 5 Minuten oder so geschrieben wurde. Wenn keinen dann lasse ich den letzten Eintrag anzeigen und bei ein oder mehrb dann die neuen Einträge . Ist das schon besser ?

    oder hast du da eine bessere idee

  • @scatello


    Das würde ich soweit hinkriegen aber wie kann ich mit Javascript den neuen Eintrag in das Div hinzufügen? Momentan wird ja das ganze Div ausgetauscht.

  • Habs folgend lösen können:


    Vorher (Text wird ersetzt)

    Code
    Div.InnerHTML = "Chatverlauf"


    Nacher (Text wird hinzugefügt)

    Code
    Div.InnerHTML += "Chatverlauf"


    Mir war nicht klar, dass ich auch HTML hinzufügen kann und nicht nur ersetzen kann.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!