PHP, Datenbank Inhalte mit zeitlichem Abstand auslesen?

... komplette Frage anzeigen

4 Antworten

Du könntest natürlich mit Ajax (wie du es auch versucht hast wenn ich dich richtig verstanden habe) alle x Sekunden die nächsten 3 Datensätze abfragen und anzeigen, wäre auch gar nicht mal so schwierig, aber imho die falsche Herangehensweise.

Man sollte einfach, wenn möglich, nicht mehr Queries machen als man unbedingt braucht, also wenn man alle Daten auf einmal abfragen kann, dann sollte man das auch so machen. In diesem Falle könntest du ja einfach alle Datensätze beim Seitenaufruf auf einmal auslesen, dann z.B. jeweils 3 davon in ein div mit fortlaufender ID und halt per JS alle x Sekunden das aktuelle div ausblenden und das nächste anzeigen, kommt im Endeffekt aufs selbe raus aber der Server wird weniger belastet und weniger Traffic erzeugt (hier vielleicht noch nicht wirklich spürbar, aber bei größeren Projekten kann das durchaus einiges ausmachen, von daher am besten gar nicht erst falsch angewöhnen).

Wobei ich da sogar eher mit Tabs oder einer Pagination arbeiten würde (falls das Sinn macht, kommt drauf an was du damit genau bezweckst), wenn man einfach alle paar Sekunden die Daten ersetzt kommt man wahrscheinlich irgendwann nicht mehr mit und "verpasst" das, was man eigentlich wissen wollte.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Findo1
12.10.2016, 08:49

Das klingt erstmal natürlich sehr Sinnig. Und ich glaube das würde ich soweit auch hinbekommen. 
Aber ist javaScript eig noch eine "saubere Lösung"`? Weil gehen wir mal davon aus, dass JavaScript Deaktiviert ist, dann geht nichts.

Um vllt einen besseren überblick zu geben.
Ich habe einen Bildschirm auf dem Termine eingezeigt werden. Es können aber Maximal 5 Termine angezeigt werden. Das heißt, sobald es mehr als 5 Termine gibt, sollen die alten 5 weggehen und die neuen fünf (die die mehr sind) angezeigt werden , und wenn es noch mehr gibt sollen dann nach 10 sekunden wieder die nächsten angezeigt werden. Sobald es keine termine mehr gibt , soll er wieder die ersten 5 anzeigen und so weiter... sry für die rechtschreibung ,bin gerade auf dem sprung 

0

Ein kleiner Denkfehler

Es läuft so

Brower (client) frag sever nach einer URI , gegebenfals werden noch post daten gesendet

dann springt das PHP an wird durchgearbeite und dann das ergebnis gesendet . Danach ist der Prozess beendet .

Browser erhält daten und zeigt sie an .

Du kannst also nicht wirklich warten .

Du kannst aber mit JavaScript Ajax machen , das heist du fragst den browser im hintergrund . Also z.b. eine GET mit next_id_display anfrage an ein weiteres PHP welches dann die nächsten 3 ab ID ausgibt. Das lässt du dann im Browser anzeigen . Ja Du liesst richtig , dein asyncroner Aufruf wartet schick auf eine Antwort vom Server .

Antwort bewerten Vielen Dank für Deine Bewertung

Mit jQuery/Ajax hast du das meiste ja schon hinbekommen. Wenn du jetzt den Intervall von 1s auf 10s erhöhst, kannst du alle 10s die nächsten 3 Daten aus der DB abholen.

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Findo1
12.10.2016, 08:37

Ich benutze folgendes Script:

Ich benutze folgendes Script:

$(document).ready(function() {
$("#main").load("test3.php");
var refreshId = setInterval(function() {
$("#main").load("test3.php?" + 1*new Date());
}, 1000);
});

Aber das Script "läd" ja nur jede Sekunde den neuen Inhalt in den Div.

Es wird ja nicht jede Sekunde das PHP-Script neu geladen , oder?

Ich muss in PHP eine Variable nach den 10 Sekunden um eins erhöhen, dass dürfte mit meinem script doch nicht gehen oder?
geschweige denn , erst die ersten datensätze , dann die nächsten

0

Ajax und selektierung des nächsten dreier blocks via get oder post

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?