PHP pre začiatočníkov - Polia, 5.diel

PHP pre začiatočníkov - Polia, 5.diel

V tomto diele sa dozviete o poliach a ich možnosti zápisu. Niečo si povieme aj o superglobálných poliach a jedno si aj vykúšame. Uvedieme príklad využitia polí a možnosti odoslania dát resp. hodnôt.
Polia sú trochu odlišné od premenných. Ich základná odlišnosť spočíva v tom, že v premenných môže byť len jedna hodnota a v poliach môže byť rada hodnôt. V poliach sa môžu taktiež nachádzať premenné, čísla a aj iné polia. Polia delíme na indexové a asociatívne. Indexové používajú čísla a asociatívne, ktoré využívajú premenné, reťazce a pod.. Pri indexovaných poliach sa počíta prvá hodnota od číslice nula. Základná syntax polí sa začína takto:
<?

$pole = array ("PHP","MySQL","Apache");



echo "{$pole["0"]}<br />";

echo "{$pole["1"]}<br />";

echo "{$pole["2"]}<br />";

?>
alebo aj takto:
<?

$pole[] = "PHP";

$pole[] = "MySQL";

$pole[] = "Apache";

// môžu byť aj s číslami ako $pole["0"], $pole["1"] a pod.



echo "{$pole["0"]}<br />";

echo "{$pole["1"]}<br />";

echo "{$pole["2"]}<br />";

?>

Ste práve svedkom príkladu, ktorý využíva indexové pole. Máte možnosť si všimnúť aj spomínané indexovanie od nuly. Pole zapisujeme podobne ako premennú ale pred ňu si zapíšeme array aby sme vedeli, že ide o pole a aby to samozrejme vedel aj jazyk php. Keď zapisujeme pole do príkazu echo, tak si určite musíte všimnúť, že sa zapisujú do týchto znakov {} resp. takto {$pole["0"]}. Druhý príklad je rovanký len sme pole rozdelili. Toto je ukážka asociatívnych polí:

<?

$pole["PHP"] = "PHP: Hypertext Preprocessor";

$pole["MySQL"] = "Structured Query Language";

$pole["Apache"] = "Open source Web server";



echo "Skratka PHP znamená {$pole["PHP"]}<br />";

echo "Skratka MySQL znamená {$pole["MySQL"]}<br />";

echo "Skratka Apache znamená {$pole["Apache"]}<br />";

?>

Ako máte sami možnosť vidieť, tak asociatívne polia využívajú k svojej správnej funkcií ako kľúč reťazce a nie číslice. Polia sú čiastočne prerobiteľné a to tak, že ich môžete indexovať od jednotky a nie od nuly. Je to dosiahnuteľné potom ako pred indexované pole vložíme takýto dotaz:

<?

$pole = array (1 => "PHP","MySQL","Apache");



echo "{$pole["1"]}<br />";

echo "{$pole["2"]}<br />";

echo "{$pole["3"]}<br />";

?>

Možno si budete myslieť, že "prerobenie" je dosť tvrdý výraz pre takúto drobnú úpravu. Mohli by sme polia indexovať taktiež aj od 5 alebo od 100. Je tu aj plno iných možností a je to len na vás akú si vy zvolíte. Máte možnosť vidieť, že pred array sme vložili  1 a za ňou nasledoval tento znak =>.

Od verzie PHP v4.1 boli implementované aj tzv. "Superglobálne polia.". Tieto polia majú oproti bežným jednu veľkú výhodu a to je bezpečnosť. Hodnotu, ktorú pole odosiela poznáme a vieme odkiaľ je. Poznáme mnoho druhov superglobálnych polí a medzi ne patria aj $_GET a $_POST. Ako príklad využitia si môžete zobrať aj formuláre do ktorých sa hodnota odosiela. Cez $_GET sa nám odoslaná hodnota vypíše v prehliadači tam kde zadávame adresu a to znamená, že sa ukladá aj do histórie. Preto veľmi neodporúčam využívať tento typ pre heslá užívateľov. Pri $_POST nevidíte ako sa odosiela hodnota a ani sa neukladá do histórie. Ukladanie a odosielanie hesiel ešte nepatrí do tejto časti. Polí je mnoho a dostaneme sa k nim v budúcich dieloch.

Ako príklad použitia polí môžem uviesť aj malý formulár. Poviete si "len formulár už nie", ale je to tak. Je to najjednoduchší príklad aký pre začiatočníka môžem uviesť. Ako prvé si napíšeme celý zdrojový kód formuláru a potom si už len všetko vysvetlíme. Prvý súbor sa bude volať - "index.php":

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

<input name="text" type="text" />

<input type="submit" value="Odoslať hodnotu." />

</form>

Druhý súbor "form.php" bude príjmať hodnoty od "index.php":

<?php

if(isset($_GET["text"])){

echo $text;

}

?>

Súbor "index.php" neobsahuje žiadny kód php. Obsahuje len čistý formulár, ktorý je nastavený nasledovne: v tagu form máme zapísané dve veci a to action="" a method="". Action nám zaistí odoslanie hodnôt do súboru "form.php" Ďalej tu máme method. Ako už bolo spomínané pri superglobálnych poliach, tak aj tu máme niečo podobné. My sme nastavili method na GET, čo znamená, že tam kde v prehliadači zadávame URL adresu bude teraz zadaná naša hodnota, ktorú sme napísali do formuláru a odoslali. Zapísaná bude takto: form.php?text=PaBi3. Samozrejme iba ak sme zadali text "PaBi3". Ak by sme zadali method na "post", tak by nám vyšlo toto: form.php. A ďalej nič.

Druhý súbor je celý v php a nepotrebuje ani veľmi zložité vysvetlenie ale toto je časť venovaná poliam takže sme použili už spomínané superglobálne pole $_GET. $_GET slúži podobne ako aj method resp. superglobálne polia sú založené na podobnej báze. Tiež si to celé môžeme preložiť do slovenčiny a zistíme, že nám výde toto: ak(jenastavené($_získaj["text"])) napíš $text. Je to pochopiteľné už len z názvu. Celkom jednoduché tak ako minule :-). Toto by bolo k poliam asi všetko.

Alternatívne verzie: Text PDF Voice
Autor: PaBi3 · Kategória: Programovanie · Dátum: 30.04.2005 17:04

Komentáre

#1 Lotus
01.07.2008 16:58
Super, pekne napísané, fakt :) Dík.

#2 phm46 Web E-mail
15.08.2011 10:17
mám problém s mojím formulárom... keď ho skúsim použiť na mojom serveri tak mi v poriadku odošle mail ale keď som to skúsil na jednom webhostingu tak mi vypísalo toto
Parse error: syntax error, unexpected $end, expecting T_VARIABLE or T_DOLLAR_OPEN_CURLY_BRACES or T_CURLY_OPEN in /mnt/host-users/p/h/m/phm46/data.php on line 31

#3 Kubo2 E-mail
12.12.2012 14:07
Chyba pri zpracovaní: Chyba syntaxe, neočakávaný koniec príkazu, očakávaná premennä alebo znak doláru alebo množinové kučeravé závorky, v súb
ore * na riadku __LINE__.
Ber to doslova.

Osobné údaje
Captcha
Odpíšte text z obrázku. Rozlišujú sa malé a veľké písmená.
Obsah
Možnosti