prepare($sql); $stmt->bindValue(':id', $_POST['status'], PDO::PARAM_INT); $stmt->execute(); $status = $stmt->fetch(PDO::FETCH_ASSOC); if($status['oznaczaWolne'] != 1) { $_SESSION['innfoError'] = "Wybrany status nie oznacza wolnego"; header('Location: addFreeDay.php'); exit(); } //wpisz do tablicy wszystkie daty, poniedziałek-piątek w danym przedziale $dates = []; $day = $start; while($day <= $end) { //sprawdź czy sobota lub niedziela if(date('N', strtotime($day)) < 6) { $dates[] = $day; } $day = date('Y-m-d', strtotime($day.' + 1 day')); } //sprawdź czy w danym przedziale nie ma już wpisanej obecności $sql = "SELECT * FROM obecnosc WHERE kto = :kto AND data BETWEEN :start AND :end AND aktywne = 1"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT); $stmt->bindValue(':start', $start, PDO::PARAM_STR); $stmt->bindValue(':end', $end, PDO::PARAM_STR); $stmt->execute(); $work = $stmt->fetchAll(PDO::FETCH_ASSOC); if($work !== false) { foreach($work as $day) { if(in_array($day['data'], $dates)) { $_SESSION['innfoError'] = "W danym przedziale jest już wpisana obecność"; header('Location: addFreeDay.php'); exit(); } } } //pobierz wszystkie wolne z tego przedziału z tabeli dniwolne $sql = "SELECT * FROM dniwolne WHERE data BETWEEN :start AND :end AND aktywne = 1"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':start', $start, PDO::PARAM_STR); $stmt->bindValue(':end', $end, PDO::PARAM_STR); $stmt->execute(); $wolne = $stmt->fetchAll(PDO::FETCH_ASSOC); //sprawdź czy w danym przedziale nie ma już wpisanych dni wolnych, jeżeli tak to usuń je z tablicy $dates if($wolne !== false) { foreach($wolne as $day) { if(in_array($day['data'], $dates)) { $key = array_search($day['data'], $dates); unset($dates[$key]); } } } //jeżeli nie ma wpisanej obecności w danym przedziale to dodaj wpisy foreach($dates as $day) { $sql = "INSERT INTO obecnosc VALUES (NULL, :kto, :data, NULL, NULL, :status, 0, 0, 1)"; $stmt = $pdo->prepare($sql); $stmt->bindValue(':kto', $_SESSION['user_id'], PDO::PARAM_INT); $stmt->bindValue(':data', $day, PDO::PARAM_STR); $stmt->bindValue(':status', $_POST['status'], PDO::PARAM_INT); $stmt->execute(); } $_SESSION['innfoError'] = "Wolne zostało dodane"; header('Location: addFreeDay.php'); exit(); ?>