Timestamp-Vergleich

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

  • Timestamp-Vergleich

    Hallo Profies,

    ich habe wieder mal eine Frage und hoffre nicht nervent zu erscheinen,
    und das mir dabei jemand einen Tipp geben kann,
    denn auf Arbeit ( Einzelhandel ) habe ich inzwischen alle Bücher gewälzt jedoch ohne ein Ergebnis ---> und das waren einige.

    Wie kann ich eine Abfrage machen, die den Timestamp für einen kompletten Tag vergleicht, und mir dann den Tag ausgibt, der die meisten Hits hat.

    Ich lese die Hits mit der Spalte 'mp' raus und muß nun diese 'mp' zusammenzählen und gleichzeitig die Timestamps vergleichen, die den gleichen Wert haben, aber ich kann ja keine Selct-Anfrage mit if
    $time = $time machen.

    Danke im voraus

    Gruß Manuela

  • #2
    doch, if geht auch innerhalb von sql-Anweisungen
    versuch mal so:
    PHP-Code:
    $heute_früh=strtotime(date('Y-m-d 00:00:01',time()));
    $heute_abend=strtotime(date('Y-m-d 23:59:59',time()));

    /* Tabelle 
    * ===========
    * stamp => timestamp
    * mp => hits
    */

    $sql="    SELECT stamp, sum( IF(stamp>=$heute_früh && stamp<=$heute_abend, mp, 0)) 
            FROM tabelle
            GROUP BY stamp
        "

    TBT

    Die zwei wichtigsten Regeln für eine berufliche Karriere:
    1. Verrate niemals alles was du weißt!


    PHP 2 AllPatrizier II Browsergame

    Kommentar


    • #3
      Danke für die schnelle Antwort,

      mein Code

      PHP-Code:
      $heute_früh=strtotime(date('Y-m-d 00:00:01',time()));
      $heute_abend=strtotime(date('Y-m-d 23:59:59',time()));

      $sql=" SELECT time, sum( IF(time>=$heute_früh && stamp<=$heute_abend, mp, 0)) 
             FROM tabelle
             GROUP BY time
           "
      ;
        
      $res mysql_query($sql);
        
      $test mysql_result($res ,0);
        echo 
      $test
      Bekomme folgende Fehlermeldung :

      Warning: mysql_result(): supplied argument is not a valid MySQL result resource

      Muß ich die Abfrage nun anders auswerten ?

      Danke Gruß Manuela

      Kommentar


      • #4
        Wo isn Deine DB verbindung, etc...
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Die DB-Verbindung wird am Anfang vom Script ausgeführt und wärend des Scriptes bleibt diese offen und wird erst am Ende des Scriptes geschlossen.

          Da das Script aus mehreren Abfragen besteht.

          Gruß Manuela

          Kommentar


          • #6
            poste mal mehr code und zeilennummern...
            Beantworte nie Threads mit mehr als 15 followups...
            Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

            Kommentar


            • #7
              Upppss,

              jo - danke habe vergessen dien Table-Namen an zu passen.

              Jedoch bekomme ich den ersten Timeeintrag ausgegeben
              und laut Statistik wäre das nicht richtig !

              Kann es sein, da mein Zellenname auch 'time' trägt,
              daß das Script deshaln durcheinander kommt.

              Gruß Manuela

              Kommentar


              • #8
                Da war 'MelloPie' mit dem posten schneller als ich :-)

                Der derzeitige Code wäre folgender :

                PHP-Code:
                $heute_frueh strtotime(date('Y-m-d 00:00:01',time()));
                $heute_abend strtotime(date('Y-m-d 23:59:59',time()));

                $sql=" SELECT time, sum( IF(time>=$heute_frueh && time<=$heute_abend, mp, 0))
                FROM "
                .$tbl_logs."
                GROUP BY time"
                ;
                 
                $res mysql_query($sql);
                 
                $test mysql_result($res ,0);
                 echo 
                'Am&nbsp;'date("d.m.Y, H:i",GMTtoUser($test),'&nbsp;Uhr'
                Und wie schon erwähnt wird der erste Logeintrag angezeigt,
                also die selbe Ausgabe wie auch folgender Code bewirkt.

                PHP-Code:
                  $sql "SELECT time FROM ".$tbl_logs." ORDER BY time ASC LIMIT 0,1";
                  
                $res mysql_query($sql);
                  
                $leintrag = @mysql_fetch_array($res);
                  echo 
                'Am&nbsp;'date("d.m.Y, H:i",GMTtoUser($leintrag['time'])),'&nbsp;Uhr'
                Woran liegt das ?

                Zeilennummern brauche ich nun nicht mehr zu posten,
                da keine Fehlermeldungen mehr erscheinen.

                Danke im voraus Gruß Manuela

                Kommentar


                • #9
                  Also, ich denke es kann ja nicht funktionieren,
                  da die Abfrage ja nur die Uhrzeit vom aktuellen Tag vergleicht oder ?

                  H I L F E !

                  Gruß Manuela

                  Kommentar


                  • #10
                    dann probier doch mal so:
                    Code:
                    SELECT
                    	DATE_FORMAT( FROM_UNIXTIME(stamp), '%Y-%m-%d') datum,
                    	SUM( mp ) hits
                    FROM tabelle
                    GROUP BY datum
                    ORDER BY hits DESC
                    ob das ORDER BY hier jetzt funzt, hab ich nicht probiert
                    TBT

                    Die zwei wichtigsten Regeln für eine berufliche Karriere:
                    1. Verrate niemals alles was du weißt!


                    PHP 2 AllPatrizier II Browsergame

                    Kommentar


                    • #11
                      mmmhhhh, danke aber nun bekomme ich folgende Ausgabe :

                      Am 01.01.1970, 02:33 Uhr

                      mit folgenden Code :

                      PHP-Code:
                      $sql ="SELECT DATE_FORMAT( FROM_UNIXTIME(time), '%Y-%m-%d') datum,
                             SUM( mp ) hits
                             FROM "
                      .$tbl_logs."
                             GROUP BY datum
                             ORDER BY hits DESC"
                      ;
                             
                      $res mysql_query($sql);
                             
                      $test mysql_result($res ,0);
                             echo 
                      'Am&nbsp;'date("d.m.Y, H:i",GMTtoUser($test)),'&nbsp;Uhr'
                      Ich habe zur Unterstützung mal einen 'Dump' drangehangen,
                      vielleicht hilft es ja.

                      Danke im voraus - Gruß Manuela
                      Angehängte Dateien

                      Kommentar


                      • #12
                        zeig mal die Funktion GMTtoUser
                        TBT

                        Die zwei wichtigsten Regeln für eine berufliche Karriere:
                        1. Verrate niemals alles was du weißt!


                        PHP 2 AllPatrizier II Browsergame

                        Kommentar


                        • #13
                          PHP-Code:
                          function GMTtoUser($time,$is_a_user true) {
                              global 
                          $gmt,$admin_GMT;
                              
                              if(!
                          $is_a_user$gmt $admin_GMT;
                              return 
                          $time+$gmt*3600;

                          Jedoch wird dieses wohl nicht viel nutzen,
                          da die Variabeln aus einer anderen Script included werden.

                          Im Prinzip wird abgefragt in welcher Zeitzone sich der User befindet
                          und dem entsprechen die GMT-Zeit eingestellt.

                          Gruß Manuela

                          Kommentar


                          • #14
                            die Funktion geht aber schief in diesem Falle,
                            da kein Timestamp, sondern eine Datumsangabe
                            übergeben wird.

                            also statt

                            454657686

                            wird

                            2002-01-01

                            übergeben. Was kommt dann raus bei return $time+$gmt*3600;
                            ?
                            TBT

                            Die zwei wichtigsten Regeln für eine berufliche Karriere:
                            1. Verrate niemals alles was du weißt!


                            PHP 2 AllPatrizier II Browsergame

                            Kommentar


                            • #15
                              Eine Stunde weniger 'Am 01.01.1970, 01:33 Uhr'

                              Irgendwas scheint mit der Abfrage bzw. den Variabeln
                              nicht zu stimmen denn er übernimmt die Unix-Epoche
                              nur 1 Stunde und 33 Minuten später.


                              Gruß Manuela

                              Kommentar

                              Lädt...
                              X