7. diel - Ners - Výpis článkov v PHP
V minulej lekcii, Ners - Editor článkov v PHP , sme dokončili editor článkov jednoduchého redakčného systému a vytvorili úvodnú stránku. V dnešnom PHP tutoriálu vytvoríme indexovú stránku, ktorá bude články zobrazovať.
Chybová stránka
Pomocou editora článkov si vytvorte článok s URL chyba a uložte ho do databázy. Tento článok sa zobrazí v prípade, keď sa používateľ pokúsi zobraziť článok, ktorá neexistuje.
Výpis článku
Pre výpis jednotlivých článkov vytvoríme súbor index.php, do ktorého vložíme nasledujúci HTML blok:
<!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8" /> <meta name="description" content="<?= htmlspecialchars($clanek['popisek']) ?>" /> <meta name="keywords" content="<?= htmlspecialchars($clanek['klicova_slova']) ?>" /> <link rel="shortcut icon" href="obrazky/ikona.ico" /> <link rel="stylesheet" href="styl.css" type="text/css" /> <title><?= htmlspecialchars($clanek['titulek']) ?></title> </head> <body> <header> <div id="logo"><h1>HoBi</h1></div> <nav> <ul> <li><a href="index.php?clanek=uvod">Domů</a></li> <li><a href="clanky.php">Články</a></li> <li><a href="index.php?clanek=kontakt">Kontakt</a></li> </ul> </nav> </header> <article> <div id="centrovac"> <header> <h1><?= htmlspecialchars($clanek['titulek']) ?></h1> </header> <section> <?= $clanek['obsah'] ?> </section> <div class="cistic"></div> </div> </article> <footer> Vytvořil ©HoBi 2013 pro <a href="http://devbook.cz">DEVBOOK.CZ</a> <a href="administrace.php">Administrace</a> </footer> </body> </html>
V kóde opäť používame premennú $ clanek. Tentoraz z nej vypisujeme dáta do HTML hlavičky a obsah článku do tela stránky.
Ako vždy stránku doplníme ešte obslužným PHP blokom, ktorý vložíme nad HTML blok:
<?php require('Db.php'); Db::connect('127.0.0.1', 'ners_db', 'root', ''); if (isset($_GET['clanek'])) $url = $_GET['clanek']; else $url = 'uvod'; $clanek = Db::queryOne(' SELECT * FROM clanky WHERE url=? ', $url); if (!$clanek) { if ($url != 'chyba') { header('Location: index.php?clanek=chyba'); exit(); } else die('Nebyl nalezen chybovy clanek'); } ?>
Kód je extrémne jednoduchý. Po pripojení k databáze sa pozrieme do GETu, či máme v adrese zadanej url článku. Ak áno, nastavíme premennú $ url na túto hodnotu. Ak nie, nastavíme ju na úvodnú stránku.
Podľa URL sa pokúsime načítať daný článok z databázy do premennej $ clanek. Ak sa to nepodarilo, presmerujeme na článok s url chyba. Ak nastala chyba na článku chyba (aj to sa môže stať ), Ukončíme beh aplikácie s chybovým hlásením.
To je všetko. Prejdime na index.php:
Vidíme, že sa článok načítal z databázy a vyzerá rovnako, ako sme ho napísali v editore.
Výpis zoznamu článkov
Okrem jedného článku by mal náš systém vedieť vypísať aj zoznam všetkých článkov v databáze, zoradených od najnovších po najstaršie. Ak je prihlásený administrátor, mal by mať možnosť články v zozname editovať a mazať.
Vytvoríme súbor clanky.php s nasledujúcim HTML blokom:
<!DOCTYPE html> <html lang="cs-cz"> <head> <meta charset="utf-8" /> <link rel="shortcut icon" href="obrazky/ikona.ico" /> <link rel="stylesheet" href="styl.css" type="text/css" /> <title>Seznam článků</title> </head> <body> <header> <div id="logo"><h1>HoBi</h1></div> <nav> <ul> <li><a href="index.php?clanek=uvod">Domů</a></li> <li><a href="clanky.php">Články</a></li> <li><a href="index.php?clanek=kontakt">Kontakt</a></li> </ul> </nav> </header> <article> <div id="centrovac"> <header> <h1>Seznam článků</h1> </header> <section> <table> <?php foreach ($clanky as $clanek) { echo('<tr><td><h2> <a href="index.php?clanek=' . htmlspecialchars($clanek['url']) . '"> ' . htmlspecialchars($clanek['titulek']) . '</a> </h2>' . htmlspecialchars($clanek['popisek'])); if (!empty($_SESSION['uzivatel_admin'])) echo(' <a href="editor.php?url=' . htmlspecialchars($clanek['url']) . '">Editovat</a> <a href="clanky.php?odstranit=' . htmlspecialchars($clanek['clanky_id']) . '">Odstranit</a> '); echo('</td></tr>'); } ?> </table> </section> <div class="cistic"></div> </div> </article> <footer> Vytvořil ©HoBi 2013 pro <a href="http://devbook.cz">DEVBOOK.CZ</a> <a href="administrace.php">Administrace</a> </footer> </body> </html>
Pracujeme tu s premennou $ clanky, v ktorej sú uložené jednotlivé články z databázy. Tie vypíšeme pod seba do tabuľky a ak je prihlásený administrátor, pridáme k nim aj odkazy na vymazanie a editáciu. Editáciu samozrejme zabezpečuje skript editor.php, vymazanie vykoná skript clanky.php.
Nad HTML dodajme náš posledný PHP blok:
<?php session_start(); require('Db.php'); Db::connect('127.0.0.1', 'ners_db', 'root', ''); if (isset($_GET['odstranit']) && !empty($_SESSION['uzivatel_admin'])) { Db::query(' DELETE FROM clanky WHERE clanky_id=? ', $_GET['odstranit']); header('Location: clanky.php'); exit(); } $clanky = Db::queryAll(' SELECT * FROM clanky ORDER BY clanky_id DESC '); ?>
Pokiaľ je v GET parameter "odstrániť" a je prihlásený administrátor, vymažeme článok s ID, ktoré nám prišlo v GETu. Do premennej $ clanky načítame všetky články pomocou jednoduchého SQL dotazu.
Máme hotovo.
Teraz môžete písať ľubovoľné množstvo článkov na svoj blog, web firmy, zápisník, skrátka k čomu budete svoj systém používať
Ešte raz zopakujem, že účelom tohto kurzu bolo najmä prelomiť ľady a umožniť vyskúšať prácu s databázou úplne všetkým. Určite sa pozrite do sekcie Objektovo orientované programovanie v PHP, kde je krok za krokom vysvetlené ako sa tvorí moderné informačné systémy. Kompletný kód systému Ners je v prílohe k stiahnutiu.
V nasledujúcom kvíze, Záverečný test - Základy práce s databázou v PHP, si vyskúšame nadobudnuté skúsenosti z kurzu.
Stiahnuť
Stiahnutím nasledujúceho súboru súhlasíš s licenčnými podmienkamiStiahnuté 3870x (3.39 MB)