Formular füllen - Rechnen mit Zeitwerten

  • geschlossen
  • PHP

  • AS-123
  • 2115 Aufrufe 5 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Formular füllen - Rechnen mit Zeitwerten

    Hallo,
    ich komme einfach nicht weiter an einer Stelle. Also ich habe zwei Zeitwerte.
    Track-Anfang 2010-05-01 11:04:30 = $tanfang
    Track-Ende 2010-05-03 11:05:36 = $tende
    So nun möchte ich die Differenz ausgeben, also Fahrzeit ist gleich Track-Ende ($tende) minus Track-Anfang ($tanfang). Das ganze soll dann ausgegeben werden Fahrzeit beträgt 2 Tage 01 Minuten und 06 Sekunden.
    So im Code lese ich die Zeitwerte aus und formatiere sie das sie Datenbank konform sind, und nun müsste man eigentlich rechnen können damit, aber hier scheitere ich etwas, habe schon was mit Timestamp probiert aber bin irgendwie nicht zurecht gekommen mit Umwandlung, Berechnung und Ausgabe.
    Hat jemand einen Lösungsansatz für mich.
    Gruß AS-123

    PHP-Quellcode

    1. <?php
    2. function gettime($quelle) {//Funktion zum Auslesen von time aus der gpx-Datei
    3. $quelle = substr($quelle, strpos($quelle, "<time>")+ strlen("<time>"));
    4. return substr($quelle, 0, strpos($quelle, "</time>"));
    5. }//end function
    6. function zertime($quelle) {//Funktion zum Umwandeln der Zeit
    7. $quelle = str_replace(array("T","Z"),array(" ",""), $quelle);
    8. return $quelle;
    9. }//end function
    10. $track = 'test.gpx';
    11. if (file_exists($track)) {//prüfen, ob angegebene Datei vorhanden ist
    12. echo 'Datei '.$track.' ist da';
    13. $fp = fopen( $track, "r"); // gpx-Datei öffnen
    14. $t=0;
    15. $m=0;
    16. while (! feof( $fp )) {
    17. $zeile = fgets($fp, 4096);
    18. if (strpos($zeile,"<time>") !== false) {
    19. $time[$t] = gettime($zeile);
    20. $t++; //das ist die Zahl wieviel mal <time> vorkommt
    21. }//end if
    22. } //end while
    23. fclose($fp); //gpx-Datei schließen
    24. $tspeicher = zertime($time[$t-$t]); //Speicherzeit der gpx ermitteln
    25. $tanfang = zertime($time[($t-$t)+1]); //Startzeit des Tracks
    26. $tende = zertime($time[$t-1]); //Endzeit des Tracks
    27. }//Ende Prüfung => sonst
    28. else {echo 'Datei ist nicht da.';}//Ende sonst
    29. ?>
    Alles anzeigen
    [SIZE="1"]mehr Infos[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AS-123 () aus folgendem Grund: neues Prob

  • Neues Prob mit Formular

    HI,
    Danke hab ein wenig nachgelesen und noch ein wenig gesucht und dann das hier (gefunden) gebastelt.

    PHP-Quellcode

    1. $diff = ((strtotime($tende))-(strtotime($tanfang)));
    2. $trackdiff = array("h"=>0, "m"=>0, "s"=>0);
    3. while ($diff>=3600) {// 1 Stunde = 3600 Sekunden
    4. $diff -= 3600;
    5. $trackdiff['h']++;
    6. }
    7. while ($diff>=60) {// 1 Minute = 60 Sekunden
    8. $diff -= 60;
    9. $trackdiff['m']++;
    10. }
    11. $trackdiff['s'] = $diff;
    12. print "Die Fahrzeit betrug ".$trackdiff['h']." Stunden, ".$trackdiff['m']." Minuten und ".$trackdiff['s']." Sekunden!";
    Alles anzeigen

    So nun muss ich nur noch eine Durchschnittsgeschwindigkeit errechnen und dann hab ich glaub alles.
    Gelöst - $laenge sind die Kilometer im Format 12.036

    PHP-Quellcode

    1. //Berechnung Fahrzeit für Durchschnitt
    2. $durchschnitt = str_replace(".",",",round($laenge/(((strtotime($tende))-(strtotime($tanfang)))/3600),2));

    Datenbank
    Na ich möchte gleich noch eine Frage anschließen um nicht einen neuen Trade zu starten.
    Also ich habe eine msql Tabelle wo es eine Spalte Jahr gibt und dort stehen verschiedene Jahreszahlen im Format YEAR(4) also 2008 usw.
    Nun möchte ich gern ein Formular damit füllen, also im Formular sollen alle Jahre stehen die es in der Tabelle gibt sortiert mit dem aktuellen Jahr abwärts.
    Im Moment setze ich die Daten in das Formular immer noch manuell ein, aber das ist :würg:

    HTML-Quellcode

    1. <form action="" method="get" name="mtb_jahr">
    2. <select name="jahr" size="1" id="jahr" onchange="this.form.submit()">
    3. <option value="">Saison Jahr wählen</option>
    4. <option value="2010">Saison 2010</option>
    5. <option value="2009">Saison 2009</option>
    6. </select>
    7. </form>

    Ich vermute mal das geht mit einer Schleife, aber ich brauche kleinen Denkanstoß wie so oft :confused:
    Gruß AS-123 und noch schöne Pfingsten
    (bei uns schüttet es schon wieder :mad:)
    [SIZE="1"]mehr Infos[/SIZE]

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von AS-123 () aus folgendem Grund: Teilgelöst

  • Hallo,

    Mit den Jahren, wenn ich dein Problem jetzt richtig verstanden habe, baust du die Jahre in ein Array und löst das array dann mit einer foreach schleife auf.

    PHP-Quellcode

    1. <?php
    2. //Jahre in array basteln
    3. $date = array ();
    4. $aktuell = date ( 'Y' );
    5. for($i = 1980; $i <= $aktuell; $i ++) {
    6. $a = $i - 1980;
    7. $date [] = $i;
    8. }
    9. //pulldownmenu mit date array füllen
    10. $pdmenu = '<select name = "jahr" size="1">';
    11. $pdmenu .= '<option value="">Jahr wählen</option>';
    12. foreach ( $date as $option ) {
    13. $pdmenu .= '<option value="' . $option . '">' . $option . '</option>';
    14. }
    15. $pdmenu .= '</select>';
    16. echo $pdmenu;
    17. ?>
    Alles anzeigen


    Ich hoffe, dass du damit was anfangen kannst. :)
    Jetzt muss ich aber raus hier ist wunderbares Wetter!!!!

    Greetz
    DJPM1
  • Vergessen - Pulldownmenu die zweite

    Hallo,
    fast hätte ich diesen Beitrag vergessen. Na ja war im Moment etwas Stressig bei mir.
    @DJPM1
    dieser Ansatz ist schon mal nicht schlecht aber das Array dibt mir ja alle Jahre aus von 1980 bis jetzt.

    Was ich aber Suche ist ein Pulldownmenu was mir die Jahreszahlen einer Datenbank ausgibt.
    Also ich habe eine Datenbanktabelle Tab1 mit Spalte id und Spalte Jahr.
    In der Tabelle steht jetzt zB.
    id / jahr
    1 / 2010
    2 / 2010
    3 / 2008
    4 / 2007
    5 / 2005

    Nun soll das Pulldownmenu halt nur diese Jahre auflisten also 2010-2008-2007-2005

    Gruß AS-123
    [SIZE="1"]mehr Infos[/SIZE]
  • Na, das ist doch eine simple SQL-Abfrage

    SQL-Abfrage

    1. SELECT `jahr` FROM `Tabelle` ORDER BY `jahr` DESC

    Dann halt nur noch die Mitte von DJPM1s Script nehmen, foreach mit der "fetch-while-Schleife" ausgetauscht und es sollte stimmen.

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.