Router v PHP (5.díl/2.série)

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.

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 obsahcasti. 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.

Operátory v praxi v PHP (4.díl/2.série)

V a předminulém díle jsme se naučili, co to jsou operátory a k čemu je lze použít: Operátory v PHP (2.díl/2.série). Ukážeme se praktické ukázky, jak tyto operátory využít. Příště se dozvíme, jak operátory použít do podmínek…

Kapitoly:

 

Spojování řetězců

První a nejznámější operátor je . Žádnou vědu v tom nehledejte – je to prostě a jednoduše klasická tečka, jak ji znáte:

.

Nic víc, nic míň. Tahle tečka nám ale umožní spojit dvě (nebo tři, čtyři…) věci (řetězce) dohromady. Řekněme, že chceme spojit jedničku (1) a pětku (5), výsledkem spojení tedy bude číslo 15:

<?php     
  $obsah = "1"."5";     
  echo $obsah; 
?>

Pokud si tento kód spustíte, vyjde Vám číslo patnáct (15). Obsahem proměnné $obsah je prostě jednička a pětku za sebou, takže patnáctka. Předpokládám, že už to chápete, ale zkusíme si to ještě jednou:

<?php     
  $obsah = "25"."85"."8";     
  echo $obsah; 
?>

A teď jsme spojili čísla 25, 85 a 8. Lze vypozorovat, že lze spojovat i více čísel (řetězců) – klidně padesát. Pokud si tento kód spustíte, vypíše se Vám číslo 25858. Zkusíme si to ještě jednou a s trošku jiným obsahem:

<?php     
  $obsah = "ahoj"."+/="."48"."php";     
  echo $obsah; ?>

Po spuštění tohoto skriptu se nám vypíše ahoj+/=48php. Teď si ale určitě říkáte, jak využijete toto spojování řetězců, že? Je to jednoduché, pokud třeba od uživatele pomocí (třeba) superglobální proměnné $_POST získáváte nějaká data, je někdy potřeba tyto proměnné spojit (např. jméno a příjmení). Uděláme to takto:

<?php     
  $jmeno = "Honza";     
  $prijmeni = "Novák";     
  $celejmeno = $jmeno.$prijmeni;     
  echo $celejmeno; 
?>

Teď by se nám měl vypsat tento text: HonzaNovák. Co když ale chceme mít mezi křestním jménem (Honza) a příjmením (Novák) mezeru? Vyřešíme to velice jednoduše:

<?php     
  $jmeno = "Honza";     
  $prijmeni = "Novák";   
  $celejmeno = $jmeno." ".$prijmeni;   
  echo $celejmeno; 
?>

Upravili jsme třetí řádek. Jak to funguje? Máme proměnnou $jmeno (ta není v uvozovkách, protože je to proměnná a není to text). Následně přidáme tečku pro připojení něčeho dalšího – řetězce. Bude to mezera (tu ale musíme dá do uvozovek, protože je to text. Následně přidáme další tečku pro připojení dalšího řetězce. A to bude proměnná $prijmeni (zase není v uvozovkách).

PAMATUJ SI: Proměnné nezapisujeme do uvozovek! V uvozovkách je pouze text!

 

Sčítání a odčítání čísel

Teď už to bude jednoduché 🙂 (Téměř) všechny operátory fungují stejně.  Budeme používat klasický znak pro sčítání – plus:

+

Sečtení čísel provedeme takto:

<?php     
  $vysledek = 2+2;   
  echo $vysledek; 
?>

Tenhle kód je zcela easy. Výsledkem by mělo být číslo čtyři (4). Zkuste si skript spustit.

Odčítání funguje na stejném principu:

-

Použijeme jenom znak mínus (pomlčka):

<?php   
  $vysledek = 10-5;   
  echo $vysledek; 
?>

Pokud si tento skript spustíte, mělo by Vám vyjít číslo pět (5).

 

Násobení, dělení a zbytek

Princip je opět naprosto stejný, myslím, že ho tady už nemusím uvádět.

 

Přičtení jedničky a odečtení jedničky

Funguje na zajímavém principu. Pokud chceme k nějakému číslu (třeba k dvanáctce – 12) přičíst pouze jedničku (1) použijeme dvě pluska a to takhle:

<?php   
  $vysledek = "12";   
  $vysledek++;   
  echo $vysledek; ?>

Pokud si tento kód spustíte, mělo by se Vám vypsat číslo 13.

Odečtení funguje stejně, akorát přidáme dvě mínuska:

<?php   
  $vysledek = "12";   
  $vysledek--;   
  echo $vysledek; 
?>

Výsledkem by mělo být číslo jedenáct.

 

Další operátory, které využijeme až v podmínkách

Jejich přehled naleznete zde: Operátory v PHP (2.díl/2.série). Operátory, které využíváme v podmínkách fungují všechny na stejném principu. Takže pokud si napíšu podmínku, pokud:

  • je proměnná $prvni
  • stejná (to stejné značí dvě rovnítka ==)
  • jako proměnná $druha
  • tak udělej to první
  • jinak udělej to druhé
<?php   
  $prvni = "ahoj";   
  $druha = "nashledanou";   
  if($prvni == $druha){     
    //udělej to první     
  }else{      
    //udělej to druhé     
  } 
?>

To je opět hrubý náčrt podmínky. Už je totiž znáte z minula: Podmínky v PHP (3.díl/2.série) 🙂

Podmínky v PHP (3.díl/2.série)

Ahoj,

v minulém díle jsme si řekli něco o operátorech v PHP. V díle ještě před ním jsme se podívali na zub Superglobálním proměnným v PHP. Nyní si troufám říci, že jsme již plně „vyzbrojeni“ na pochopení podmínek v PHP.

Jelikož jsou podmínky velice rozsáhlé téma (toto je už 3. díl ze 2. série), budou následovat ještě alespoň dva další díly. V tomto díle Vás seznámím hlavně s nutnými základy podmínek a jejich fungováním. Abyste pochopili, jak se s nimi pracuje, na jakém principu fungují a hlavně – jak je můžete využít a k čemu jsou dobré v praxi.

Kapitoly:

 

Fungování podmínky (teorie)

Základním stavebním kamenem celé podmínky je nějaký již předem daný postup, jak ji poskládat. Každý postup se dá různě vylepšovat, nebo usnadnit. Je možné, že v praxi se setkáte s různými způsoby jak zapsat podmínku. Vždy ale různé zápisy se stejným cílem fungují stejně. Lze zapsat o pět znaků méně a bude to fungovat úplně stejně, jako kdybych jich napsal o pět více.

Nemůžu říct, které postupy jsou správné a které ne. Jak již jsem řekl, všechny fungují (pokud teda neobsahují chybu). Postup (a logika), kterým fungují podmínky je zhruba tento:

  1. Řeknu, že tohle je podmínka
  2. Následně si vyberu způsob, kterým chci vytvořit podmínku – vyberu si operátor
  3. Poté pomocí operátorů porovnám hodnoty
  4. Pokud souhlasí podle operátoru, tak
    1. Provedu jednu akci
    2. Jinak provedu tu druhou
  5. A podmínku nakonec ukončím

Toto byl opravdu velice letmý náčrt toho, jak podmínka může fungovat.

 

První ukázka jednoduché podmínky

Dejme tomu, že chceme sestavit tuto podmínku:

  • Pokud je obsah proměnné $prvni stejný jako obsah proměnné $druha
  • Tak vypiš text „Je to stejné“
  • Pokud není, tak vypiš text „Není to stejné“

A co budeme muset udělat?

  • Vytvořit proměnnou $prvni a definovat její obsah
  • Vytvořit proměnnou $druha a taktéž definovat její obsah
  • Vytvořit podmínku, že pokud jsou obě proměnné stejné tak (…), jinak (…)

Jdeme tedy na to! Založme si nejdříve nový PHP dokument nazvěme ho podminka1.php (název je na Vás). Na jeho začátku definujme dvě základní proměnné $prvni a $druha:

<?php  
  $prvni = "ahoj";  
  $druha = "ahoj";

Definovali jsme oběma proměnným stejný obsah – slovo ahoj. To znamená, že až budeme stavět podmínku, logicky se nám vypíše text „Je to stejné“.

Dále vytvořme začátek podmínky:

if($prvni == $druha)

Teď jsme vytvořili podmínku, ve které porovnáváme dvě proměnné, že

  • pokud je obsah $prvni
  • stejný (to stejný značí v podmínce dvě rovnítka – více v článku Operátory) jako
  • obsah $druha

Ale neznáme pokračování, co má PHP skript udělat, pokud obsah těchto proměnných bude stejný, nebo nebude? Co potom? Ještě upravím ten řádek se začátkem podmínky, pomocí složené závorky { otevřu podmínku:

if($prvni == $druha){

Nyní už se podíváme na to, co udělat v případě shody a co v případě neshody:

if($prvni == $druha){   
  echo "Je to stejné"; 
} else {  
   echo "Není to stejné"; }

Toto už je plně funkční podmínka. Hned na druhý řádek jsme vložili echo, to se nám vypíše v případě shody. Následně přidáme na konec středník a ještě složenou závorku (tentokrát na druhou stranu) }.

Potom napíšeme else, tohle slovíčko nám totiž v podmínce značí v češtině slovní spojení v opačném případě. A přidáme složenou závorku {. Takže v opačném případě (pokud se obsahy proměnných $prvni a $druha nerovnají – nejsou stejné) vypiš pomocí echo text „Není to stejné“. Poté zase ukončíme řádek středníkem a na nový řádek přidáme složenou závorku na druhou stranu }.

Celkový kód bude vypadat takto (vyzkoušejte si):

<?php   
  $prvni = "ahoj";  
  $druha = "ahoj";  
  if($prvni == $druha){ 
    echo "Je to stejné"; 
  } else {  
    echo "Není to stejné";
  }  
?>

Co když obsah není stejný?

Pakliže bychom změnili obsah jedné z proměnných (slovo ahoj), tak už se nám nemůže vypsat text, že je to stejné. Není to stejné. Jakmile je jedna z porovnávaných proměnných jiná, tak se vypíše tak část za else. Tedy text „Není to stejné“. Uvedu pro Vás příklad:

<?php   
  $prvni = "nashledanou";   
  $druha = "ahoj";
  if($prvni == $druha){  
    echo "Je to stejné"; 
  } else { 
    echo "Není to stejné";
  }  
?>

Nyní by se nám měl vypsat text „Není to stejné“.

Operátory v PHP (2.díl/2.série)

Ahoj,

v minulém článku jsme se seznámili se Superglobálními proměnnými v PHP a jednoduchou adresou. Dnes a v příštích dílech se budeme zabývat hlavně superglobální proměnnou $_GET. Tu budeme používat pro tvoření jednoduchých URL adres za pomoci parametrů a podmínek.

Abychom ale začali s používáním podmínek, tak se nejdříve musíme naučit (nebo seznámit) různé operátory, které budeme v těchto podmínkách používat. Např. pokud bych chtěl zobrazit soubor info.php, tak musím nejdříve sestrojit nějakou podmínku a v té právě posuzovat podle operátorů shodu, nebo neshodu, nebo jiné možnosti.

Takže začneme…

Mezi nejzákladnější operátory patří například spojování řetězců, přičítání, odčítání a spoust dalších.

. slouží ke spojení více řetězců – př. $promenna.“.txt“ Nám spojí obsah proměnné $promenna s řetězcem .txt.
+ slouží k sčítání čísel – př. $vysledek = 5+5 A do proměnné $vysledek se nám uloží hodnota 10, apod.
slouží k odčítání čísel.
* slouží k násobení čísel. Hodně lidí si tento znak plete. Je to hvězdička, není to písmeno x, ani znak ×.
/ slouží k dělení čísel. Je to lomítko napravo. Není to znak ÷.
% slouží k výpočtu zbytku (většinou po dělení).
++ slouží k připočtení jedničky (1) k nějakému číslo – př. $cislo = 1++ a obsah $cislo bude o jednu číslici vyšší.
slouží k odečtení jedničky (1) od nějakého čísla.

 A nyní se podíváme na ty operátory, které budeme používat v podmínkách:

&& a zároveň. Podmínka, pokud něco a zároveň něco jiného, tak tohle.
|| nebo. Dvě svislé čáry (není to písmeno L), pokud je to takhle, nebo takhle (ale alespoň jedno), tak tohle.
== rovnost. Pokud se něco rovná s něčím, tak tohle.
!= nerovnost. Pokud se něco nerovná s něčím, tak tohle.
< menší. Pokud je něco menší než něco jiného, tak tohle.
> větší. Pokud je něco větší než něco jiného, tak tohle.
<= větší, nebo stejné. Pokud je něco větší, nebo stejně velké jako něco jiného, tak tohle.
>= menší, nebo stejné. Pokud je něco menší, nebo stejně velké jako něco jiného, tak tohle.

Toto byly základní operátory, které budeme v podmínkách používat. Příště se již vrhneme do podmínek.

Superglobální proměnné v PHP (1.díl/2.série)

Ahoj,

pod dlouhé době jsem se zase dostal k napsání článku sem na MůjSkript.cz. Tentokrát na téma o superglobálních proměnných v $_POST a $_GET a jejich parametrech v URL adresách.

Hádám, že jste se už určitě setkali s tím, že jste měli v adresním řádku adresu podobou této:

http://domena.cz/stranka.php?kategorie=php&tema=promenne

Mám namysli ty proměnné v superglobální proměnné v PHP v $_GET: kategorie=php a tema=promenne. Superglobální proměnné jsou ty, které jsou již předem definované v jazyce PHP a my se o ně víceméně nemusíme vůbec starat. V superglobálních proměnných se ukrývají nějaké předávané parametry. Buď z nějakého formuláře, předchozího skriptu, nebo prostě jako klasický odkaz.

Mezi ty nejznámější superglobální proměnné řadíme $_GET a $_POST. Uvedu jednoduchý příklad. Pokud budeme tvořit nějaký formulář v HTML, můžeme si v hlavičce toho formuláře vybrat, jakým způsobem chceme data z formuláře odesílat. V HTML tím přesněji myslím atribut method ve formulářovém elementu form. Většinou pak také uvádíme adresu, na kterou chceme data poslat – a to pomocí dalšího atributu a to je action.

<form method="post" action="zpracuj_formular.php">

Tímto easy (čti: velmi jednoduchým) formulářem odešleme data z formulářem prostřednictvím POST souboru zpracuj_formular.php. Pokud data posíláte prostřednictvím metody POST, tak se nám tyto data skryjí a nelze je vypozorovat v URL adrese (pouze požadavky a posílanými daty).

Kdybychom chtěli (jakožto určitě chceme) tyto data z formuláře zpracovat, velmi jednoduše se k nim dostaneme v PHP v superglobální proměnné $_POST. Jak už jsem říkal, metoda POST posílá data skrytá. Nelze je tedy vyčíst z URL adresy. Například pokud bych měl takovýto formulář:

<form method="post" action="zpracuj_formular.php"> 
  <input type="text" name="jmeno"> 
  <input type="text" name="prijmeni"> 
  <input type="submit"> 
</form>

tak data z něj v souboru zpracuj_formular.php mohu vyčíst takto:

<?php 
  $prvni = $_POST['jmeno']; 
  $druha = $_POST['prijmeni']; 
?>

Což znamená, že do proměnné $prvni jsem uložil data ze superglobální proměnné $_POST, která si vzala data z formulářového políčka, které mělo name=“jmeno.“ Vlastně v těch hranatých závorkách a jednoduchých uvozovkách definuji, z jakého inputu (nebo třeba selectu) mám vybrat ty správná data.

Pokud stále někdo tápe, ukážu mu to na jiném příkladě s jinými názvy proměnný a name. Formulář bude vypadat třeba takto:

<form method="post" action="zpracuj_formular.php"> 
  <input type="text" name="telefon"> 
  <input type="text" name="adresa"> 
  <input type="text" name="mail"> 
  <input type="submit"> 
</form>

Tak si data vytáhnu takhle:

<?php  
  $nejakapromenna = $_POST['telefon']; 
  $dalsipromenna = $_POST['adresa']; 
  $nejakadalsipromenna = $_POST['mail']; 
?>

Názvy těch proměnných před rovnítkem (v mém případě $nejakapromenna, $dalsipromenna, $nejakadalsipromenna) mohou být volitelné, to je na Vás. Jediné pravidlo je to, že text v hranatých závorkách a jednoduchých uvozovkách musí být vždy stejný s name v HTML. Takže abychom si to shrnuli:

  • v proměnné $nejakapromenna bude uložen obsah inputu s name=“telefon
  • v proměnné $dalsipromenna bude uložen obsah inputu s name=“adresa“
  • v proměnné $nejakadalsipromenna bude uložen obsah inputu s name=“mail“.

Samozřejmě doporučuji používat názvy proměnných alespoň trochu více přívětivější, nejlépe takové, abychom věděli, co se v nich ukrývá. Já použil schválně jiné proměnné, abyste si nemysleli, že se musí shodovat s name v inputech. Nemusí, můžou být různé, ale můžou být i totožné. Naopak názvy u superglobálních proměnných se musí shodovat s name v inputu v HTML.

 

Další superglobální proměnnou je $_GET. Pomocí parametru $_GET můžeme předávat parametry veřejně dostupné v URL adrese. Uvedu příklad:

<form method="get" action="zpracuj_skript.php">

A pokud je budeme chtít zpracovat v PHP, tak to funguje úplně stejně jako u superglobální proménné $_POST, až na ten rozdíl, že nepoužijeme $_POST, ale $_GET. Takže si ukážeme zase nějaký kompletně funkční příklad. V HTML budu mít tenhle formulář:

<form method="get" action="zpracuj_formular.php"> 
  <input type="text" name="jmeno"> 
  <input type="text" name="mail"> 
  <input type ="text" name="adresa"> 
  <input type="submit"> 
</form>

A v PHP si pomocí superglobální proměnné $_GET data vypíšu:

<?php 
  $jmeno = $_GET['jmeno'];
  $email = $_GET['mail']; 
  $adresa = $_GET['adresa']; 
?>

Zase, není zde vůbec žádný problém použít jiné názvy proměnných. Například zde jsem jako proměnnou použil $email i když v superglobální proměnné a v name inputu mám jen mail. Opět to zde vůbec nevadí.

 

Pokud bychom chtěli zkombinovat v HTML formu metodu post a supergobální proměnnou $_GET, tak se Vám to nepovede. Respektive nezískáte žádná data. To samé platí i naopak – pokud budu v HTML formuláři definovat metodu get a v PHP ji volat jako superglobální proměnnou $_POST, nedostanu žádnou odpověď, žádná data.

Superglobální proměnné lze používat i pro všechny možné inputy, password, selecty i radio buttony, je to jedno. Vždy tu správnost ovlivňuje jen správně nastavená metoda ve formuláři a v PHP – musí se shodovat.

 

A teď konečně k těm slíbeným URL adresám pomocí $_GET parametrů… Vytvořte si nový soubor index.php a do jeho obsahu napište definici parametrů superglobální proměnné $_GET:

<?php 
  $predmet = $_GET['predmet']; 
?>

 

Tento zápis, předpokládám, chápete. Nyní si přidáme první podmínku a to:

  • pokud se obsah proměnné $predmet (což je obsah superglobální proměnné $_GET[‚predmet‘]) shoduje s textem prirodopis
  • tak vypiš jednoduchou hlášku „Jsi v kategorii Přírodopis“
<?php
  $predmet = $_GET['predmet']; 
  if ($predmet == "prirodopis"){ 
    echo "Jsi v kategorii Přírodopis"; 
  } 
?>

Takže pokud přistoupíme na adresu http://vasedomena.cz/index.php?predmet=prirodopis, tak se nám zobrazí text „Jsi v kategorii Přírodopis“.

Nyní si zkusíme ještě trošku tu podmínku změnit, že:

  • pokud se obsah proměnné $predmet (což je obsah superglobální proměnné $_GET[‚predmet‘]) shoduje s textem prirodopis
  • a zároveň (to značí ty &&) pokud se obsah proměnné $tema (což je obsah superglobální proměnné $_GET[‚tema‘]) shoduje s textem obratlovci
  • tak vypiš text „Jsi v kategorii Přírodopis v tématu Obratlovci“
<?php  
  $predmet = $_GET['predmet']; 
  $tema = $_GET['tema']; 
  if ($predmet == "prirodopis" && $tema = "obratlovci"){ 
    echo "Jsi v kategorii Přírodopis v tématu Obratlovci"; 
  } 
?>

Takže pokud přistoupíme na adresu http://vasedomena.cz/index.php?predmet=prirodopis&tema=obratlovci, tak se nám zobrazí text „Jsi v kategorii Přírodopis v tématu Obratlovci“.

Tak, tohle by nám pro začátek mohlo stačit. Nejdříve měl být tenhle článek jenom o superglobálních proměnných, ale nějak jsem se rozepsal, tak jsem sem přidal i malou ukázku URL adresy s $_GET parametrem. V příštích dílech si ukážeme, jak rozsáhleji „opodmínkovat“ skript, jak ošetřit vstup, jak zobrazit chybovou hlášku v případě špatného parametru a ještě víc..

Tak se těšte! Příští díl bude v neděli (26.4.), nebo v pondělí (27.4.) 🙂