Hallo,
ich Programmiere gerade einen Urlaubsplaner und stehe nun vor dem Problem Jahresübergreifender Urlaub.
Bisher hatten wir es so gehandhabt, dass nur ein Person den Urlaub eintragen und verwalten konnte. Nehmen wir mal einen Zeitraum vom 24.12.2015 bis 08.01.2016. Diese Person wusste, dass der Urlaub beim Jahreswechsel z.B. vom 24.12.2015 bis 31.12.2015 und danach noch ein Urlaub vom 01.01.2015 bis 08.01.2016 einzutragen ist.
Nun habe ich den Urlaubsplaner Grundlegend verändert und jeder kann seinen eigenen Urlaub verwalten. Aus diesem Grund wollte ich es den Benutzern so einfach wie möglich machen und zwar so, dass diese ganz normal ihren gewünschten Zeitraum eingeben können, also 24.12.2015 bis 08.01.2016. Ich benötige dennoch zwei Eintragungen in die MYSQL-DB wegen der Berechnung der Arbeitstage und der Anzeige der Urlaube pro Jahr.
Wie kann ich das am besten realisieren? Keine Ahnung welchen Code Ihr benötigt, nachfolgend mal wie der Eintrag in die DB aussieht.
MfG
Maik
ich Programmiere gerade einen Urlaubsplaner und stehe nun vor dem Problem Jahresübergreifender Urlaub.
Bisher hatten wir es so gehandhabt, dass nur ein Person den Urlaub eintragen und verwalten konnte. Nehmen wir mal einen Zeitraum vom 24.12.2015 bis 08.01.2016. Diese Person wusste, dass der Urlaub beim Jahreswechsel z.B. vom 24.12.2015 bis 31.12.2015 und danach noch ein Urlaub vom 01.01.2015 bis 08.01.2016 einzutragen ist.
Nun habe ich den Urlaubsplaner Grundlegend verändert und jeder kann seinen eigenen Urlaub verwalten. Aus diesem Grund wollte ich es den Benutzern so einfach wie möglich machen und zwar so, dass diese ganz normal ihren gewünschten Zeitraum eingeben können, also 24.12.2015 bis 08.01.2016. Ich benötige dennoch zwei Eintragungen in die MYSQL-DB wegen der Berechnung der Arbeitstage und der Anzeige der Urlaube pro Jahr.
Wie kann ich das am besten realisieren? Keine Ahnung welchen Code Ihr benötigt, nachfolgend mal wie der Eintrag in die DB aussieht.
PHP:
if(isset($_POST['up_sub_u']))
{
//var_dump($_SESSION);
$ma_id = $_POST['ma_id'];
$abt_id = $_POST['abt_id'];
// Abfrage ob Ganztag oder Halbtag
if(isset($_POST['am']))
{
$von = date_german2mysql($_POST['am']);
$bis = date_german2mysql($_POST['am']);
}else{
$von = date_german2mysql($_POST['vom']);
$bis = date_german2mysql($_POST['bis']);
}
$grund = $_POST['grund'];
$freitagenamen_id = $_POST['urlaub'];
$zeitraum = $_POST['zeitraum'];
$vertretung = $_POST['vertretung'];
$urlaubsanschrift = $_POST['urlaubsanschrift'];
$kommentar = $_POST['kommentar'];
##########################################################################################
$year = date("Y");
// Feste Feiertage Sachsen-Anhalt
$feiertage[] = "0101"; // Neujahrstag
$feiertage[] = "0601"; // Heilige drei Könige
$feiertage[] = "0105"; // Tag der Arbeit
$feiertage[] = "0310"; // Tag der Deutschen Einheit
$feiertage[] = "3110"; // Reformationstag
$feiertage[] = "2512"; // Erster Weihnachtstag
$feiertage[] = "2612"; // Zweiter Weihnachtstag
// Bewegliche Feiertage berechnen
function get_easter_datetime($year) {
$days = easter_days($year);
return mktime(0, 0, 0, 3, 21+$days,$year);
}
$tage = 86400; //60 * 60 * 24
$ostersonntag = get_easter_datetime($year);
$feiertage[] = date("dm", $ostersonntag - 2 * $tage); // Karfreitag
$feiertage[] = date("dm", $ostersonntag + 1 * $tage); // Ostermontag
$feiertage[] = date("dm", $ostersonntag + 39 * $tage); // Himmelfahrt
$feiertage[] = date("dm", $ostersonntag + 50 * $tage); // Pfingstmontag
//Wochenenden des Jahres ausgeben
$prevTime = mktime(0,0,0, 1,1,$year);
$currYear = date ('Y');
$aWeekends = array ();
while(true)
{
$prevTime = strtotime ('next saturday' , $prevTime);
$prevYear = date ('Y' , $prevTime);
if ($prevYear > $currYear) break;
$aWeekends[] = date ('dm' , $prevTime);
$aWeekends[] = date ('dm' , $prevTime + 3600 * 24);
}
// Array mit den gesamten Tagen aus von und bis bilden
$startdatum = strtotime($von);
$enddatum = strtotime($bis);
while ($startdatum <= $enddatum)
{
$vonbis[] = date('dm', $startdatum);
$startdatum += 24 * 60 * 60;
}
// neues array erstellen wo die wochenenden nicht mehr dabei sind
$cleanarraywe = array_diff($vonbis, $aWeekends);
// neues array erstellen wo die Feiertage nicht mehr dabei sind
$cleanarrayft = array_diff($cleanarraywe, $feiertage);
if(isset($_POST['am'])){
$tage = 0.5;
}else{
$tage = count($cleanarrayft);
}
// TEST JAHRESWECHSEL
$vonjahr = date("Y",strtotime($von));
$bisjahr = date("Y",strtotime($bis));
if($bisjahr > $vonjahr){
echo "Das ist ein Jahreswechsel<br>";
echo "Eintrag 1 müsste dann vom ".$von. " bis 2015-12-31 gehen<br>";
echo "Eintrag 2 müsste dann vom ".$bisjahr."-01-01 bis ".$bis." gehen";
}
$res = mysql_query("
INSERT INTO freitage
(ma_id,abteilungen_id,freitagenamen_id,von,bis,tage,zeitraum,vertretung,grund,urlaubsanschrift,kommentar,datum_beantragt)
VALUES
('$ma_id','$abt_id','$freitagenamen_id','$von','$bis','$tage','$zeitraum','$vertretung','$grund','$urlaubsanschrift','$kommentar',now())") or die("Eintrag fehlgeschlagen.<br><br>".mysql_error());
$num = mysql_affected_rows();
if ($num>0)
{
$last_id = mysql_insert_id();
include('up_eintrag_u_view.php');
// Mail nur versenden wenn admin_mail_notification gesetzt
if($_SESSION['user_admin_mail_notification'] == 1 ){
include('up_mail_u_neu.php');
}
}else{
echo '<div id="nachricht"><div class="alert alert-danger" role="alert">';
echo '<strong>Es ist ein Fehler aufgetreten!</strong><br>Der Urlaub konnte nicht erstellt werden.';
echo '</div></div>';
}
}
MfG
Maik