Skip to content

67. Prosty blog jednoautorski

This content is not available in your language yet.

Prosty blog jednoautorski

Blog PHP z pełnym CRUD: pisanie wpisów, edycja, usuwanie. Wpisy z tytułem, treścią, datą i opcjonalnymi tagami przechowywane w pliku JSON. Lista na stronie głównej, osobna strona wpisu.

  • Pełnego cyklu CRUD (Create, Read, Update, Delete)
  • Routingu przez GET parametry (?action=edit&id=1)
  • Generowania sluga z tytułu wpisu
  • Stronicowania (opcjonalnie)

Blog to klasyczna aplikacja webowa nauczająca pełnego CRUD. Każdy CMS (WordPress, Drupal) jest w gruncie rzeczy rozbudowanym blogiem. Znajomość zarządzania wpisami to podstawa programowania webowego.

  1. Strona główna: lista wpisów z tytułem, datą i pierwszymi 150 znakami
  2. Strona wpisu: pełna treść wpisu
  3. Formularz pisania nowego wpisu
  4. Edycja istniejącego wpisu
  5. Usuwanie wpisu z potwierdzeniem
{
"posts": [
{
"id": 1,
"title": "Mój pierwszy wpis",
"slug": "moj-pierwszy-wpis",
"content": "Treść wpisu...",
"tags": ["php", "web"],
"published_at": "2026-02-10",
"updated_at": null
}
]
}
  • Lista wpisów z tytułem i datą
  • Formularz dodawania wpisu
  • Strona pojedynczego wpisu
  • Walidacja: tytuł i treść wymagane
Ocena: 3.0
<?php
// Generowanie sluga
function createSlug(string $title): string {
$title = mb_strtolower($title);
$title = strtr($title, ['ą'=>'a','ę'=>'e','ó'=>'o','ś'=>'s','ł'=>'l',
'ż'=>'z','ź'=>'z','ć'=>'c','ń'=>'n','ź'=>'z']);
$title = preg_replace('/[^a-z0-9]+/', '-', $title);
return trim($title, '-');
}
// Skrót wpisu
function getExcerpt(string $content, int $length = 150): string {
$plain = strip_tags($content);
if (mb_strlen($plain) <= $length) return $plain;
return mb_substr($plain, 0, $length) . '...';
}
// Szacowany czas czytania
function readingTime(string $content): int {
$words = str_word_count(strip_tags($content));
return max(1, (int) ceil($words / 200)); // 200 słów/minutę
}
// Routing
$action = $_GET['action'] ?? 'list';
$id = filter_var($_GET['id'] ?? 0, FILTER_VALIDATE_INT);
match($action) {
'view' => showPost($id),
'new' => showNewForm(),
'edit' => showEditForm($id),
'delete' => deletePost($id),
default => showList(),
};

Napisz o tym czego się uczysz!

Testuj blog wpisując prawdziwe notatki z lekcji. To jednocześnie nauka i tworzenie wartościowych treści.