MYSQL & PHP : Zeiten speichern

  • Hallo!

    Ich bin neu hier und mir nicht ganz sicher ob ich alles richtig mache,
    aber ich weiss nicht wohin sonst mit meiner Frage.. [Blockierte Grafik: http://www.html.de/styles/default/xenforo/clear.png:(

    Ich habe mittels AJAX, PHP, MYSQL ein so genanntes "Beförderungstool" geschrieben.

    Hierbei ist der Sinn einen Mitarbeiter einzutragen in eine Tabelle, nach 90min gearbeitete Zeit
    erscheint dann eine Schrift in der Tabelle mit "Beförderungszeit!".
    Der Mitarbeiter kann dann auf Knopfdruch "Befördern" auf den nächsten Rang befördert werden.
    (Das Ganze dient natürlich nur einem Onlinespiel [Blockierte Grafik: http://www.html.de/styles/default/xenforo/clear.png])

    Ich habe soweit alles alleine gepackt, nun stehe ich aber vor einem Punkt wo ich nicht mehr weiter weiss,
    und ich hoffe ihr könntet mir weiterhelfen.

    Ich scheitere an der Funktion abmelden, bei dieser soll der Mitarbeiter die Minuten die er gearbeitet hat, gutgeschrieben bekommen, und beim erneuten Anmelden das was er bereits erarbeitet hat, wieder bekommen.
    Hierzu ein Beispiel: Mitarbeiter Testacc meldet sich an, muss 90 Minuten arbeiten, geht nach 20 Minuten aber wieder,
    danach meldet er sich wieder an wenn er wieder kommt, nun muss er nurnoch 70 Minuten arbeiten.

    Mein bisheriger Code für das Anmelden:

    Ich hoffe jemand kann mir in meiner Verzweiflung noch helfen..
    Weiss echt nicht mehr weiter und bin über jeden Ratschlag froh!

    Danke und liebe Grüße,
    aClaim

    Einmal editiert, zuletzt von aClaim (18. Dezember 2014 um 20:04)

  • Autsch.
    Da seh ich schonmal jede menge verschwendeten Speicherplatz.
    Name und Rang in einer Tabelle die für die Zeiterfassung dienen soll?

    Klingt jetzt kompliziert aber ich würde das ganze mit 3 Tabellen lösen.

    Tabelle1 die Memberdaten
    ID, Username, Rang usw....

    Tabelle2 die Anmeldezeiten
    ID, Zeit
    Feld ID entspricht der UserID aus Tabelle1
    Feld Zeit ist der Zeitwert der anmeldung, hier kannst du einfach time() oder ähnliches speichern

    Tabelle3 die waren Arbeitzeiten
    ID, Datum, Zeit
    Feld ID = Userid aus Tabelle1
    Datum naja das Datum halt, am besten auch in einer Form die man sortieren kann also bitte nicht dd.mm.yyyy !
    Zeit = die Arbeitszeit in Minuten

    Der Ablauf kann dann so aussehen
    User meldet sich an:
    ID wird aus Tabelle 1 geladen und zusammen mit dem Zeitwert in Tabelle 2 eingetragen.
    FERTIG

    User meldet sich ab:
    ID wird aus Tabelle 1 gezogen
    Anmeldezeit wird anhand der ID aus Tabelle2 gezogen
    Datensatz wird anhand der ID aus der Tabelle2 gelöscht !

    Anmeldezeit wird dann von aktueller Zeit abgezogen, wenn du dabei mit time() arbeitest, erhällst du damit die "Arbeitszeit" in Sekunden

    Tabelle3 wird geprüft ob Userid aus Tabelle1 und das aktuelle Datum vorhanden sind.
    Wenn nicht
    wird Userid, Datum die die Arbeitszeit in Tabelle3 gespeichert.
    Wenn ja
    wird Arbeitszeit aus Tabelle3 gelesen, mit aktuell ermittelter Arbeitszeit addiert und der vorhandene Datensatz in Tabelle3 aktualisiert.

    Meldet sich der User dann nochmal an weil er seine Arbeitszeit noch nicht voll hat. geht das ganze von vorne los.

    Sinn des ganzen ???
    Tabelle1 enthält alle festen oder fast festen Daten des Users die sich nur selten ändern.

    Tabelle 2 ist jeder User nur einziges mal vorhanden, oder gar nicht. Und zwar ist der User da nur eingetragen wenn er angemeldet ist. also hast du hier so ganz nebenbei noch einen kleinen "wie viel sind online" Zähler

    Tabelle 3 enthält dann die reinen Arbeitszeiten wobei auch hier jeder User nur 1 mal pro Tag gespeichert ist ganz egal wie oft er sich an oder abmeldet.

    Aufpassen muss man nur bei Tabelle2 das die nicht zugemöhlt wird, wenn sich ein User nur anmeldet und "vergisst" sich abzumelden.

  • Auszug aus den Forenregeln:

    Zitat

    Inhalt von Beiträgen:
    [FONT=Verdana, Arial, Helvetica, sans-serif]Forum-Hilfe behält sich das Recht vor, jederzeit Beiträge zu löschen, zu verschieben oder zu überarbeiten, die nicht den Forumsregeln entsprechen. Dies geschieht ohne vorherige Information des Verfassers. Die User ist alleine für die von ihnen publizierten Inhalte (Texte; Bilder oder andere Veröffentlichungen) verantwortlich und bestätigt auch damit, das er keine Copyrightgeschütze Werke und Texte hier im Forum veröffentlicht.
    Verboten oder auch unerwünscht sind folgende Inhalte: [/FONT]

    • [FONT=Verdana, Arial, Helvetica, sans-serif]extrem politisch oder religiös orientierte Postings [/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]strafbare, pornographische, jugendgefährdende, beleidigende oder ehrverletzende Inhalte[/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]Warez oder fremde copyrightgeschütze Werke [/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]E-Mail Adressen [/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]Songtexte [/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]persönliche Angaben wie Telefonnummern, Adressen usw (diese bitte per PN austauschen) [/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]oder anderweitig inakzeptabel Postings, die hier nicht erfasst wurden, aber gegen geltendes Recht, die guten Sitten, allgemeines Moralempfinden oder eben gegen die Forenregeln verstossen.[/FONT]
    • [FONT=Verdana, Arial, Helvetica, sans-serif]Crosspostings - die gleiche Frage in mehreren anderen Foren gleichzeitig stellen[/FONT]