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.
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.
?action=edit&id=1)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.
{ "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 } ]}<?php// Generowanie slugafunction 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 wpisufunction 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 czytaniafunction 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.