Parametre webstránky

Ešte predtým, ako sa pustíme do novej témy, vráťme sa k poslednej ukážke. V sekcii jazyka PHP sme sa naučili, že je možné používať funkcie na obalenie časti kódu pre sprehľadnenie zdrojového kódu a pre funkcionalitu, ktorú potrebujeme spúšťať na viacerých miestach a tým pádom nie je nutné zadávať opakujúci sa kód. Možno ste si všimli, že pri poslednej ukážke z predchádzajúcej kapitoly sme na viacerých miestach zadali ten istý kód, konkrétne výpis poľa pomocou cyklu for. Tento spôsob nie je samozrejme správny, ale nechceli sme to hneď komplikovať s použitím funkcie. Ak si teda spomeniete na teóriu okolo funkcií, iste vás napadlo, že celý ten cyklus for by sa dal obaliť do funkcie a pole, ktoré by sme chceli vypísať, by sme jej poslali ako parameter. Nie je na tom veľmi čo vysvetľovať, poslanie parametra a následne jeho použitie v tele funkcie sme si už preberali, poďme to teda aplikovať na náš problém. Vyskúšajte si to sami, či by ste to zvládli, ak nie, pomôžte si ukážkou:

 

<h2>Triedenie pola</h2>
<?php

function vypisPole($polePreVypis){
    for($i = 0; $i < count($polePreVypis); $i = $i + 1){
        echo $polePreVypis[$i]." ";
    }
    echo "<br><br>";
}

$pole = array("Jano", "Fero", "Lujza", "Barbora", "Michal", "Lenka", "Katarina", "Peter", "Jozef", "Karol");
vypisPole($pole);

sort($pole);
vypisPole($pole);

rsort($pole);
vypisPole($pole);

?>

 

 

Určite ste si všimli, že táto verzia kódu je oveľa prehľadnejšia a kratšia, takto to má proste vyzerať. Viackrát sme si povedali, že jazyk PHP nám bude slúžiť najmä na vymoženosti a funkcionalitu webstránok, ktoré nie je možné spraviť pomocou jazyka HTML. Jedná sa najmä o manipuláciu s informáciami – dátami, čiže prijímanie a odosielanie dát. Práve táto oblasť webstránok je tá najdôležitejšia a kľúčová v informačných systémoch. Ako sme si už spomenuli, dáta môže stránka prijímať z nejakého zdroja (súbor, databáza, iná stránka...) alebo od používateľa (najmä cez formuláre, čo si budeme preberať hneď po tejto kapitole).

 

Čo to vlastne pre nás ako programátorov znamená, že vieme prijať dáta? Znamená to, že v kóde našej webstránky vieme pomocou funkcií na to určených zachytiť dáta, ktoré boli našej stránke nejakým spôsobom posielané a po zachytení s nimi pracovať. Môže to byť napríklad pole, ktoré sme si natvrdo deklarovali v poslednej ukážke. Pomocou týchto funkcií by sme už túto formu dát dostali a priradili do premennej. Keďže by sme ju mali v premennej, vedeli by sme s ňou pracovať, podľa toho, ako si to požiadavky programu/webstránky vyžadujú. Môžeme tie dáta upraviť ako je potrebné a vypísať na obrazovku napríklad pomocou tabuľky alebo môžeme tieto dáta niekam ďalej uložiť a uchovať (súbor, databáza...).

 

V tejto kapitole si ukážeme špecifický typ posielania/zachytenia dát vo webstránke, aby sme pochopili, že je niečo také možné a že ako to asi funguje a na záver kapitoly si aj spomenieme prípady praktického využitia. Okrem vyššie spomenutých metód posielania dát webstránke je možné zadať nejaké dáta/údaje webstránke pomocou URL adresy. Zatiaľ vieme iba to, že URL adresa je adresa – cesta k nejakému súboru uloženému na serveri. Jednotlivé časti URL adresy oddelené lomítkami vedú v adresárovej štruktúre postupne k cieľu. Používali sme URL adresy ako zdroje obrázkov alebo ako cieľ odkazu. V našom projekte používame dve rôzne adresy pre dva rôzne súbory. Na konci tejto URL adresy je vo väčšine názov konečného cieľa, v našom prípade názov súboru.

 

V jazyku PHP je možné za cestou k danému súboru – webstránke zadať ľubovoľný počet parametrov, kde parameter predstavuje akokeby hodnotu premennej - string. Je to niečo podobné ako pri funkciách, kde do tela funkcie môžeme poslať ľubovoľný počet parametrov. V tomto prípade je akokeby naša funkcia celá webstránka, do ktorej si pomocou URL posielame parametre. Systém zadávania týchto parametrov je nasledovný. Za URL adresou zadáme znak otáznika (questionmark - ?), za ktorým nasleduje rad parametrov. Parameter sa zadáva vo formáte ako priradenie premennej, kde zadáme názov – identifikátor, ktorý bude reprezentovať danú hodnotu, znamienko rovná sa a za ním hodnota (číslo/string). Viac parametrov medzi sebou oddeľujeme znakom ampersand (&). Koniec našej URL by mohol vyzerať teda takto : index.php?param1=Ahoj&param2=svet. Následne vieme v programe tieto parametre zachytiť pomocou špeciálnej funkcie get (dostať, získať, nadobudnúť), ktorej zápis je $_GET, za ktorým nasleduje v hranatých zátvorkách a v úvodzovkách názov parametra, ktorý sa snažíme načítať. Mali by sme si upresniť, že to v skutočnosti funkcia nie je, ale že je to akýsi špeciálny druh premennej, v ktorej sú uložené všetky posielané parametre. Poďme sa spolu pozrieť na jednoduchý príklad, aby ste videli, ako to funguje. V ukážke si upravíme link na súbor page2.php v súbore menu.html, aby sa nám táto stránka rovno volala s parametrami a kód pre výpis – zachytenie parametrov si vložíme do súboru page2.php na koniec:

 

menu.html:

<a href="index.php" class="pretty">Domov</a>
<a href="page2.php?param1=Ahoj&param2=svet" class="pretty">Stranka 2</a>

 

page2.php:

...
echo $_GET["param1"]." ".$_GET["param2"]."!";

 

Ako vidíte, skutočne sa vypíše text Ahoj svet!, pretože v špeciálnej premennej $_GET sa nachádzajú všetky zachytené parametre. Táto funkcionalita, ktorú sme si práve vyskúšali, je veľmi silná a využiteľná vec vo svete webstránok a priblížila nás o veľký krok k tomu, aby sme pomocou našej webstránky vedeli posielať a zachytávať potrebné dáta. Poďme si povedať pár praktických významov, aby ste mali predstavu o čom je reč, resp. aby ste pochopili, akú to má silu a na čo je to dobré. V ukážke sme v podstate zavolali webstránku – pomocou jej URL adresy – s nejakými parametrami. Je to v podstate cesta, ako posielať dáta medzi stránkami, vo väčšine pomocou odkazov medzi sebou, v ktorých sa podľa požiadaviek menia hodnoty parametrov. To, že vieme poslať rôzne hodnoty webstránke má výhodu v tom, že podľa nejakých našich požiadaviek jej vieme dať najavo, aby sa niečo vykonalo odlišne, aby sa naša stránka správala inak alebo aby sa na nej niečo zobrazilo, podľa toho, aká je hodnota parametra.

 

Zoberte si napríklad, že by sme našu stránku chceli mať dvojjazyčne, čiže aby bolo možné prepnúť medzi jej slovenskou a napríklad anglickou verziou. Jednoducho by sme to mohli spraviť tak, že by na našej stránke index.php bol odkaz na zobraziť v angličtine. Zavolali by sme tú istú stránku, ale hodnota povedzme parametra s názvom lang (názov nie je podstatný) by bola en (english). V kóde stránky by sme sa na začiatku pýtali, či je nie je hodnota tohto parametra nastavená na hodnotu en. Ak nie, neriešili by sme nič, ak ale áno, zabezpečili by sme, aby sa naše texty na stránke zobrazovali v angličtine.

 

Ďalší príklad je, že parameter v URL, resp. jeho hodnota môže identifikovať nejaký stav webstránky. Pozrite sa napríklad na stránku www.google.sk. Ak do nej zadáte pre vyhľadávanie nejaké slovo, všimnite si, že toto slovo sa objaví v URL stránky (troška v inom formáte, ako sa učíme, ale to teraz nie je podstatné...). Ak zmeníte keyword (kľúčové slovo) pre vyhľadávanie a dáte ho vyhľadať, zmení sa aj v URL adrese. Výhoda tohto je, že ak si túto URL skopírujete a niekomu pošlete, aby si pozrel výsledky vyhľadávania ako ste ich videli vy, pomocou uchovanej hodnoty v parametroch v URL adrese sa stránka načíta v rovnakom stave ako vám, teda s vyhľadaným rovnakým slovom. Takisto ak si urobíte záložku (bookmark) na túto webstránku v tomto stave (s aktuálne vyhľadaným vašim slovom), po jej zavolaní sa načíta stránka s rovnakým slovom vyhľadávania.

 

Ďalšie použitie, s ktorým sa určite denne stretávate, sú filtre v internetových obchodoch (eshopoch). Predstavte si klasickú návštevu eshopu, kde kliknete na nejakú kategóriu produktov. Následne sa vám zobrazí dlhý zoznam produktov. Aby ste našli konkrétne produkt, o ktorý máte záujem, použijete filtre. Vpíšete alebo označíte konkrétneho výrobcu, typ, cenové rozpätie a podobne. Tieto parametre sa vo väčšine stránke posielajú ako URL parametre a po ich zadaní sa načíta tá istá stránka, nie je pre každý filter osobitná stránka s osobitným koncom jej URL adresy. Kód stránky sa na tieto filtre pýta a ak nejaké dostane (parametre), aplikuje to na výpisaný zoznam produktov. Taktiež ak si odkaz s naklikanými filtrami uložíte alebo pošlete niekomu inému, vďaka hodnotám v URL adrese by ste mali dostať rovnaký výsledok stránky.

Máte nejakú otázku alebo Vám niečo nie je jasné? Napíšte nám na info@zacni-programovat.sk a poradíme!

Obsah súborov projektu po tejto prednáške

1 - global.css

.pretty{
color: black;
text-decoration: none;
border: 3px solid green;
background-color: white;
text-align: center;
padding: 10px 50px;
}

.pretty:hover{
background-color: green;
color: white;
border: 3px solid blue;
}

.pretty:active{
background-color: yellow;
color: blue;
border: 3px solid blue;
}

2 - index.php

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>

<h1>Vitajte na domovskej stranke!</h1>
<?php include "menu.html";?>

<?php

echo "<h2>1 - Vymazanie iba hodnoty prvku</h2>";
$pole = array("a", "b", "c");
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";

$pole[1] = "";
echo 'Vykonanie prikazu $pole[1] = "";<br><br>';
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";


echo "<h2>2 - Vymazanie prvku pomocou funckie unset</h2>";
$pole = array("a", "b", "c");
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";

unset($pole[1]);
echo 'Vykonanie prikazu unset($pole[1]);<br><br>';
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";


echo "<h2>3 - Vymazanie prvku pomocou funckie array_splice</h2>";
$pole = array("a", "b", "c");
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";

array_splice($pole,1,1);
echo 'Vykonanie prikazu array_splice($pole[],1,1);<br><br>';
echo "Pole[0]: ".$pole[0]."<br>";
echo "Pole[1]: ".$pole[1]."<br>";
echo "Pole[2]: ".$pole[2]."<br>";
echo "Dlzka pola count(\$pole) je ".count($pole)."<br><br>";
?>

<h2>Triedenie pola</h2>
<?php

function vypisPole($polePreVypis){
for($i = 0; $i < count($polePreVypis); $i = $i + 1){
echo $polePreVypis[$i]." ";
}
echo "<br><br>";
}

$pole = array("Jano", "Fero", "Lujza", "Barbora", "Michal", "Lenka", "Katarina", "Peter", "Jozef", "Karol");
vypisPole($pole);

sort($pole);
vypisPole($pole);

rsort($pole);
vypisPole($pole);

?>

</body>
</html>

3 - menu.html

<a href="index.php" class="pretty">Domov</a>
<a href="page2.php?param1=Ahoj&param2=svet" class="pretty">Stranka 2</a>

4 - page2.php

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>

<h1>Vitajte na stranke 2!</h1>
<?php include "menu.html";?>

<h2>Zoznam ziakov</h2>
<?php

//deklaracia pola
$pole = array("Jano", "Fero", "Lujza", "Barbora", "Michal", "Lenka", "Katarina", "Peter", "Jozef", "Karol");
$dlzka_pola = count($pole); //zistenie dlzky pola

//moznosti vypisu uvodzoviek
// echo "<table border='1'>";
// echo '<table border=''1''>';
echo "<table border=\"1\">";

for($i = 0; $i < $dlzka_pola; $i = $i + 1){
//pre kazdy prvok pola vypiseme jeden riadok tabuky
echo "<tr><td>".($i + 1)."</td><td>".$pole[$i]."</td></tr>";
}

echo "</table>";

echo $_GET["param1"]." ".$_GET["param2"]."!";
?>


</body>
</html>

Ťažko sa vám učí samému?

Máte problémy s niektorými časťami alebo sa neviete učiť sám? Využite našu možnosť individuálnej asistencie:

  • samostatný prístup
  • vysvetlenie nejasností prebraného učiva
  • úlohy a cvičenia navyše
  • všetko z pohodlia domova cez mail a skype

Pre viac info kliknite tu

Kľúčové slová prednášky

parametre htmlparametre webstrankyparametre v urlphp getphp postphp parametrephp nacitanie parametrovzachytenie parametrov

IT ftip

Ako volá programátor o pomoc keď sa topí? F1, F1, F1!!!