Skip to content

Rejestr diet (posiłki)

This content is not available in your language yet.

Stworzysz Rejestr diet - aplikacje umozliwiajaca zapisywanie posiłków wraz z informacja o kalorycznosci. Użytkownik może dodawać posiłki, przegladac historie i sledzic dzienne spozycie kalorii. Wszystkie dane sa zapisywane do pliku JSON.

Czego się nauczysz?

  • Obsługi formularzy HTML i walidacji danych w PHP
  • Grupowania danych po datach
  • Obliczania sum i statystyk
  • Zapisu i odczytu danych z plikow JSON

W prawdziwej pracy...

Aplikacje do sledzenia diety i zdrowego stylu zycia sa jednym z najpopularniejszych typow aplikacji mobilnych i webowych. Umiejetnosc tworzenia systemow rejestrujacych dane użytkownika, liczacych statystyki i generujacych raporty to podstawa wielu aplikacji biznesowych i konsumenckich.

  1. Formularz dodawania posiłku Użytkownik podaje nazwe posiłku, liczbe kalorii, date i opcjonalnie kategorie (sniadanie, obiad, kolacja, przekaska).

  2. Lista posiłków System wyświetla wszystkie zapisane posiłki w czytelnej formie, pogrupowane po dniach.

  3. Suma kalorii Aplikacja oblicza i wyświetla sume kalorii dla każdego dnia oraz łączna sume.

Przykładowa struktura pliku JSON:

{
"meals": [
{
"id": 1,
"name": "Owsianka z owocami",
"calories": 350,
"category": "breakfast",
"date": "2026-02-17",
"created_at": "2026-02-17 08:30:00"
},
{
"id": 2,
"name": "Kurczak z ryzem",
"calories": 650,
"category": "lunch",
"date": "2026-02-17",
"created_at": "2026-02-17 13:00:00"
},
{
"id": 3,
"name": "Sałatka grecka",
"calories": 400,
"category": "dinner",
"date": "2026-02-17",
"created_at": "2026-02-17 19:00:00"
}
]
}

Wymagane funkcje:

  • Formularz z polami: nazwa posiłku, kalorie, data
  • Walidacja danych w PHP (kalorie > 0, niepusta nazwa)
  • Lista wszystkich posiłków
  • Zapis każdego posiłku do pliku JSON
  • Prosty interfejs CSS (czytelny formularz i lista)

Przykładowy scenariusz:

Użytkownik wchodzi na strone i widzi formularz. Wpisuje “Kanapka z serem”, 300 kalorii i dzisiejsza date. Po kliknieciu “Dodaj” posiłek pojawia się na liscie. Dane sa zapisywane do pliku JSON.

Ocena: 3.0

Walidacja danych posiłku:

$errors = [];
$name = trim($_POST['name'] ?? '');
$calories = filter_var($_POST['calories'], FILTER_VALIDATE_INT);
$date = $_POST['date'] ?? '';
if (empty($name)) {
$errors[] = "Nazwa posiłku jest wymagana";
}
if ($calories === false || $calories <= 0) {
$errors[] = "Kalorie musza być liczba dodatnia";
}
if (empty($date) || !strtotime($date)) {
$errors[] = "Podaj poprawna date";
}

Grupowanie posiłków po dacie:

$mealsByDate = [];
foreach ($data['meals'] as $meal) {
$date = $meal['date'];
if (!isset($mealsByDate[$date])) {
$mealsByDate[$date] = [];
}
$mealsByDate[$date][] = $meal;
}
krsort($mealsByDate); // Sortuj malejaco po dacie

Obliczanie sumy kalorii dla dnia:

function getDailyCalories($meals, $date) {
$total = 0;
foreach ($meals as $meal) {
if ($meal['date'] === $date) {
$total += $meal['calories'];
}
}
return $total;
}

Zapis do JSON:

$data = json_decode(file_get_contents('meals.json'), true) ?? ['meals' => []];
$data['meals'][] = [
'id' => count($data['meals']) + 1,
'name' => $name,
'calories' => $calories,
'category' => $_POST['category'] ?? 'other',
'date' => $date,
'created_at' => date('Y-m-d H:i:s')
];
file_put_contents('meals.json', json_encode($data, JSON_PRETTY_PRINT));

Wykorzystaj lekcje!

Cotygodniowe spotkania podczas lekcji to idealny moment, by:

  • Pokazac postepy - nawet małe kroki się licza
  • Wyjaśnić watpliwosci - pytaj, nie zgaduj
  • Skonsultowac rozwiązania - feedback pomoze Ci się rozwijac

Pracuj iteracyjnie - lepiej mieć działający wariant A niz niedokonczony C!