System zarządzania biblioteką szkolną
Stworzycie aplikację webową umożliwiającą zarządzanie zbiorami biblioteki szkolnej: katalog książek, wypożyczenia, zwroty i historia transakcji. Dane przechowywane w plikach JSON.
This content is not available in your language yet.
System zarządzania biblioteką szkolną
Stworzycie aplikację webową umożliwiającą zarządzanie zbiorami biblioteki szkolnej: katalog książek, wypożyczenia, zwroty i historia transakcji. Dane przechowywane w plikach JSON.
{ "books": [ { "id": 1, "isbn": "978-83-01-12345-6", "title": "Algorytmy i struktury danych", "author": "Sedgewick Robert", "status": "borrowed", "added_at": "2025-09-01" } ], "loans": [ { "id": 1, "book_id": 1, "reader_name": "Anna Kowalska", "reader_class": "3TI", "loaned_at": "2026-02-01", "due_date": "2026-02-28", "returned_at": null } ]}Wymagane funkcje:
Wszystko z A, plus:
htmlspecialchars()Wszystko z B, plus:
Sprawdzanie przeterminowania:
function isOverdue(string $dueDate): bool { return strtotime($dueDate) < time() && $dueDate !== '';}
function getDaysOverdue(string $dueDate): int { $diff = time() - strtotime($dueDate); return (int) floor($diff / 86400);}Zmiana statusu książki:
function loanBook(array &$data, int $bookId, string $reader, string $class): void { foreach ($data['books'] as &$book) { if ($book['id'] === $bookId && $book['status'] === 'available') { $book['status'] = 'borrowed'; } } $data['loans'][] = [ 'id' => generateId($data['loans']), 'book_id' => $bookId, 'reader_name' => $reader, 'reader_class' => $class, 'loaned_at' => date('Y-m-d'), 'due_date' => date('Y-m-d', strtotime('+30 days')), 'returned_at' => null, ];}