Před čtením tohoto návodu Vám doporučuji si přečíst i návody předchozí. Předpokládám totiž, že již máte potřebné znalosti, které jste se naučili již dříve.
- Superglobální proměnné v PHP (1.díl/2.série)
- Operátory v PHP (2.díl/2.série)
- Podmínky v PHP (3.díl/2.série)
- Operátory v praxi v PHP (4.díl/2.série)
Už chápeme logiku podmínek, známe i operátory. Dnes si vytvoříme náš vlastní routovací systém.
Routování slouží k rozdělení webových stránek a vytvoření URL adres za pomoci parametrů (které ale následně můžeme skrýt – například pomocí souboru .htaccess). Takže díky routování získáme například tuto url:
www.mujskript.cz/ahoj.php?parametr=obsah
Kapitoly:
- Struktura adresáře
- A jdeme na věc!
- Co se stane když?
- Podmínky a výpis textu
- Podmínky a zobrazení souboru
Napišme si takový malý demonstrační scénář toho, jak to všechno bude vlastně probíhat. To je důležité, abychom vlastně věděli, co budeme psát a taky jak to budeme psát.
Backend (zadní strana skriptu – jak ji vidí programátor):
- Napíšu nějaký routovací skript – například index.php
- Do něj dám různé podmínky, pokud URL vypadá takhle, tak udělej tohle, jinak tamto
- Celé to zautomatizuji
- Uživatel dostane to, co chce
Frontend (přední strana – tak jak to vidí návštěvník)
- Kliknu na nějaký odkaz
- Po kliknutí dostanu obsah, který jsem chtěl
- Když stránka neexistuje dostanu Error
Jasně, ten uživatelský frontend jsem trochu přehnal, ale je to tak. Uživatel většinou adresy nezkoumá (pokud je to laik), ale programátorovi to třeba pomůže v orientaci.
Struktura adresáře
Doporučuji nazývat adresáře stejně, jako já. Vytvoříme si nějaký hlavní (root) adresář, ve kterém bude náš web s routovacím skriptem. Nazveme ho třeba web. Do něj vložíme jediný soubor a to index.php. Pak si vytvoříme ještě adresáře obsah a casti. Nepovinné adresáře pro obrázky, CSS styly a JavaScripty jsem vynechal. Struktura bude vypadat asi takto:
-- web -- index.php -- obsah -- casti
V adresáři obsah budou jednotlivé stránky (respektive podstránky) webu, jako jsou např. sluzby.php, reference.php, onas.php, kontakt.php. No a v adresáři casti budou pochopitelně různé části webu, které budou na všech stránkách stejné a bude jednodušší je častěji měnit – hlavicka.php, menu.php, sidebar.php a paticka.php. Záleží na Vás, jakou strukturu a pojmenování souborů si zvolíte Vy.
A jdeme na věc!
Teď se ale vrátíme zpátky k souboru index.php. V tomto souboru bude vlastně náš routovací (nikoliv routerovací od slova router) systém, který bude všechno řídit:
<html> <head> <meta charset="utf-8"> <title>Název stránky (později se bude dynamicky měnit)</title> </head> <body> <?php include "casti/hlavicka.php"; ?> <?php include "casti/menu.php"; ?> <?php $stranka = $_GET['stranka']; if($stranka== "sluzby"){echo "Jsi na stránce služeb.";} elseif($stranka == "cenik"){echo "Jsi na stránce, kde uvidíš ceník.";} else{echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text: <a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>.";} ?>
Začneme od 7. řádku. Zde includujeme (více o include: Include v PHP – 1.díl) dva soubory – hlavicka.php a menu.php. Oba dva jsou umístěny v adresáři casti. Na 10. řádku jen definujeme obsah proměnné $stranka a to je superglobální proměnná $_GET.
Co se stane když?
No a od 11. řádku začíná již samotné routování a vidíme zde první podmínky, podle kterých se bude obslužný skript řídit. Takže:
- Pokud (if) je obsahem proměnné $stranka text sluzby, tak
- vypiš uživateli na stránku větu Jsi na stránce služeb.
-
if($stranka== "sluzby"){echo "Jsi na stránce služeb.";}
- Nebo pokud (elseif) je obsahem proměnné $stranka text cenik, tak
- vypiš uživateli na stránku větu Jsi na stránce, kde uvidíš ceník.
-
elseif($stranka == "cenik"){echo "Jsi na stránce, kde uvidíš ceník.";}
- Pokliže se nesplnila ani jedna předchozí podmínka (else), tak
- vypiš uživateli na stránku větu Vyber si nějakou stránku, aby se ti mohl zobrazit text: Služby, nebo Ceník
-
else{ echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>."; }
Podmínky a výpis textu
Samozřejmě, že by tento podmínkovací (routovací) skript šel zapsat i přehledněji, ale pokud budu mít pod sebou třeba padesát záznamů (padesát různých stránek, tak by to nemuselo být přehledné). Ale můžeme si to ukázat:
<html> <head> <meta charset="utf-8"> <title>Název stránky (později se bude dynamicky měnit)</title> </head> <body> <?php include "casti/hlavicka.php"; ?> <?php include "casti/menu.php"; ?> <?php $stranka = $_GET['stranka']; if($stranka== "sluzby"){ echo "Jsi na stránce služeb."; }elseif($stranka == "cenik"){ echo "Jsi na stránce, kde uvidíš ceník."; }else{ echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>."; } ?>
Je to prostě opticky delší kód.
Podmínky a zobrazení obsahu
Skript si nyní upravíme tak, aby zobrazoval rovnou při zadání správných parametrů určené stránky (includoval je). Stačí skript jen opravdu trošičku poupravit:
<html> <head> <meta charset="utf-8"> <title>Název stránky (později se bude dynamicky měnit)</title> </head> <body> <?php include "casti/hlavicka.php"; ?> <?php include "casti/menu.php"; ?> <?php $stranka = $_GET['stranka']; if($stranka== "sluzby"){ include "casti/sluzby.php"; }elseif($stranka == "cenik"){ include "casti/cenik.php"; }else{ echo "Vyber si nějakou stránku, aby se ti mohl zobrazit text:"; echo "<a href='?stranka=sluzby'>Služby</a>, nebo <a href='?stranka=cenik'>Ceník</a>."; } ?>
Zarovnávat tento kód už nebudu. Jak zde vidíte, stačilo pouze trošku pozměnit události, co se mají stát při splnění podmínky – tedy místo vypsání nějakého textu (echo) zobrazit nějaký soubor (include).
To je pro dnešek vše. Snad se Vám návod na routování v PHP líbil.