Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQL Array für Highcharts

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MYSQL Array für Highcharts

    Hallo liebe Forengemeinde,

    ich habe nun schon etliche Stunden verbracht aber komme nicht so wirklich weiter. ich halte es der übersichthalber kurz.... folgendes:

    Ich habe 3 Spalten ( Höhe, Volumen, Temperatur, Zeit) und möchte mir folgendes ausgeben lassen über ein PHP Skript was JSON ausgibt und die Daten dann in Highcharts schiebt
    Jeden ersten des Monats den Wert der Spalte 1
    Jeden ersten des Monats den Wert Spalte 2 dasselbe für 3. Soll halt ein Jahresübersicht werden. Es soll alles 3 als unterschiedlich php Skripte laufen also reicht mir ein Befehl.
    also 12 Werte wobei die Werte für die Zukunft (und Vergangenheit) dann mit NULL ausgegeben werden was ok is.
    Ich brauhce aber die Werte nach reihenfolge da die Wertereihe für die Monate fix sind (Januar Februar ...)
    Wenn ich im März anfange sollten also die davor mir mit null anzeigen bzw ausgeben.

    ================================================== ==================================
    2.tes vorhaben.
    Ich brauche 2 Wertereihen.
    Also von einer Spalte alle Daten pro Tag und davon den Durschnitt.
    dies möchte ich mir dann zusammen mit dem Tag ausgeben lassen als Diagramm,
    Wichtig ist mir eigentlich, dass ich erkenne wie ich daten abhole mit den Arrays die Befehle kann man sich (wenn auch mühsam) noch zusammensuchen.

    Ich hänge eigentlich nur beim Daten abholen.

    PHP-Code:
    $sth mysql_query("SELECT AVG(wasserpegel) FROM zisterne GROUP BY YEAR(zeit), MONTH(zeit), DAY(zeit);");
    $rows2 = array();
    $rows2['name'] = 'Wasserpegel';
    while(
    $rr mysql_fetch_assoc($sth)) {
    $rows2['data'][] = $rr['wasserpegel']; 
    das z.B. gibt mir nur NULL aus, komishcerweise wenn ich die funktion AVG weglasse zeigt er mir meine Testdaten an.

    Ich danke euch schon mal für die Mühe

    Ich habe schon einige sacehn hinbekommen. Wie Datum alle ausgeben z.B : hiermit
    PHP-Code:
    $sql mysql_query("SELECT zeit FROM zisterne WHERE zeit LIKE '".$_GET["dateParam"]."%'");

    $result['name'] = 'Foot Traffic Count';
    while(
    $r mysql_fetch_array($sql)) {
    $datetime $r['zeit'];
    $result['category'][] = $datetime;
    $result['data'][] = $r['zeit']; 
    ein bisschen Grundkenntnisse sind aufjedenfall schon vorhanden


  • #2
    Hat noch jemand außer mir nicht verstanden, wie die Frage lautet?

    Kommentar


    • #3
      sorry falls ich mich doof ausgedrückt hatte.. Es war schon spät.
      Ich brauche ein mysql Befehl:
      für jeweils den ersten des Monats den wert ausgibt.
      Damit ich 12 werte bekomme und meine Jahresübersicht gestalten kann.
      Beispiel: die Daten fangen ab Oktober an
      dann soll für Januar bis Oktober null ausgegeben werden (da keine Daten vorhanden) (das wäre der idealfall) und dann für 1. oktober mein erster wert Der Datenbank an dem Tag für 1. November bis dezember. (Für die Jahresübersicht zb Temperaturwerte ).
      Also zb 0,0,0,0,0,0,0,0,0, 2500, 2122, 2122
      also die werte 2500 wären dann vom 1.10.15
      2122 vom 1.11.2015 jeweils der erste wert der an dem Tag an der Datenbank vorhanden ist...

      2. Ich brauche für zb 5.12.2015 alle werte davon den durschnitt und dann für den 6.12.2015
      als Ausgabe soll dann zb das hier kommen
      5.12.2015, 22
      6.12.2015, 21
      7.12.2015, 23 usw.
      Mir geht es eher um den Aufbau ich bekomme die Ausgabe nicht hin das er mir korrekt die Daten ausgibt.

      Kommentar


      • #4
        1. gibt es einen Unterschied zwischen der Ziffer 0 und der Konstante NULL, es ist nicht gleich ersichtlich, was du meinst.#
        2. Wie sieht dein DB Schema aus?
        3. Was ist dein konkretes Problem / deine konkrete Frage?

        Kommentar


        • #5
          Also folgendes Format: B
          id Wasserhöhe Temperatur Volumen Zeit
          1 2.1 18 4300 2015-11-30 01:13:13
          2 2.2 21 4400 2015-11-30 02:18:31
          3 2 22 4000 2015-12-01 02:07:07
          4 2.4 19 5333 2015-12-01 02:09:14
          es werden alle saegn wir 10 Minuten neue Werte eingeschrieben (Tabelle ist nur Beispiel)
          Ich will 2 Dinge jetzt:

          1.Von jeden eines Monats den Ersten Wert von z.B. Wasservolumen also vom 1.11.2015 und dann vom 1.12.2015 usw.
          als Ergebnis sollen nacher 12 Werte rauskommen mit Datum (brauche ich für ein Diagramm Januar, Februar usw.) Wenn also meine Daten ab 1.11.2015 beginnen sollten von Janaur bis Oktober natürlich nix rauskommen. Jetzt sind in Highcharts die Achse für Moinate ja eben schon vorgegeben da man das ja weiß...) ich will das mit Daten füttern
          also so:
          xxx // 2015-10-01
          xxx // 2015-11-01
          5333 // 2015-12-01
          immer der Wert der als erstes im Neuen Monat gemessen wurde


          2. Ich möchte eine Ausgabe Durschnitt pro Tag. Beispiel: Alle Daten von Volumen am Tag 30.11.2015 aufsummieren (Beispiel sind nur 2 nachher werden alle 10 Minuten da werte sein) und den Durschnitt berechnen und den Wert ausgeben zusammen mit Datum

          Am Beispiel also soll folgendes gerechent werden
          "Durschnittswert von Volumen für Tag 30.11.2015" // 2015-11-30
          "Durschnittswert von Volumen für Tag 01.12.2015" // 2015-12-01
          "Durschnittswert von Volumen für Tag 02.12.2015" // 2015-12-02
          ...

          Vielen Dank für Tipps

          Kommentar


          • #6
            Datenbankschema?

            Kommentar


            • #7
              id int auto incement
              wasserstand float
              temperatur float
              wasserpegel float
              zeit datetime
              MySQL Datenabnk mit InnoDB
              sind das die Informationen die du benötigst?

              Kommentar


              • #8
                Zitat von Dapinkybrain Beitrag anzeigen
                als Ergebnis sollen nacher 12 Werte rauskommen mit Datum (brauche ich für ein Diagramm Januar, Februar usw.) Wenn also meine Daten ab 1.11.2015 beginnen sollten von Janaur bis Oktober natürlich nix rauskommen. ..

                2. Ich möchte eine Ausgabe Durschnitt pro Tag. Beispiel: Alle Daten von Volumen am Tag 30.11.2015 aufsummieren (Beispiel sind nur 2 nachher werden alle 10 Minuten da werte sein) und den Durschnitt berechnen und den Wert ausgeben zusammen mit Datum
                Was ist mit Daten, die älter als 12 Monate sind bzw. auf welcher Ausschnitt soll angezeigt werden, wenn 12 Monate das Maximum ist? Soll für 2. dann eine Liste mit max. 365 Einträgen entstehen?

                Kommentar


                • #9
                  also ich glaube mit
                  PHP-Code:
                  $result mysql_query("SELECT wasserpegel FROM zisterne GROUP BY YEAR(zeit), MONTH(zeit)") ; 
                  müsste doch eigentlich das richtige sein oder? Das gibt mir schonmal die Werte aus
                  Jetzt noch einbauen wie Sie sagten, dass nur immer im Jahr das angezeigt wird also hier jetzt noch 2015

                  da ich eine Achse habe für Monate und eine für die Daten, dachte ich mir 2 php Skripte anzulegen.
                  Eins mit
                  PHP-Code:
                  MONTHNAME() 
                  mir die Monate ausgeben zu lassen für die Zeitachse und bei dem anderen eben die Werte.
                  so sollte Highcharts auch das gescheit anzeigen. Zwar sind dann die Monate wo es anfängt nicht mit eingetragen aber das Spielt ja ne absolut untergeordnete Rolle und ist ja nur für den Anfang der Datenbank releveant



                  das andere musste ich, damit Highcharts die Zeit erkennt in Zeitstempel Unix umwandeln und habe ich mit
                  PHP-Code:
                  strtotime() * 1000 
                  gemacht.

                  Kommentar


                  • #10
                    PHP-Code:
                    $result mysql_query("SELECT wasserpegel FROM zisterne GROUP BY YEAR(zeit), MONTH(zeit)") ; 
                    müsste doch eigentlich das richtige sein oder?
                    Nein, jedes im SELECT angeführte Feld muss entweder gruppiert oder aggregiert werden. So ist es falsche SQL-Syntax.

                    Anmerkung: die mysql_ Erweiterung ist veraltet und sollte nicht mehr genutzt werden -> roter Kasten. http://php.net/manual/de/function.mysql-query.php
                    Besser gleich auf mysqli_ oder PDO (zB http://php-de.github.io/jumpto/pdo/ ) umstellen.

                    Kommentar


                    • #11
                      Zitat von hausl Beitrag anzeigen

                      Anmerkung: die mysql_ Erweiterung ist veraltet und sollte nicht mehr genutzt werden -> roter Kasten. http://php.net/manual/de/function.mysql-query.php
                      Besser gleich auf mysqli_ oder PDO (zB http://php-de.github.io/jumpto/pdo/ ) umstellen.
                      hab ich gemacht... läuft
                      Zitat von hausl Beitrag anzeigen
                      Nein, jedes im SELECT angeführte Feld muss entweder gruppiert oder aggregiert werden. So ist es falsche SQL-Syntax.
                      okay hab ich berichtigt danke!

                      Kommentar


                      • #12
                        Zitat von Dapinkybrain Beitrag anzeigen
                        also ich glaube mit
                        PHP-Code:
                        $result mysql_query("SELECT wasserpegel FROM zisterne GROUP BY YEAR(zeit), MONTH(zeit)") ; 
                        müsste doch eigentlich das richtige sein oder? Das gibt mir schonmal die Werte aus
                        Jetzt noch einbauen wie Sie sagten, dass nur immer im Jahr das angezeigt wird also hier jetzt noch 2015
                        Also ich kann das gezeigte Select weder der ersten noch der zweiten Frage / Anforderung zuordnen.
                        Du wolltest doch im 1. Teil jeweils den ersten Wert des Monats oder? Da hat ein Group by nichts verloren.
                        im 2. Teil (Tagesdurchschnitt?) wäre ein Group by schon richtig, aber dann bitte auch pro Tag.

                        Kommentar

                        Lädt...
                        X