automatischer Seitenreload
nitram
- javascript
0 Siechfred0 dem runden Ball0 fastix®
Hallo,
ich habe eine Internetseite, welche alle 3 Minuten eine Datenbankabfrage durchführt und die Seite aktualisiert. Leider wird dabei jedesmal die Seite komplett neu geladen.
Bisher verwende ich:
<body onload=setInterval('self.location.reload()',$refreshtime)>
Kann man das ganze auch in der Art und Weise realisieren, daß meinetwegen alle 30 Sekunden eine Datenbankabfrage durchgeführt wird und je nach Ergebnis ein Popup aufgeht, die Seite dafür aber nicht neu geladen wird (der alte Inhalt also unverändert stehenbleibt) und alle 3 Minuten dann auch die Seite neu geladen wird?
Danke,
Martin
Tag nitram.
ich habe eine Internetseite, welche alle 3 Minuten eine Datenbankabfrage durchführt und die Seite aktualisiert. Leider wird dabei jedesmal die Seite komplett neu geladen.
Kann man das ganze auch in der Art und Weise realisieren, daß meinetwegen alle 30 Sekunden eine Datenbankabfrage durchgeführt wird und je nach Ergebnis ein Popup aufgeht, die Seite dafür aber nicht neu geladen wird (der alte Inhalt also unverändert stehenbleibt) und alle 3 Minuten dann auch die Seite neu geladen wird?
Ja, das ist grundsätzlich mit Hilfe von XMLHttpRequest möglich. Führe alle 30 Sekunden eine Anfrage an die Datenbank durch, vergleiche das letzte mit dem aktuellen Ergebnis und reagiere dann entsprechend. Voraussetzung für den Einsatz der Technik ist, dass sich die Datenbank auf dem gleichen Server befindet, von dem die Seite ausgeliefert wurde. Ich würde mir ggf. ein kleines Server-Script schreiben, das eine DB-Abfrage durchführt und das Ergebnis als XML zurück gibt. In Abhängigkeit davon, ob es Änderungen gab oder nicht, änderst du die Seite oder gibst eine Meldung aus, dass sich nichts verändert hat.
Der Gebrauch von XMLHttpRequest hier wird ganz gut beschrieben: http://jibbering.com/2002/4/httprequest.html, dort insbesondere der Abschnitt "Calling a server-side Script without refreshing the page".
Siechfred
Ich würde ganz einfach ein unsichtbares Iframe mit der HTML-Datei machen, die die DB abfrägt und alle 30 sek. oder so die Site im IFRame aktualisieren. Die Seite selbst jedoch nur, wenn sich was ändert oder eben auch regelmässig. Doch da du PHP verwendet hast und somit anscheinend Zugriff auf serverseitige Technologien hast, wär die Lösung von Siechfred vielleicht doch besser.
Grüße, der Ball ist Rund
Moin!
Kann man das ganze auch in der Art und Weise realisieren, daß meinetwegen alle 30 Sekunden eine Datenbankabfrage durchgeführt
Ja. Das ganze hat aber Einschränkungen....
Ich habe derlei mal mit einem Frameset gelöst.
Ein unsichtbarer Frame wird aller paar Sekunden neu geladen und enthält nur ein Javascript.
<script type="text/javascript">
vergleichswert=<?php echo $vergleichswert; ?>;
</script>
In der angezeigten Seite wird diese Variable $vergleichswert mit der im sichtbaren Frame verglichen und bei Änderungen das Update der Seite durchgeführt.
Du kannst es Dir in der scheintoten community anschauen:
<community.fastix.de> Du musst Dich anmelden (Du brauchst keine (echten) persönlichen Daten/eMailadresse eingeben), kannst dann in den Chat schauen und Dir dort die Quelltexte reinziehen, damit Du siehst, wie ich das browserseitig gelöst habe. Es sind allerdings ein paar Frames mehr. Und ja: Der Chat hat mal mit ca. 20 Teilnehmern auf einmal funktioniert.
MFFG (Mit freundlich- friedfertigem Grinsen)
fastix®