• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

php Gästebuch bei einem neuen Eintrag bei jeden einen Seiterefresh?

Alex55

Mitglied
Hallo, wie kann ich es machen wenn in mein Gästebuch ein neuer Eintrag ist das dann ein Seitenrefresh kommt bei jedem der die Seite offen hat?

Lg
 
Hm, das ist irgendwie nicht das was ich suche. Kann bei diesen Code nicht beim echo einen Code einfügen der einen Seitenrefresh bei allen beteiligten auslöst?

PHP:
<?php
$beitrag = file("text.txt");


foreach($beitrag as $ausgabe)
   {
   $ausgabe = stripslashes($ausgabe);
   $zerlegen = explode("|", $ausgabe);
   

   echo "
   <table align=\"center\"
    border=\"0\" cellspacing=\"0\"
   cellpadding=\"5\" 
   width=\"750\">
   <tr>
   <td>
$zerlegen[3]
   </td>
   </tr>
   </table>
   ";
   }
?>
 
Das geht mit relativer Abwärtskompatibilität nur mit Ajax und der Aufwand lohnt sich nicht. Stell dir außerdem vor, jemand liest gerade einen Eintrag und dann wird er wieder zum Seitenanfang genötigt.
 
Naja wenn der Benutzer A bei deinem Gästebuch was postet wird das auf den Server geladen in die Datei text.txt.

Wenn jetzt die offene Seite des Benutzers B automatisch refreshed werden soll muss er entweder den Server alle paar Sekunden/Minuten fragen obs da was Neues gibt, und das dann asynchron updaten (asynchron = ohne die komplette Seite neu zu laden).

Oder du sagst dem Browser via
HTML:
<meta http-equiv="refresh" content="5; URL=www.deineseite.de">
dass er die Seite alle 5 Sekunden komplett neu laden soll, was aber für den Benutzer lästig sein kann.
 
Ja das stimmt, hab ich auch schon darüber probiert. Nur ist das etwas lästig und zeitversetzt. Ich möchte das es sofort bei den anderen erscheint. Gibt es sonst nicht noch eine andere Möglichkeit? So wie in etwa wie <meta http-equiv="refresh" content="5; URL=www.deineseite.de"> nur das beim Abschicken übertragen wird und nicht im head?
 
Das geht nur mit AJAX weil du eine Kommunikation zw. Server und Client brauchst, damit der Client weiß, wann es einen neuen Eintrag gibt, den er downloaden kann.
 
Naja wenn der Benutzer A bei deinem Gästebuch was postet wird das auf den Server geladen in die Datei text.txt.

Wenn jetzt die offene Seite des Benutzers B automatisch refreshed werden soll muss er entweder den Server alle paar Sekunden/Minuten fragen obs da was Neues gibt, und das dann asynchron updaten (asynchron = ohne die komplette Seite neu zu laden).

Oder du sagst dem Browser via
HTML:
<meta http-equiv="refresh" content="5; URL=www.deineseite.de">
dass er die Seite alle 5 Sekunden komplett neu laden soll, was aber für den Benutzer lästig sein kann.

Asynchron heißt nicht, dass die Seite nicht neulädt bei Ajax. Das heißt, dass JavaScript einen EventListener erstellt und nicht die Scriptausführung blockiert, solange das Dokument nicht geladen ist.
 
Mir is eh klar was asynchron heißt aber ich wollte es im Kontext für jmd. erklären der sich vlt nicht mit AJAX auskennt.

Aber danke für die Korrektur hast recht hab ich blöd formuliert. ;)
 
Kleiner Tipp wie das funktionieren könnte:

Du hast dein bestehendes Gästebuch und setzt ans Ende ein weiteren Bereich hin z.B.

<div class="new-posts"></div>

Du lässt dann über Javascript ( AJAX ) eine Datei aufrufen z.B. "new-posts.php" mit den Daten "lastid=ID".

Also z.B. "http://localhost/gb/new-posts.php?lastpost=33".

In der new-posts.php suchst du dann in der Datenbank nach Gästebuch einträgen mit einer ID die größer ist als die letze Nachricht mit der ID von 33 , z.B.:

mysql_query( 'SELECT * FROM `gaestebuch` WHERE `id` > $lastId );

und gibst die Ergebnisse dann aus.

Wieder zurück in der ersten Datei welche das Gästebuch anzeigt und das Javascript/AJAX Script beinhält, gibt es noch den Bereich des Erfolgs ( success ). Ich empfehle dir jQuery zu benutzen, da es da verdammt einfach ist ein Ajax Request auszuführen.
Da kann man dann einfach folgendes machen:

$(..).ajax(
url: 'new-posts.php',
data: 'lastid='+lastId;
success: function( e ){
...
});

In "e" hättest du dann das was ausgegeben wird wieder und dann per Javascript im "new-posts"-Div die Daten einfügen.

Also im Grunde genommen ein sehr einfaches verfahren.
 
Das geht nur mit AJAX weil du eine Kommunikation zw. Server und Client brauchst, damit der Client weiß, wann es einen neuen Eintrag gibt, den er downloaden kann.
Wieso sollte das nur mit AJax gehen.

Die Anzahl der Einträge beim ersten Aufruf des GB in eine Sessions-Variable speichern und bei jedem neuen Aufruf (blättern) mit der Anzahl der aktuellen Einträge vergleichen. Sind beide nicht gleich (b.z.w ist die Anzahl der aktuellen Einträge grösser) ein Refresh, fertig.
 
Wieso sollte das nur mit AJax gehen.

Die Anzahl der Einträge beim ersten Aufruf des GB in eine Sessions-Variable speichern und bei jedem neuen Aufruf (blättern) mit der Anzahl der aktuellen Einträge vergleichen. Sind beide nicht gleich (b.z.w ist die Anzahl der aktuellen Einträge grösser) ein Refresh, fertig.

Die Frage war, wie man einen Seitenrefresh bei allen Besuchern des Blogs verursachen kann, sobald jemand einen neuen Eintrag verfasst hat. Das geht nur mit AJAX (oder Websockets).
 
Es ist vollkommen Sinnentleert, wenn man jemandem, der gerdade einen Eintrag machen möchte, ein Refresh aufs Auge drückt. Hat dieser Jemand noch dazu gerade 30 Zeilen geschrieben, ist der auf nimmer Wiedersehen verschwunden.

Ich verstehe das also so, dass ein Refresh erfolgen soll, wenn jemand eine weitere Aktion tätigt.
 
„Sofort“ oder „sobald neue Daten vorliegen“ (Echtzeit) ist auch mit Ajax durchaus ein gewisses Problem, weil das nur per Polling hinzubekommen ist.

- Polling (Informatik)

Es summiert sich, wenn jeder der x Besucher der Gästebuchseite alle y Sekunden einen Request absetzt. Milchmädchenrechnungen dazu sind schwierig, aber es hat seinen Grund, warum viele Hosting-Anbieter den Betrieb von Chats untersagen. Die Serverlast ist hoch. Insbesondere dann, wenn das per Ajax aufgerufene Script nicht effizient programmiert ist.

Seien wir ehrlich: ein „Gästebuch“ mit Echtzeit-Aktualisierung ist ein getarnter Chat. Ein Gästebuch braucht keine Echtzeit-Aktualisierung. Das ist Quatsch.

Sinnvoll wäre es vielleicht, einmal vor dem Absenden auf neue Einträge zu checken.
 
Zurück
Oben