Przejdź do głównej zawartości

58. Harmonogram dyżurów

Harmonogram dyżurów

Aplikacja PHP do tworzenia tygodniowego harmonogramu dyżurów (np. porządkowych, przy tablicy, nocnych): przypisywanie osób do konkretnych dni i wyświetlanie widoku tygodniowego.

  • Wyświetlania danych w układzie tabelarycznym (dni tygodnia)
  • Przypisywania wielu osób do jednego dnia
  • Obsługi tablicy stałych (nazwy dni tygodnia)
  • Walidacji: osoba na liście, dzień z dozwolonej listy

Harmonogramy i kalendarze są w każdym systemie HR i zarządzania zasobami. Ta aplikacja uczy podstaw planowania zadań w układzie czasowym.

  1. Lista dyżurnych (dodawanie i usuwanie osób)
  2. Formularz przypisania: osoba + dzień tygodnia
  3. Widok tygodniowy: tabela 7 kolumn × osoby
  4. Usuwanie przypisania
  5. Podgląd bieżącego dnia (wyróżnienie)
{
"people": ["Jan Kowalski", "Anna Nowak", "Piotr Wiśniewski"],
"schedule": [
{"id": 1, "person": "Jan Kowalski", "day": "poniedzialek", "week": "2026-W10"},
{"id": 2, "person": "Anna Nowak", "day": "wtorek", "week": "2026-W10"}
]
}
  • Formularz przypisania (osoba z listy, dzień tygodnia)
  • Tabela tygodniowa z przypisaniami
  • Walidacja: osoba i dzień wymagane
  • Zapis do JSON
Ocena: 3.0
<?php
$days = ['poniedzialek', 'wtorek', 'sroda', 'czwartek', 'piatek', 'sobota', 'niedziela'];
$dayLabels = [
'poniedzialek' => 'Poniedziałek',
'wtorek' => 'Wtorek',
'sroda' => 'Środa',
'czwartek' => 'Czwartek',
'piatek' => 'Piątek',
'sobota' => 'Sobota',
'niedziela' => 'Niedziela',
];
// Walidacja
$person = trim($_POST['person'] ?? '');
$day = trim($_POST['day'] ?? '');
if (!in_array($person, $data['people'])) {
$errors[] = "Wybierz osobę z listy";
}
if (!in_array($day, $days)) {
$errors[] = "Wybierz prawidłowy dzień tygodnia";
}
// Wyróżnienie dzisiaj
$todayDay = strtolower((new DateTime())->format('l'));
$phpToLocal = ['monday'=>'poniedzialek','tuesday'=>'wtorek','wednesday'=>'sroda',
'thursday'=>'czwartek','friday'=>'piatek','saturday'=>'sobota','sunday'=>'niedziela'];
$todayLocal = $phpToLocal[$todayDay] ?? '';

Plan dyżurów na cały tydzień!

Zacznij od tabeli wyświetlającej 7 kolumn (dni). Potem dodaj formularz przypisania. Tabela wypełni się danymi.