Live Wert auf HTML-Website darstellen

  • Hallo zusammen


    Ich habe folgendes Problem:


    Ich messe die Spannung eines Akkus und schreibe diese in eine mySQL-Datenbank mithilfe eines php-Skriptes.

    Nun möchte ich den aktuellsten Wert der Datenbank auslesen

    und anschliessend auf meiner HTML-Website darstellen lassen als einfache Zahl (z.B. 3.4V).


    Ich weiss jedoch nicht wie ich den aktuellsten Wert auslesen kann und diesen darstellen kann.



    Hier ist mein Code, der die Messwerte aus der Datenbank holt und als "Tabelle" mit TimeStamp und Messwert ausgibt.

    Diese Tabelle wird dann mithilfe von json.encode an das HTML-file übergeben wo ich die Werte zusätzlich brauche und eben auch diesen einen "Live-Wert".


    Ich hoffe ich konnte euch mein Problem verständlich gliedern

    und würde mich freuen, wenn ihr euch kurz Zeit nehmt.;)


    Vielen Dank und Grüsse


    DR.Alfred

  • Hey,


    Das Thema wurde in das PHP-Abteil verschoben, da es nichts mit HTML zu tun hat.


    Du benutzt die veralteten Mysql Funktionen. Verwende entweder Mysqli oder PDO. Desweiteren frage ich mich für was du den aktuellen Timestamp erstellst.


    Du kannst wenn du in die Datenbank die Spannung einfügst gleich es so einstellen, dass die Uhrzeit sowie das Datum mit erstellt werden. Dann musst du dich darum nicht mehr kümmern. Den letzten Datenbankeintrag erhälst du mit der Umkehrung des Sortierens sowie der Limitierung der selektierten Datensätze.


    Ich verwende für dieses Beispiel PDO:


    Grüße,

    Stef

  • Das Auslesen hast Du bereits.

    Dein Ergebnis gibst du auch bereits als JSON-Objekt aus: echo json_encode($data);


    AJAX steht für Asynchronus JavaScript and XML.

    Das Prinzip hinter AJAX ist die asynchrone Kommunikation mit zwischen Client und Server, ohne PageReload.


    Details kann man im Netz finden, bspw. im MDN.


    Der Client ruft salopp gesagt ein Server-Script auf, was bspw. Deine .php-Datei sein kann.

    Das Serverscript liefert Daten in Form einer Ausgabe, bspw. Dein echo json_encode($data);


    Die Verarbeitung der Rückgabe erfolgt dann mit ganz gewohntem JavaScript.

    Beispiele findest Du unter dem obigen Link.


    Falls Du gleich Tipps bekommst, das mit jQuery o.ä. zu machen, würde ich Dir empfehlen, es trotzdem zunächst mit JavaScript nativ zu machen, weil der Lerneffekt aus meiner Sicht deutlich höher ist.

  • Ich habe jetzt das Skript von Stef probiert anzupassen, jedoch geht dies nicht ganz:


    Schaut doch noch einmal mein Skript von vorhin an, denn ich muss mich zum Beispiel mit Benutzername und Passwort einloggen

    aber dies kommt beim Beispielskript von Stef nicht vor.

  • Hey,


    du musst in $dbv = new PDO("mysql:host=IP database;dbname=Name;charset=utf8", "root", ""); auch deine Daten eingeben.


    In host kommt localhost oder deine locale IP 127.0.0.1 rein.

    In dbname der Name deiner Datenbank in welcher die Tabelle liegt.

    root ist der Username.

    Und in der letzte Zeichenkette kommt das Passwort rein.


    Dies musst du dann noch anpassen.


    Code
    $selectData = $dbv->prepare("SELECT $x FROM 'Messwerte' ORDER BY 'DateTime' DESC LIMIT 1");

    Die einfachen Gänsefüßchen musst du entfernen die Tabellenspalten kannst du in diese Zeichen schreiben `Tabellenspalte`. Was steht denn in $x drin?

    Code
    echo "<p>Spannung: " . htmlspecialchars($x) . "</p>";

    Warum gibst du da $x aus? $x ist doch garnicht vorhanden. Der Wert aus der Datenbank liegt doch in der Variable $spannung.


    Mir kommt es so vor, dass du nichtmal die Grundlagen kennst und auch nicht recherchierst wie eine korrekte SELECT Query aufgebaut ist. Und kopierst einfach und hoffst das es funktioniert.

  • Schaut doch noch einmal mein Skript von vorhin an, denn ich muss mich zum Beispiel mit Benutzername und Passwort einloggen

    aber dies kommt beim Beispielskript von Stef nicht vor.


    Mir kommt es so vor, dass du nichtmal die Grundlagen kennst und auch nicht recherchierst wie eine korrekte SELECT Query aufgebaut ist. Und kopierst einfach und hoffst das es funktioniert.

    Ja mir auch deshalb würde das vieleicht hier helfen

    https://www.peterkropff.de/sit…pdo_verbindungsaufbau.htm

    https://www.php-einfach.de/mysql-tutorial/crashkurs-pdo/

  • Hey,


    Ich habe nun die Zeile ergänzt:


    Code
    $dbv = new PDO("mysql:host=IP of my database;dbname=Name;charset=utf8", "username", "key");


    In der Variable $x ist die SensorID der Datenbank gespeichert, die Volt heisst.


    Es tut mir Leid, dass ich zum Teil die Grundkenntnisse nicht kenne.

    Das Problem ist, dass das bei meiner Arbeit als Elektroniker machen muss,

    aber ein Elektroniker muss das normalerweise nicht beherrschen, so lohnt es sich nicht gross

    sich noch lange zu informieren. Ich dachte über ein Forum kann ich schnell an meine Infos gelangen

    und mich wieder meiner "normalen" Arbeit widmen.

  • Ich habe nun geschafft, dass es den ältesten Wert mit dem Datum ausgibt,

    jedoch weiß ich nicht wie dies funktioniert, um den neusten Wert auszugeben.


    Vielen Dank

  • Die Mysql_ Funktionen sind veraltet. Wenn du diese noch verwenden kannst hast du eine stark veraltete PHP-Version. Dies stellt eine große Sicherheitslücke dar.


    Hauptsache es läuft halt, egal wie.

  • Die Mysql_ Funktionen sind veraltet. Wenn du diese noch verwenden kannst hast du eine stark veraltete PHP-Version. Dies stellt eine große Sicherheitslücke dar.


    Hauptsache es läuft halt, egal wie.

    Ja das mag ja gut sein, jedoch ist die Webseite nur lokal, es kann eh niemand darauf zugreifen. Darum ist es egal wie es läuft!

  • Ok lokal ist was anderes, aber ich würde es trotzdem schon mit mysqli oder pdo versuchen weil irgendwann wird man das brauchen ,gerade dann wenn bei euch PHP 7 laufen wird kannst du mysql vergessen, das wird dann gar nicht mehr funktionieren.


    Aus eigenem Interesse solltest du dir mysqli und pdo schon mal ankucken und versuchen es umzusetzten:)

  • Um auf deine ursprüngliche Frage zurück zu kommen:

    Zitat

    Diese Tabelle wird dann mithilfe von json.encode an das HTML-file übergeben wo ich die Werte zusätzlich brauche und eben auch diesen einen "Live-Wert".

    Das ist in wenigen Zeilen zu machen:

    (ungetestet, da ich das ganze Umfeld mit der DB nicht habe.)

    Wenn dieser Livewert zyklisch aktualisiert werden soll, holst Du ihn am besten mit Ajax, wie von Arne beschrieben.

  • Sorry, aber das passt irgendwie nicht. Er wurde ja nun darauf hingewiesen, dass Mischen von PHP und JavaScript nicht sehr clever ist und nun kommt ne Lösung genau damit? ;)


    Und sortieren tut gar nicht nötig, das erledigt man über die Datenbank, in dem man sich nur den neuesten Eintrag holt.

  • Zitat

    in dem man sich nur den neuesten Eintrag holt

    Ich bin von dieser Aussage des TO ausgegangen:

    Zitat

    wo ich die Werte zusätzlich brauche und eben auch diesen einen "Live-Wert".

    Verstehe ich so, dass er alle Einträge auf Clientseite braucht.

  • Auch das wäre machbar. Eine Spalte mit dem jeweiligen Werten des Datensatzes und eine Spalte mit dem Max-Wert des Datum, sofern er das mit einträgt, aber das hoffe ich mal ;)

    Das ganze einfach mit ORDER BY sortieren und los gehts...

  • Dankeschön für eure Bemühungen. Ich habe es nun geschafft, jetzt muss ich nur noch an

    der Struktur der Webseite arbeiten. Gegebenenfalls auch noch mit CSS die Darstellung

    überarbeiten.


    Dankeschön euch allen!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!