Ankündigung

Einklappen
Keine Ankündigung bisher.

MYSQl Zeiten addieren mit strftime

Einklappen

Neue Werbung 2019

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

  • MYSQl Zeiten addieren mit strftime

    Hallo,
    ich kenne mich noch nicht so gut aus vielleicht habe ich auch noch nicht die Quellen schlecht hin.... Aber ich frage mal dennoch:
    Ich würde gern alle Zeiten einer Person die es in einer Datenbank gibt Addieren, es funktioniert allerdings nur bis 24 Stunde.

    PHP-Code:
    while ($zeile=mysql_fetch_object($summe)) {
      
    $uhr explode(":"$zeile->summe);
      
    $gesamt += mktime($uhr[0], $uhr[1], 11);

    $gesamt strftime('%H:%M', ($gesamt $gesamtnull));
    echo 
    $gesamt;

    ?> 


  • #2
    Das liegt an der Formatierung, nicht am Ergebnis. Abgesehen davon ist strftime die falsche Funktion, weil ein ein Timestamp eben kein Interval ist.
    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

    Kommentar


    • #3
      Zitat von lstegelitz Beitrag anzeigen
      Das liegt an der Formatierung, nicht am Ergebnis. Abgesehen davon ist strftime die falsche Funktion, weil ein ein Timestamp eben kein Interval ist.
      Welche Funktion sollte ich benutzen aber viel wichtiger welches Format soll ich verwenden ?? ??

      Kommentar


      • #4
        Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
        Choosing an API
        Warum man mysql* generell nicht (mehr) nutzen sollte.
        Wie man von mysql* auf PDO umsteigt
        Wissenswertes zum Thema SQL-Injection
        Standards - Best Practices - AwesomePHP - Guideline für WebApps

        Kommentar


        • #5
          Zitat von rkr Beitrag anzeigen
          Die original mysql-Erweiterung ist veraltet (mysql_*-Funktionen) und wird in den kommenden Versionen aus PHP entfernt. Aktuell wirft sie schon E_DEPRECATED-Fehler bei einer Verbindung zur Datenbank. Des Weiteren stehen dir sehr viele tolle Features von mysql mit diesen Funktionen nicht zur Verfügung! Weiterführende Links:
          Choosing an API
          Warum man mysql* generell nicht (mehr) nutzen sollte.
          Wie man von mysql* auf PDO umsteigt
          Wissenswertes zum Thema SQL-Injection
          Hab ich vor ca. 10 Minuten auch gelesen ist auch wichtig zu wissen löst aber das Problem keineswegs !

          Kommentar


          • #6
            Zitat von DerRenner Beitrag anzeigen
            Welche Funktion sollte ich benutzen aber viel wichtiger welches Format soll ich verwenden ?? ??
            http://de.php.net/manual/en/class.dateinterval.php

            Für dich insbesondere wichtig ist diese user contributed note:
            http://de.php.net/manual/en/class.da...val.php#102930
            Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

            Kommentar


            • #7
              Zitat von lstegelitz Beitrag anzeigen
              Das bringt mich eher durcheinander, habe dort versucht nachzuvollziehen was ich machen soll. Dennoch ich bin jetzt eher noch mehr verwirrt als vorher. Könntest du mir vll. eine art Beispiel zeigen was sich auf meinen Fall bezieht.

              Kommentar


              • #8
                Keine Ahnung was du genau versucht hast. Hier das Beispiel, welches ich dir bereits verlinkt hatte (Code ist copy&paste fertig)
                PHP-Code:
                $timespan 489834;

                $d1 = new DateTime();
                $d2 = new DateTime();
                $d2->add(new DateInterval('PT'.$timespan.'S'));
                      
                $iv $d2->diff($d1);

                echo 
                $iv->format('%D %H %I %S'); 
                Was verwirrt dich denn?
                Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                Kommentar


                • #9
                  Zitat von lstegelitz Beitrag anzeigen
                  Keine Ahnung was du genau versucht hast. Hier das Beispiel, welches ich dir bereits verlinkt hatte (Code ist copy&paste fertig)
                  PHP-Code:
                  $timespan 489834;

                  $d1 = new DateTime();
                  $d2 = new DateTime();
                  $d2->add(new DateInterval('PT'.$timespan.'S'));
                        
                  $iv $d2->diff($d1);

                  echo 
                  $iv->format('%D %H %I %S'); 

                  Was verwirrt dich denn?
                  Mhhh ja schön doof von mir ich hab das garnicht wahrgenommen überlesen wie auch immer, es in Sekunden umzurechnen muss ich gleich mal schauen wie das geht

                  Kommentar


                  • #10
                    Stunden und Minuten bekommst du doch wohl noch in Sekunden umgerechnet...

                    PHP-Code:
                    while ($zeile=mysql_fetch_object($summe)) {
                      
                    $uhr explode(":"$zeile->summe);
                      
                    $gesamt += mktime($uhr[0], $uhr[1], 11);

                    Eine Zeitspanne berechnet sich immer aus der Subtraktion zweier Zeitpunkte.
                    Ich nehme einfach mal an, das in $zeile->summe bereits eine Zeitspanne vorliegt im Format HH:MM. Warum mktime()? Das ist die falsche Funktion, sie erzeugt einen UNIX Timestamp, was definitiv nicht der Wert ist, den du erwartest.

                    Rechne Stunden und Minuten in Sekunden um, addiere alles und du hast die Gesamtdauer. Mach das aber niemals mit Timestamps, da kommt nur Murks heraus.
                    Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                    Kommentar


                    • #11
                      Die Frage ist ja: Warum sowas in PHP machen, wenn mysql sowas schon machen könnte...

                      Code:
                      SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`time`))) AS total_time FROM time_table;
                      Standards - Best Practices - AwesomePHP - Guideline für WebApps

                      Kommentar


                      • #12
                        Zitat von lstegelitz Beitrag anzeigen
                        Stunden und Minuten bekommst du doch wohl noch in Sekunden umgerechnet...



                        Eine Zeitspanne berechnet sich immer aus der Subtraktion zweier Zeitpunkte.
                        Ich nehme einfach mal an, das in $zeile->summe bereits eine Zeitspanne vorliegt im Format HH:MM. Warum mktime()? Das ist die falsche Funktion, sie erzeugt einen UNIX Timestamp, was definitiv nicht der Wert ist, den du erwartest.

                        Rechne Stunden und Minuten in Sekunden um, addiere alles und du hast die Gesamtdauer. Mach das aber niemals mit Timestamps, da kommt nur Murks heraus.
                        Was du mir gegeben hast habe ich mit Copy Paste woanders auch entnommen... Ein wenig anders natürlich aber danke das du mir das nochmals erklärt hast, ich werde dann versuchen mich durch mein Buch eher noch durch zu arbeiten bevor ich hier jeden Schritt erfragen muss ^^

                        Kommentar


                        • #13
                          Bevor ich jedoch weiter lerne möchte ich wenigstens dieses hier zu ende bringen. Ich habe da Problem das jetzt die Zeit wenn sie über 24 Stunden liegt nicht angezeigt wird da ich diese umformatiert hab es ist doch bestimmt ein leichtes das zu beheben oder ?? ich habe folgendes verwendet:
                          PHP-Code:
                              $summe date_create($ergebnis)->format('H:i'); 

                          Kommentar


                          • #14
                            Hast du meins mal probiert?
                            Standards - Best Practices - AwesomePHP - Guideline für WebApps

                            Kommentar


                            • #15
                              Zitat von rkr Beitrag anzeigen
                              Hast du meins mal probiert?
                              Aber klar doch hier ohne den Umformatierungs Versuch kommen halt Ergebnisse wie 32:00:00 ich bräuchte bzw. möchte aber 32:00 also Stunde:Minute

                              PHP-Code:
                                  $query_summe    "SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(`summe`))) AS total_time FROM timetable;" ;
                                  
                              $result_summe mysql_query($query_summe);
                                  
                              $datensatz_summe mysql_fetch_row($result_summe);

                                  
                              $summe $datensatz_summe[0];
                                  
                                  

                              ?> 

                              Kommentar

                              Lädt...
                              X