Skip to content

57. Dziennik podróży

This content is not available in your language yet.

Dziennik podróży

Aplikacja webowa do zapisywania wspomnień z podróży: data wizyty, miejsce (miasto, kraj), opis i opcjonalne tagi. Wpisy są wyświetlane chronologicznie.

  • Tworzenia aplikacji blogopodobnej z wpisami chronologicznymi
  • Sortowania po dacie (usort lub array_reverse)
  • Walidacji pola textarea (minimalna długość opisu)
  • Pracy z tagami (tablica ciągów tekstowych)

Dzienniki i blogi to najprostsze aplikacje content-management. Ta aplikacja uczy zarządzania wpisami chronologicznymi — podstawy każdego bloga lub CMS-a.

  1. Formularz nowego wpisu (data, miejsce, opis, tagi)
  2. Lista wpisów posortowana od najnowszego
  3. Szczegóły wpisu (pełny opis)
  4. Filtrowanie po tagu
  5. Usuwanie wpisu
{
"entries": [
{
"id": 1,
"date": "2026-02-15",
"place": "Kraków, Polska",
"description": "Odwiedziliśmy Wawel i Rynek Główny. Pogoda była słoneczna.",
"tags": ["polska", "zabytki", "weekend"],
"created_at": "2026-02-16"
}
]
}
  • Formularz wpisu (data, miejsce, opis)
  • Lista wpisów posortowana po dacie
  • Walidacja: miejsce i opis wymagane
  • Zapis do JSON
Ocena: 3.0
<?php
// Parsowanie tagów
$tagsInput = trim($_POST['tags'] ?? '');
$tags = array_unique(array_filter(array_map('trim', explode(',', $tagsInput))));
// Walidacja opisu
$description = trim($_POST['description'] ?? '');
if (mb_strlen($description) < 10) {
$errors[] = "Opis musi mieć co najmniej 10 znaków";
}
if (mb_strlen($description) > 2000) {
$errors[] = "Opis może mieć maksymalnie 2000 znaków";
}
// Filtrowanie po tagu
$tag = trim($_GET['tag'] ?? '');
$filtered = empty($tag) ? $data['entries']
: array_filter($data['entries'], fn($e) => in_array($tag, $e['tags']));
// Sortowanie od najnowszego
usort($filtered, fn($a, $b) => strcmp($b['date'], $a['date']));

Opisz swój ostatni wyjazd!

Testuj aplikację na prawdziwych danych — dodaj wpisy z miejsc, które odwiedziłeś. Zrobisz lepszy projekt!