Hilfe PHP Urlaubsplanung

  • Hallo, tut mir leid, wenn ich hier mit so Anfängerfragen anfange, aber ich weiß echt nicht weiter.
    Für ein Projekt meines Studiums soll ich ein Programm schreiben, das die Urlaubsanträge von Mitarbeitern verwalten soll. Leider hatte ich mit PHP nur Grundlagenkenntnisse.

    Also ich hänge an folgender Sache:

    Man gibt das Datum des Urlaubsbeginns und das Datum vom Ende des Urlaubs. Aus den EIngaben mache ich mit einer Funktion eine Zahl, subtrahiere die beiden Daten und hab die Differenz in Tagen. Wie kann ich aber jetzt Samstage - Sonntage und die Feiertage erkennen und abziehen?

    Ich hoffe ihr könnt mir helfen.

  • Samstag oder Sonntag findest du mit der Funktion date raus. Für die Feiertage würde ich mir eine Tabelle in der DB anlegen, da die ja nicht immer am gleichen Datum liegen müssen. So eine Tabelle findet man im Internet.

  • also 6 eingabefelder.

    urlaubsbeginn tag
    urlaubsbeginn monat
    urlaubsbeginn jahr
    urlaubsende tag
    urlaubsende monat
    urlaubsende jahr

    die fasse ich zusammen zu einem datum

    urlaubsendedatum - urlaubsbeginndatum = differenz

    loop bis urlaubsbeginndatum = urlaubsendedatum ist.
    prüfung ob urlaubsbeginndatum samstag oder sonntag oder feiertag ist.
    falls ja differenz = differenz - 1
    urlaubsbgeinndatum = urlaubsbeginndatum +1.
    endloop.

    resturlaub = resturlaub - differenz.

    wie mach ich jetzt die prüfung in der schleife?

  • hm, hab keine gefunden, die mir den wochentag ausgibt :( hat jemand eine idee?

  • hallo, tut mir leid.
    ich hoffe ich machs jetzt besser. hab ein wenig dran rumgefummelt und bin auch ein gutes stück weiter. allerdings scheitere ich daran einen tag auf das datum draufzurechnen. er lässt das jahr weg und gibt keinen wochentag aus. naja, hier mal der link.

    http://dasi0004.da.ohost.de/datumtest2.php?start=1

    und hier der quellcode:

    http://pastebin.com/ktF9APtk

    verzeiht meine unwissenheit. ich werde mit dem php nicht so richtig warm. kein debugger zu haben macht mich fertig.

  • Uraltscripting!!! Stichwort: register_globals

    Richtig debuggen
    1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
    2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL); und ini_set("display_errors", true);
    3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
    4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde (oder auch nicht).
    5. Schritt 3 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
    6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
    7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
    8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.

  • ich konnte das problem eingrenzen.

    1. beim durchlaufen der schleife funktioniert das addieren eines tages zum anfangsdatum nicht. aus dem 22.02.2010 wird als folgetag der 23.02. angegeben (keine jahreszahl). und er zählt auch immer weiter egal ob es der 31. eines monats ist.

    2. er gibt einen donnerstag aus. egal welcher tag es ist.

    weiß jemand was ich beim addieren eines tages falsch gemacht habe? ich versuchte auch die sekundenzahl eines tages zu dem datum zu addieren. das funktionierte gar nicht.

  • Richtig debuggen!!!!!!!!!!!!

    Warum hältst du dich nicht daran, dann würden dir die Fehler selber auffallen!!!