Jahrgang wählen!"; exit; } if (isset($_GET['edit'])) { $_SESSION["krank_status"] = 'edit'; $krid = $_GET['edit']; $_SESSION["krank_krid"] = $krid; } else { $_SESSION["krank_status"] = 'neu'; } # -- Fehlermeldungen -- # if (isset($_GET[error])) { $errorno = $_GET[error]; $smarty->assign('krank_error', 1); $smarty->assign('krank_value_funktion', $_SESSION["krank_value_funktion"]); $smarty->assign('krank_value_std', $_SESSION["krank_value_sws"]); $smarty->assign('krank_value_datumvon', $_SESSION["krank_value_beginn_krankheit"]); $smarty->assign('krank_value_datumbis', $_SESSION["krank_value_ende_krankheit"]); if ($errorno == 3) { # ungültiges Datum $smarty->assign('krank_error_text', "Das eingegebene Datum ist nicht korrekt. Bitte korrigieren Sie das Datum!"); } $jahrgang2 = $jahrgang+1; if ($errorno == 5) { $smarty->assign('krank_error_text', "Das Datum ist außerhalb des Jahrgangs!
Datum muss im Bereich 01.09.$jahrgang - 31.08.$jahrgang2 liegen."); } if ($errorno == 6) { $smarty->assign('krank_error_text', "Die Krankheitstage müssen zussamenhängend sein und größer 28 Tage betragen."); } } # --- Wenn Werte editiert werden ------------ if ($_SESSION["krank_status"] == 'edit') { $result_edit = $db->query("SELECT krid, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende FROM dep_krankheit WHERE krid = $krid"); $row_edit = $result_edit->fetch_array(); $smarty->assign('krank_status', $_SESSION["krank_status"]); $smarty->assign('krank_value_datumvon', "$row_edit[beginn]"); $smarty->assign('krank_value_datumbis', "$row_edit[ende]"); } # --- Wenn Werte editiert werden Ende ------- if ($_GET['editende'] == 1) { # Editieren ist beendet, als ein update auf einen Datensatz. Dann ist der status wieder Neu, damit wird wieder ein Insert durchgeführt $_SESSION["krank_status"] = 'neu'; } # Gespeicherte Werte $query2 = "SELECT krid, date_format(beginn, '%d.%m.%Y') beginn, date_format(ende, '%d.%m.%Y') ende FROM dep_krankheit WHERE imtuid=$uid AND jahr=$jahrgang ORDER BY krid ASC"; $result2 = $db->query($query2) or die("Cannot execute query2"); while ($row2 = $result2->fetch_array()) { $table_data2[] = $row2; } $smarty->assign('table_data2', $table_data2); # Jahressumme $query_jahrsum = $db->query("SELECT sum(lvs) summe_jahr FROM dep_krankheit WHERE imtuid=$uid AND jahr=$jahrgang"); $row_jahrsum = $query_jahrsum->fetch_array(); $summe_jahr = number_format($row_jahrsum['summe_jahr'], 2, ',', '.'); $smarty->assign('krank_value_summe_jahr', $summe_jahr); } if ($action == 'save') { $jahrgang2 = $jahrgang+1; #$funktion = $_POST['funktion']; #$sws = str_replace(',','.',str_replace('.','', $_POST['sws'])); $beginn = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['beginn_krankheit']); if($beginn == ''){ $beginn = $jahrgang."-09-01"; } $ende = preg_replace('/^(\\d{2})\\.(\\d{2})\\.(\\d{4})$/', '$3-$2-$1', $_POST['ende_krankheit']); if($ende == ''){ $ende = $jahrgang2."-08-31"; } #$_SESSION["krank_value_funktion"] = $funktion; #$_SESSION["krank_value_sws"] = $sws; $_SESSION["krank_value_beginn_krankheit"] = $_POST['beginn_krankheit']; $_SESSION["krank_value_ende_krankheit"] = $_POST['ende_krankheit']; function validateDate($date, $format = 'Y-m-d') { $d = DateTime::createFromFormat($format, $date); return $d && $d->format($format) == $date; } if(!validateDate($beginn)){ if($_SESSION["krank_status"] == 'neu'){ echo ""; }else{ echo ""; } exit; } if(!validateDate($ende)){ if($_SESSION["krank_status"] == 'neu'){ echo ""; }else{ echo ""; } exit; } /* Ermäßigungen werden immer nur ganze Monate vergeben*/ #$year_start = substr($beginn,0,4); #$mon_start = substr($beginn,5,2); #$day_start = '01'; #substr($beginn,8,2); #$save_beginn = "$year_start-$mon_start-$day_start"; # Ende ist immer Monatsletzter des angegebenen Monats #$year_ende = substr($ende,0,4); #$mon_ende = substr($ende,5,2); #$day_ende = '01'; #substr($ende,8,2); # Hier gibt man monatsersten an, die Funktion Y-m-t macht Monatsende draus #$save_ende = "$year_ende-$mon_ende-$day_ende"; #$L = new DateTime( $save_ende); #$save_ende = $L->format( 'Y-m-t' ); # Datum außerhalb des Jahrgangs 01.09.-31.08 if(strtotime($beginn) > strtotime("$jahrgang2-08-31") OR strtotime($beginn) < strtotime("$jahrgang-09-01") OR strtotime($ende) > strtotime("$jahrgang2-08-31") OR strtotime($ende) < strtotime("$jahrgang-09-01") ){ if($_SESSION["krank_status"] == 'neu'){ echo ""; }else{ echo ""; } exit; } # Zeitraum muss über 28 Tage haben. Besprechung Haug, Bittner, Grimm am 27.07.2022 # Mailverlauf 28.07.2022 # #Ist der Zeitraum zwischen 01.09.2019-10.09.2019 -> 9 Tage oder 10 Tage? Krank ist man ja auch am 01.09 und am 10.09 #Zweite Frage: Ist eine längere Krankheit bei >28 Tage oder >=28Tage? # #Hallo Herr Schwarz, # #der erste und letzte Tag zählt mit: in Ihrem Beispiel daher 10 Tage. #Längere Krankheit: >= 28 Tage # #Viele Grüße #Thilo Haug function seDay($begin,$end,$format,$sep){ $pos1 = strpos($format, 'd'); $pos2 = strpos($format, 'm'); $pos3 = strpos($format, 'Y'); $begin = explode($sep,$begin); $end = explode($sep,$end); $first = GregorianToJD($end[$pos2],$end[$pos1],$end[$pos3]); $second = GregorianToJD($begin[$pos2],$begin[$pos1],$begin[$pos3]); # +1 da erster Tag mitgerechnet werden soll if($first > $second) return $first - $second+1; else return $second - $first+1; } $diff = seDay($beginn,$ende,"Ymd","-"); if($diff < 28){ if($_SESSION["krank_status"] == 'neu'){ echo ""; }else{ echo ""; } exit; } $datum = date("Y-m-d H:i:s"); if ($_SESSION["krank_status"] == 'neu') { $sql1 = $db->query("INSERT INTO dep_krankheit ( imtuid , jahr , beginn , ende , lvs , created ) VALUES ( '$uid' , '$jahrgang' , '$beginn' , '$ende' , '' , '$datum' ) "); } if ($_SESSION["krank_status"] == 'edit') { $krid = $_SESSION["krank_krid"]; $result = $db->query("UPDATE dep_krankheit SET beginn = '$beginn' , ende = '$ende' , modify_date = '$datum' WHERE krid = $krid "); unset($_SESSION['krank_krid']); } # Dann bekommts beim refresh den status neu, also es wird beim Abschicken ein Insert gemacht $editende = 1; echo ""; } if ($action == 'del') { $krid = $_GET['krid']; ## Muss man nochmals überdenken, wenn ein Prof noch Deputate erfasst hat. $del1 = $db->query("DELETE FROM dep_krankheit WHERE krid = $krid AND imtuid=$uid"); echo ""; } $smarty->assign('action', "$action"); $smarty->display("$template/$templatename"); ?>