Heute ist Samstag: PHP Chat

Guten Abend,
ich hab mir gerade aus Spaß ein PHP Chat gebastelt und finde ihn jetzt so toll das ich ihn wenn er fertig ist auf meine Webseite stellen will. Nach vielem rumgeteste ist mir jedoch ein gravierendes Problem aufgefallen:
nachdem das Formular (mit dem Chattext) abgeschickt wurde wird bei mir die Seite sofort aktualisiert, wenn ich mir jedoch den Chat auf einem anderen Tab ansehe wird dort nicht der neue Text angezeigt.
Ein meta refresh das nach einer bestimmten Zeit die Seite neu lädt möchte ich nicht einbauen, vorallem da der Chattext den man in das Eingabefeld eingibt nach einem Reload "gelöscht" wird.

Was gibt es für möglichkeiten das der Chat in Echtzeit läuft, sprich dass bei einem Chatteilnehmer die Seite sofort aktualisiert wird nachdem etwas neues geschrieben wurde?

Ich dachte das könnte vielleicht irgendwie mit Javascript oder Ajax funktionieren, nur bin ich da ein "noob" und weiss nicht wie ich das angehen sollte.

Freu mich über hilfreiche Antworten :-)

Mfg,
Heute ist Samstag.

  1. Hallo,

    vom Prinzip her: mit Javascript den Server fragen, ob was neues passiert ist. S.u.a. setTimeout().

    Gruß

    jobo

    1. vom Prinzip her: mit Javascript den Server fragen, ob was neues passiert ist. S.u.a. setTimeout().

      Guten Abend,
      Sie meinen also ich sollte den ganzen Chat in eine Schleife stecken?

      Mfg,
      Heute ist Samstag.

      1. Hallo,

        Sie meinen also ich sollte den ganzen Chat in eine Schleife stecken?

        Naja, der Chat besteht aus zwei Teilen:

        Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.

        Gruß

        jobo

        1. Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.

          Und falls es neue Einträge gibt wird die Seite neu geladen?
          Entschuldige, ich versteh gerade nicht was Sie meinen.

          Mfg,
          Heute ist Samstag.

          1. Hi!

            » Das PHP-Skript auf dem Server verwaltet die Einträge. Das HTML-Dokument beim Nutzer muss alle soundsoviel Sekunden den Server fragen, ob es neue Einträge gibt.
            Und falls es neue Einträge gibt wird die Seite neu geladen?

            Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.

            Entschuldige, ich versteh gerade nicht was Sie meinen.

            Entschuldigen Sie bitte, ich meine, dass wir uns hier duzen!

            off:PP

            --
            "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
            1. Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.

              Guten Abend,
              das ich das richtig verstehe: mein Chatoutput befindet sich in einem Div. Jetzt soll ich mit Javascript überprüfen ob es neue Einträge gab (Datei auslesen?) und die Einträge mittels inner.HTML einbinden?
              Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.

              Mfg,
              Heute ist Samstag.

              1. Bonsoir!

                » Nein, es werden eventuell neu vorhandene Einträge per Javascript vom Server abgerufen und in das aktuelle Dokument (vulgo: Seite) eingebunden.

                das ich das richtig verstehe: mein Chatoutput befindet sich in einem Div. Jetzt soll ich mit Javascript überprüfen ob es neue Einträge gab (Datei auslesen?)

                Nicht eine Datei, Du kannst periodisch per Javascript asynchron eine HTTP-Ressource abrufen - aka: AJAX.

                und die Einträge mittels inner.HTML einbinden?

                Per geeigneter DOM-Funktion ins Dokument einbetten.

                Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.

                Das weiß der Server, da wir aber weder client- noch serverseitigen Code kennen befinden wir uns gerade auf der 'grünen Wiese' und betrachten das ganze 'theoretisch grau'.

                BTW: heißt Du in knapp 2 Stunden 'heute ist Sonntag' - ich frage nur deshalb, weil das Problem viel eher nicht eine Lösung erfahren haben wird;)

                off:PP

                --
                "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
              2. Hallo,

                Falls ich richtig liegen sollte verstehe ich nicht wie ich überprüfen soll ob es neue Einträge gab.

                Naja, ganz simepel: du rufst per Javascript alle 1 die url auf, zB. mit location.href = "eintraege.php?time=[unixtime]" (die zeit änderen, damit die Datei nicht aus dem Cache geladen wird).

                Oder per AJAX (XmlHttpRequest) oder indem du das src-Attribute eines script-Elementes zB. mit o.g. Url belegst und vom Server dann vielleicht schon Javascriptcode zurückgibst. ZB: my_innerHTML = "neuer text bla bla"; dann könntest du das innerHTML des Divs austauschen.

                Gruß

                jobo

  2. Ich dachte das könnte vielleicht irgendwie mit Javascript oder Ajax funktionieren, nur bin ich da ein "noob" und weiss nicht wie ich das angehen sollte.

    http://lmgtfy.com/?q=AJAX+Tutorial

    1. http://lmgtfy.com/?q=AJAX+Tutorial

      Guten Abend,
      Meine vermutung dass man mein Problem eventuell mit Javascript oder Ajax lösen kann war eher als Frage gedacht, ob es geht.
      Ich habe mich schon einmal mit Ajax beschäftigt, requests usw. kann ich senden, nur weiss ich nicht wie mir das bei meinem Problem helfen sollte.

      Mfg,
      Heute ist Samstag.

  3. Hallo,

    Realtime Server Sent Events in Opera, beachte auch bitte die Hinweise in den Kommentaren.

    Jeena