Hallo,
ich möchte Daten aus einer MySQL Datenbank mit Google Charts
(Liniendiagramm) auf einer Webseite anzeigen. Weiterhin sollen die
Grafiken ohne kompletten Seitenreload alle Minute aktualisiert werden.
Leider funktioniert das nicht. Wenn neue Werte in die Datenbank hinzu
kommen werden diese im Google Charts nicht angezeigt.
Um nicht das komplette Projekt hochladen zu müssen habe ich 2
Testdateien erstellt, um den Code minimal zu halten.
Datei sql_test2.php:
Hier werden die Daten aus der Datenbank abgerufen und korrekt im
Liniendiagramm angezeigt. Zum Testen wird hier nach 5 Sekunden
aktualisiert und ein fest im Code stehender Wert hinzugefügt. Das
funktioniert ohne Probleme. Die setIntervall-Funktion funktioniert also
und aktualisiert das Diagramm.
Datei sql_test3.php:
Auch hier wird das Diagramm zunächst korrekt angezeigt. Die
Aktualisierung steht derzeit auf 10 Sekunden. Nach der Aktualisierung
werden die Daten aus der Datenbank neu ausgelesen um das Diagramm zu
aktualisieren.
Vorgehensweise: Die Seite wird geladen und das Diagramm aufgebaut,
sofort danach wird in der Datenbank ein Wert eingefügt, nach Ablauf der
10 Sekunden wird das Diagramm aktualisiert. Das Problem: Der neu
eingefügte Wert wird nicht angezeigt. Zum Testen habe ich das
SQL-Statement in der Aktualisierung geändert und die Zeile mit der id1
ausgeschlossen. Nach der Aktualisierung verschwindet zwar der Wert von
id1, das Diagramm aktualisiert also, aber der neu eingefügte Wert
erscheint nicht. Es bringt auch nichts per SQL-Statement nur die letzte
Zeile zu lesen und per addRow hinzuzufügen. Auch das funktioniert nicht.
Zwischen dem ersten Seitenaufbau und dem ersten Aktualisieren habe ich
auch schon einen vorhandenen Wert in der Datenbank geändert. Auch dieser
wird nicht aktualisiert.
Wenn ich über F5 die Seite neu lade, dann sind alle Werte sofort da und
das Problem besteht nicht.
Ich wollte auch schon die SQL-Fehler anzeigen, falls welche auftreten
sollten. Aber da es innerhalb von JavaScript ist werden die wohl auf der
Seite nicht angezeigt.
Ich habe den JS-Code auch schon im Header und im Body getestet, kein
Unterschied.