Ankündigung

Einklappen
Keine Ankündigung bisher.

Letzte 24 Stunden aus mysql-DB auslesen

Einklappen

Neue Werbung 2019

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

  • Letzte 24 Stunden aus mysql-DB auslesen

    Hallo Gemeinde!

    Ich habe folgendes Problem. Ich bin am Aufbau einer eigenen Wetterseite. Dazu möchte ich u.a. die min/max-Werte der letzten 24 Stunden aus einer mysql-Datenbank auslesen. Die reinen min/max-Werte krieg ich ja auch problemlos raus.

    PHP-Code:
    #min/max-Werte aus Datenbank auslesen
    $sql="SELECT min(druck), max(druck), zeit FROM wetterdaten2 ORDER BY id DESC";
    $_resultatLD mysql_query($sql$db_link);
    $_datenLD mysql_fetch_array($_resultatLD);
    $minLD $_datenLD[0];
    $maxLD $_datenLD[1]; 
    Scheitern tue ich an den 24 Stunden.

    Ich hab die verschiedensten Varianten ausprobiert:
    PHP-Code:
    $sql="SELECT min(druck), max(druck), zeit FROM wetterdaten2 ORDER BY id DESC WHERE zeit BETWEEN zeit AND zeit-86400"
    aber nichts klappt.

    Ist bestimm ganz einfach, aber ich habe wohl grad ein Brett vorm Kopp.
    Der Plan ist, vom letzten DB-Eintrag vom timestamp in der Spalte zeit einfach 24 Stunden/86400 Sekunden abzuziehen und die Auswertung auf diesen Bereich zu beschränken.

    Wäre toll, wenn mir jemand auf die Sprünge helfen könnte.

    Gruß habus

  • #2
    Code:
    WHERE zeit > UNIX_TIMESTAMP() - 86400
    ?
    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

    Kommentar


    • #3
      Also so?
      PHP-Code:
      $sql="SELECT min(druck), max(druck), zeit FROM wetterdaten2 ORDER BY id DESC WHERE zeit > UNIX_TIMESTAMP() - 86400"
      Da bekomme ich das:
      Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in F:\Dropbox\Documents\Meine Homepage\test1.php on line 27

      Gruß habus

      Kommentar


      • #4
        Zitat von habus Beitrag anzeigen
        Also so?
        Falscher Aufbau des SQL's. Schau in die Doku, was in welcher Reihenfolge da hingehört.
        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

        Kommentar


        • #5
          Ich danke euch Beiden! Scheint jetzt zu klappen. Ich hab mir nur eben noch die Karten gelegt, weil ich mit der lokalen Datenbank keine korrekten Ergebnisse erziele. Aber das ist wohl logisch, die wird ja nicht aktualisiert.

          Ich spendier euch ein virtuelles Bier, für die schnelle Hilfe!

          Aber freut euch nicht zu früh, ich komme wieder!
          Die nächsten Pläne sind wöchentliche, monatliche und jährliche Auswertungen...

          Gruß habus

          Kommentar


          • #6
            Hi,

            bin ich früher wieder da, wie ich selbst dachte...

            Nachdem ich mir eurer Hilfe die Werte der letzten 24 Std. super auslesen kann, hab ich daraus mit jpgraph ein Verlaufsdiagramm gebastelt.

            Erster Versuch zum Anschauen: http://wetter-aus-teltow.de/jpgraph/druck.php

            Das Problem hierbei ist, dass der aktuellste Wert des Graphen hier links dargestellt wird, also entgegen der üblichen Lesweise.

            Hier mal der Code:

            PHP-Code:
            <?php
            ......
            $db_link mysql_connect (MYSQL_HOST
                                      
            MYSQL_BENUTZER
                                      
            MYSQL_KENNWORT);
                                      
            mysql_select_dbMYSQL_DATENBANK )
                  or die(
            "Auswahl der Datenbank fehlgeschlagen");
                  
            $timestamp time();      

            $table=mysql_query("SELECT druck, zeit FROM `wetterdaten2`  WHERE zeit > UNIX_TIMESTAMP() - 86400 ORDER BY zeit DESC");
            $rows=mysql_num_rows($table);
            $druck=array();
            for(
            $a=0$a<$rows$a++)
            {
            $druck[$a]=mysql_result($table,$a);
            }



            // Setup the graph
            $graph = new Graph(450,250);
            $graph->SetScale("datlin");
            $graph->SetBox();

            // Grafik Formatieren 
            $graph->img->SetMargin(70,30,20,10); 
            $graph->title->Set(date("d.m.Y - H:i:s"$timestamp)); 
            $graph->xaxis->title->Set("Uhrzeit"); 
            $graph->xaxis->SetTitlemargin(10);              //Abstand (in Pixel) Achsentitel zu Achse
            $graph->yaxis->title->Set("Luftdruck [hPa]");
            $graph->yaxis->SetTitlemargin(50);

            $graph->title->SetFont(FF_FONT1,FS_BOLD); 
            $graph->yaxis->title->SetFont(FF_FONT1,FS_BOLD); 
            $graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);

            $graph->ygrid->SetFill(false);

            $graph->SetBackgroundImage("../Bilder/mmpapier.jpg",BGIMG_FILLFRAME);

            $p1 = new LinePlot($druck);
            $graph->Add($p1);

            $p1->SetColor("blue");

            // Output line
            $graph->Stroke();

            ?>
            Über "// Setup the graph" müsste also die Werte von $druck nochmal sortiert werden, und zwar diesmal absteigend nach der Spalte 'zeit'. Geht sowas? Oder wo muss ich ansetzen?

            Hab jetzt stundenlang gegoogelt und auch hier im Forum gesucht, aber nichts passendes gefunden...

            LG Bernd

            Kommentar


            • #7
              Stuuundenlang gegoogelt? Wirklich?

              Wie wäre es mit dem Stichwort "sortieren"?
              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

              Kommentar


              • #8
                Mit sort hab ich schon rumgemurkst, aber da sortiert er mir den Luftdruck absteigend. Is ja auch nicht Sinn der Sache. Mir ist gestern noch aufgefallen, dass die Werte von 'zeit' gar nicht im Array enthalten sind. Daran liegt es sicher, dass ich mit sort nicht weitergekommen bin.

                Gruß Bernd

                Kommentar


                • #9
                  mysql_* ist inzwischen veraltet und wird ab der nächsten PHP Version nicht mehr dabei sein.
                  Daher wäre ein Umstieg auf PDO (http://php.net/manual/de/book.pdo.php) oder mysqli (http://php.net/manual/de/book.mysqli.php) nötig.

                  LG
                  https://github.com/Ma27
                  Javascript Logic is funny:
                  [] + [] => "", [] + {} => object, {} + [] => 0, {} + {} => NaN

                  Kommentar


                  • #10
                    Warum lässt du denn die Datenbank nicht direkt bei der Query sortieren?
                    [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                    Kommentar


                    • #11
                      Zitat von tkausl Beitrag anzeigen
                      Warum lässt du denn die Datenbank nicht direkt bei der Query sortieren?
                      Teufelszeug!
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        @Ma27: Danke für den Tipp!

                        Wenn ich beim query aufsteigend sortiere bekomme ich doch statt der letzten 24 Stunden der ersten 24 Stunden aus der DB gelistet, und die liegen seit Start der DB inzwischen fast eine Woche zurück. Oder mache ich da einen Denkfehler?

                        Im Manual hab ich inzwischen krsort gefunden und dachte, das isses. Die Ausgabe mit print_r zeigt genau das gewünschte Ergebnis an. Gemeinerweise ist das aber dem Diagramm völlig egal. Weiß einer warum?

                        Gruß Bernd

                        Kommentar


                        • #13
                          Ach egal...
                          Pre-Coffee-Posts sind mit Vorsicht zu geniessen!

                          Kommentar


                          • #14
                            Zitat von habus Beitrag anzeigen
                            Wenn ich beim query aufsteigend sortiere bekomme ich doch statt der letzten 24 Stunden der ersten 24 Stunden aus der DB gelistet, und die liegen seit Start der DB inzwischen fast eine Woche zurück. Oder mache ich da einen Denkfehler?
                            Schau dir mal deine Where an, die größen Zeiten bleiben auch nach dem Sortieren noch die größten Zeiten. Außerdem passiert das ORDER BY nach dem WHERE.
                            [QUOTE=nikosch]Macht doch alle was Ihr wollt mit Eurem Billigscheiß. Von mir aus sollen alle Eure Server abrauchen.[/QUOTE]

                            Kommentar


                            • #15
                              Ooh Mann.Und ich leg mir hier stundenlang die Karten, weil ich den Wald vor lauter Bäumen nicht sehe.
                              Vielen Dank, tkausl! Klappt so.

                              Gruß Bernd

                              Kommentar

                              Lädt...
                              X