Ankündigung

Einklappen
Keine Ankündigung bisher.

Differenz zwischen zwei Uhrzeiten berechnen und abspeichern?

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

  • Differenz zwischen zwei Uhrzeiten berechnen und abspeichern?

    Hallo Leute,
    Vorab. ich bin recht neu im Webdesign und würde meine Kenntnisse darin erweitern da mir immer wieder auffällt wie nutzvoll sowas seien kann.
    Da ich bereits meine Hello World usw. kenntnisse habe wollte mein erstes Projekt starten und da komme ich gerade an ein Problem an.

    Ich würde gerne eine Stopuhr basten sehr simple aufgebaut ich scheitere Aktuell daran das ich keine Ahnung habe wie ich über ein Button der MySQL Datenbank sage das die aktuelle Uhrzeit abgespeichert wird.
    und beim nächsten drauf drücken sollte dann wieder die aktuelle Uhrzeit abgespeichert werden daraus soll dann die Differenz in MInuten ermittelt werden.

    habe allerdings keine Ahnung wie ich das bewerkstelligen soll. bitte seit nachsichtig bin erst totaler Webdeseign neuling und taste mich so langsam an php ran.

    Meine Vorkenntnisse in Programmieren bewegen sich eher im Statistischen Programmieren und Datenbanken
    sonstige Basic kenntnisse sind in Java und C/C++

    Hoffe ihr könnt mir weiterhelfen mir würde auch schon eine seite reichen in der ich mir das alles durchlesen kann aber irgendwie findet sich zu dieser Thematik keine hilfe :S oder ich suche falsch.


  • #2
    Na, da hast du dir ja ein schönes Thema ausgesucht.
    Stoppuhr mit PHP, HTML-Ausgabe und speichern in DB ist kein triviales Problem. Der Hintergrund ist, wie das Internet bzw das HTT-Protokoll arbeitet.
    Dazu kommt, dass PHP auch erst mal eine Verbindung zur Datenbank aufbauen muss, Zeitverzögerung.
    Und der Clou ist, dass wenn das PHP-Script fertig ist. alle Daten aus dem Speicher gelöscht werden, also es ist nichts gibt worauf man zugreifen könnte, also keine Variable, keine Scripte und keine Datenbankverbindung.

    Wenn dir das erst mal alles klar ist und du dann sagst, gut ich will nur verstehen wie man Daten übernimmt, zum Beispiel aus einem Formular, diese, mit PHP entgegen nimmt und diese dann in einer DB speichert, dann hast du 3 Baustellen.

    HTML und CSS lernen.
    PHP lernen.
    SQL lernen.

    Ganz gut sind die Erklärungen von Peter Kropff, schau da mal rein und lies dir das Thema auch zu Mysql durch.
    Das Handbuch zu PHP solltest du auch mal lesen, zumindest die Kapitel bis zu den Funktionen.
    Und HTML und CSS gibt es hier zu bestaunen.





    Kommentar


    • #3
      hi protestix,

      einmal herzlichen dank für diese Wunderbare Hilfe !

      also habe mich bereits mit HTML und CSS beschäftigt beruflich habe ich auch viel mit Datenbanken zu tun (Access und Excel Datenbanken) in MySQL arbeite ich mich derzeit heran,
      PHP ist bei mri eine einzig ware Baustelle ich kriege so die wichtigsten Funktionen bereits hin also tabellen erstellen mit Abfragen aus der MySQL datenbank, Button und textfelder erstellen zum eintragen und ändern der MySQL Bank ebenfalls programm.

      das ist mein Aktueller Fortschritt im Webdesign und Webdevoloping.

      Nun zu der Frage ob eine Stoppuhr die Webbasiert ist Sinn macht.
      Wahrscheinlich nicht mit dieser Problematik wurde ich bereits über Google Konfrontiert.

      Ich wollte mich in die Thematik der Zeitbasierten Programmierung einarbeiten. als Ziel wollte ich folgendes schaffen (einer meiner Meilensteine die ich geleget habe)

      MySQL Datenbank
      User_Data

      Spalten:
      ID, Name, Minuten, Anfangszeit, Endzeit
      1, Asaak, 13, 21:50, 22:03

      und nun stelle ich mir das wie folgt aus es gibt ein Button der die Anfangszeit Abspeichert und ein Button der die Endzeit abspeichert daraus werden die Minuten gebildet und DAZU ADDIERT
      Sobald auf "Abmelden" geklickt wird soll die Differenz in Minuten berechnet werden und zu der Spalte Minuten hinzugezählt werden.

      so wäre jetzt meine Überlegung aber irgendwie denke ich das es deutlich einfacher geht deswegen habe ich gehofft das ich eine MySQL basierte Stoppuhr hinbekomme dann könnte ich das Prinzip ohne Probleme auf meinen Meilenstein übertragen.

      nun würde ich gerne wissen ob mein "Ansatz" Richtig und die "Feine Englische Art" ist wie ich die Sache angehen möchte ? geringe Verzögerungen werden Toleriert bis zu 5 Minuten.

      Ich hoffe du/ihr verstehen worauf ich am ende hinaus möchte


      Alternative Lösung: was meiner Meinung nach gerade besser klingt ist mir gerade eingefallen:

      Wie wäre es wenn man die Minuten immer aus Anfangs und Endzeit berechnet nun wird beim Drücken auf Start lediglich die Endzeit weitergeführt...
      uff diese Uhrzeiten also Times machen mir echt schwierigkeiten :/ irgendwie habe ich das gefühl das es eigentlich recht easy geht und ich mir irgendwie umsonst soviele gedanken mache T_T

      Kommentar


      • #4
        Die Minuten aus der Differenz von der Datenbank berechnen zu lassen ist eine Möglichkeit.
        Hier mal wie es aussehen könnte (Mysql)

        Tabelle erstellen
        PHP-Code:
        CREATE TABLE IF NOT EXISTS `logging` (
          `
        idint(11NOT NULL AUTO_INCREMENT,
          `
        uservarchar(25NOT NULL,
          `
        date_startdatetime NOT NULL,
          `
        date_enddatetime NOT NULL,
          
        PRIMARY KEY (`id`),
          
        KEY `user` (`user`),
          
        KEY `date_start` (`date_start`),
          
        KEY `date_end` (`date_end`)
        ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=
        .
        Ein paar Testdaten
        PHP-Code:
        INSERT INTO
            
        `logging` (`id`, `user`, `date_start`, `date_end`)
        VALUES
            
        (NULL'Hans''2017-07-14 04:00:00''2017-07-14 12:00:00'),
            (
        NULL'Martin''2017-07-14 01:20:00''2017-07-14 01:22:00'),
            (
        NULL'Socke''2017-07-14 03:20:00''2017-07-14 04:59:45'); 
        Abfrage der Differenz in Minuten für den User Martin sieht dann so aus
        PHP-Code:
        SELECT
                
        `id` , `user` , `date_start` , `date_end` ,
                
        TIMESTAMPDIFF(MINUTE , `date_start` , `date_end` ) AS Minuten
        FROM
                
        `logging`
        WHERE
                
        `user` = 'Martin' 
        Woher die Daten kommen die du in die DB einpflegst ist dabei nebensächlich, das kann ein Formular sein, wie du angedeutet hast, aber auch Zeiten aus einer Sessionvariable oder einer anderen Anwendung.

        Wie man Formulare erstellt und die Daten in PHP übernimmt ist hier im Forum jede Woche mindestens ein mal erklärt.

        Kommentar


        • #5
          Also mein Vorschlag wäre, du machst die Stoppuhr mit JavaScript.

          Beim Starten zeigst du die laufende Uhr an und speicherst die in JavaScript ermittelte Zeit mit PHP in der Datenbank ab (AJAX)
          Beim Stoppen genau das gleiche

          Wichtig: Achte auf Zeitzonen! Speichere die Zeit am besten als GMT / UTC

          Warum JavaScript?:
          Weil JavaScript nicht auf dem Server ausgeführt wird, also folglich die Zeit, die das Script bzw. die Seite zum Laden braucht nicht relevant ist. Die Stoppuhr wäre also nicht nur genauer sondern würde auch schneller reagieren. Den Teil, wo PHP was in die Datenbank schreibt könntest du aber trotzdem als "PHP lernen" nutzen.

          Beispiel für eine JavaScript-Stoppuhr: https://codepen.io/furouco/pen/KVWjbK
          Differenz von zwei Datumswerten: https://stackoverflow.com/questions/...-in-javascript

          Wenn die Stoppuhr auch weiter laufen soll, wenn der Rechner aus ist, kann man das lösen, dass du zu dem Zeiteintrag in der Datenbank noch eine GUID speicherst und diese im localStorage hinterlegst. So weißt du, welche Zeit du von PHP per Ajax laden musst.
          http://www.fynder.de - Tutorials zum Thema Technik

          Kommentar


          • #6
            Vielen dank,

            ich danke euch vom ganzen Herzen. Sind jetzt einige ... naja doch schon recht viele Begriffe aufgetaucht die mir Fremd sind werde erstmal eine kleine ewigkeit brauchen um mich da komplett durchzulesen und vorallem den code von protestix meinen "Meilenstein" anzupassen.


            Kurze Frage wenn ich den Code jetzt kurz richtig verstanden habe wird ja die Differenz in Minuten über eine SQL Abfrage ermittelt und nicht über ein PHP Code Berechnet stimmt das so in etwa ?
            dann habe ich ja das problem das ich den garnicht in die Spalte "Minuten" Addieren kann ? da ich ja die Start und Endzeit immerwieder neu angebe ?

            Kommentar


            • #7
              MOD: Verschoben von PHP-Einsteiger
              PHP.de Wissenssammlung | Debugging: Finde DEINE Fehler selbst! | mysql_* ist veraltet! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__ | Kein Support per PN

              Kommentar

              Lädt...
              X