Autorefresh ++ERWEITERUNG++

Read-Only-Modus

Das 01-Supportforum befindet sich im Read-Only-Modus. Es ist nicht mehr möglich sich zu registrieren, neue Themen zu erstellen oder auf bestehende Themen zu antworten.

Alle Inhalte stehen bis auf absehbare Zeit jedoch weiterhin lesend zur Verfügung.


Bei Fehlern oder Problemen mit PHP-Scripten von 01-Scripts.de erstellen Sie gerne einen Issue-Eintrag auf Github oder nehmen Sie per E-Mail Kontakt auf.

  • Hallo,


    erst mal muß ich ein Lob loswerden. Die Shoutbox ist wirklich Hammer. Eigentlich genau das was ich gesucht habe. Ohne viel Schnörkel, schlicht und trotzdem mit allen Funktionen.


    Jetzt hab ich nur ein kleines Prob, gibt es in dieser Shoutbox keine Autorefresh-Option, oder bin ich nur zu unfähig das richtig zu konfiggen?


    Also mit Autorefresh meine ich, daß ich sofort angezeigt bekomme, wenn ein anderer was geschrieben hat, ohne daß ich selbst die Seite aktualisieren muß.


    Falls es nur an einer Einstellung liegt, bitte erklärt mir genau, wo ich was ändern muß, da PHP und Datenbanken nun wirklich nicht meine Welt sind. ;) Hab alleine bestimmt ne Stunde damit verbracht bis ich es geschafft hatte im PLESK-Interface die Stelle zu finden, wo ich der Datenbank einen User zuordnen kann.



    GREETZ Moorleiche

  • Hallo,


    bis jetzt ist eine "Auto-Refresh"-Funktion nicht in der Shoutbox integriert. Das liegt unter anderem auch daran, dass die Shoutbox eigentlich nicht als "Chat-System" gedacht ist (aber natürlich trotzdem gerne dafür verwendet werden kann).


    Eine Refresh-Funktion lässt sich unter Umständen recht einfach nachreichen. Ich müsste dazu allerdings wissen wie du die Shoutbox in deine Seite integriert hast. Eine URL zu deiner Seite wäre deshalb sehr hilfreich.


    MfG,
    Michael


  • Wenn ich das richtig sehe, hast du die Shoutbox (wie es auch empfohlen wurde) mit dem PHP-Inlcude-Befehl in die Seite integriert. Das macht jetzt eine Refresh-Funktion leider recht schwer. Und zwar ist das Problem, dass bei der HTML-Refresh-Funktion einfach immer die ganze Seite neu geladen wird - das dürfte in dem Fall allerdings ziemlich störend sein.


    Es gibt jetzt zwei Möglichkeiten:
    Entweder du verzichtest auf die Automatische Refresh-Funktion oder du bindest die Shoutbox über ein IFrame ein.

  • Hi,


    und jo, im Moment habe ich die Shoutbox über php-include eingebunden. Aber über iFrame wäre das auch kein Prob. Dann könnte ich die Box auch über einen Meta-Tag selbst refreshen. Das Problem an dieser Lösung wäre nur, daß der Refresh immer zu einem festgelegten Zeitpunkt durchgeführt wird, z.B. alle 120 Sekunden. Das heißt aber es kann passieren, daß der Refresh gerade dann passiert, wenn ich am Eingeben einer Nachricht bin und das dann gelöscht wird und ich erneut eingeben muß. Was ideal wäre, wäre halt eine Art Smart-Refresh, der halt nur greift, wenn eine neue Nachricht eingegeben wurde. Aber das umzusetzen ist wohl zu umfangreich.



    GREETZ Moorleiche

  • Hallo,


    Zitat

    Original von Moorleiche
    Was ideal wäre, wäre halt eine Art Smart-Refresh, der halt nur greift, wenn eine neue Nachricht eingegeben wurde. Aber das umzusetzen ist wohl zu umfangreich.


    GREETZ Moorleiche


    Genau das ist leider das Problem. Soetwas liese sich mit Ajax lösen. Leider kenne ich mich damit momentan noch zu wenig aus, um dafür eine Lösung aus dem Hut zaubern zu können.
    Ich werde mich am Wochenende allerdings mal noch schlau machen, ob man den Refresh auch irgendwie mit JavaScript auslösen kann - und zwar nur dann, wenn keine Nachricht getippt wird.
    Falls ich was finde, lasse ich es dich wissen.


    MfG,
    Michael Lorer

  • Hi,


    und jo, sowas dachte ich mir schon. Vielen Dank schon mal für Deine Mühen. Wäre wirklich cool wenn Du mit Javascript eine Lösung finden würdest. Das wäre dann ja eigentlich doch schon die optimale Lösung, wenn sie auch auf einem anderen Weg erreicht wurde. ;)


    Egal ob Du es schaffst oder nicht, ich bedanke mich nochmals bei Dir.



    Viele Grüße Moorleiche

  • Hallo,


    ich glaube ich habe eine Lösung gefunden. Mit folgendem JavaScript-Code wird die Seite alle X-Sekunden (momentan bei 5s = 5000 Millisekunden) neu geladen, wenn in den Formularfeldern kein eigener Text eingegeben wurde.



    Den Quellcode einfach in die shout.php-Datei einfügen. Am besten direkt oberhalb davon:

    Code
    1. <!--Ausgabe der Beiträge-->
    2. <form name="shoutbox" action="<?PHP echo $_SERVER['PHP_SELF']; ?>" method="post">


    MfG,
    Michael

  • Hallo,


    und sorry, daß ich mich erst jetzt melde, aber ich bin gerade erkältungsbedingt etwas außer Gefecht gesetzt.


    Sobald ich nochmal halbwegs dazu fähig bin, werde das Ganze integrieren.


    Vielen Dank nochmals für Deine Mühen!!




    Grüße Moorleiche

  • Hallo,


    so ich habe die Shoutbox nun in die Hauptseite integriert. Das Refresh-Script funktioniert perfekt. Vielen Dank dafür!!!


    Ich habe sie aber noch ein wenig an meine Bedürnisse angepaßt. Das heißt, ich habe den äußeren Rahmen entfernt, damit sie etwas besser zum Umfrage-Script paßt und die Reihenfolge verändert. Die Eingabefelder sind nun oben. Das habe ich gemacht, weil ich auf der HP in der Höhe nur einen begrenzten Platz habe. Wenn nun die 5 angezeigten Shoutboxbeiträge alle relativ viel Text enthalten erscheint die Scrollbar, weil ein Teil der Shoutbox außerhalb des iFrames liegt. Mit der vorherigen Reihenfolge (SB-Beiträge von oben nach unten - neuster Beitrag oben und darunter die Eingabefelder) wurde logischerweise dann das Eingabefeld ausgeblendet. Man mußte also erst wieder nach unten Scrollen, um etwas eingeben zu können. Mit der neu festgelegten Reihenfolge (Eingabefelder und darunter die SB-Beiträge von oben nach unten - neuster Beitrag oben) sieht man auch mit Scrollbar die Eingabefelder und den neusten Eintrag. Lediglich der älteste Eintrag wird ausgeblendet und muß "erscrollt" werden.


    Ich hoffe das ist erlaubt, falls nicht, gib mir bitte schnellstmöglich Bescheid. :)



    Nochmals Danke für Deine Mühen und Viele Grüße Moorleiche

  • Das geht mit Ajax problemlos, dazu muss aber das Script bzw. ein Teil daraus ausgelagert werden. Der Ajax-Code um dann NUR das Fenster mit den Shouts zu refreshen ist dieser..


    Code
    1. <script type="text/javascript">
    2. $(document).ready(function() {
    3. $("#beitraege").load("pfad/beitraege.ajax.php");
    4. var refreshId = setInterval(function() {
    5. $("#beitraege").load('pfad/beitraege.ajax.php?' + 1*new Date());
    6. }, 10000);
    7. });
    8. </script>


    Dieser Code würde also die Ausgabe alle 10 Sekunden automatisch aktualisieren "Einstellbar", dazu muss es aber einen Container geben z.B.


    <div id="beitraege">Hier sind dann die Beitraege bzw. ist dieser leer wird von Ajax dann mit beitraege.ajax.php gefüllt</div>


    Der Ajax-Code kommt in den shoutout-code, der <div> container ebenfalls, dann benötigt man noch ein Script in dem dann die Beiträge ausgegeben werden. Dieses lädt das Ajax dann immer in die Shoutbox bzw. den <div> Container, fertig.


    Somit wird immer nur das Fenster in dem die Beiträge sind aktualisiert und nicht die gesamte Seite.