Programování v PHP - 2.díl - Proměnné

22. 6. 2012 Milan Suk PHP Žádný komentář 774

V tomto díle seriálu o programování v jazyce PHP se podíváme na proměnné. Řekneme si, co jsou to konstanty a jaké definované konstanty lze PHP použít. Dále se opdíváme na jednoduché ověřování formuláře metodou POST a GET. Na konci článku si již také naprogramujeme naši první aplikaci.

Proměnné

Proměnná je textové označení nějaké informace. Tyto informace můžou být třeba text, celé číslo, desetiné číslo, nebo třeba logická hodnota (pravda a nepravda). V jazyku PHP se definují znakem pro dolar ($)  a hned za ním je zmíněné označení. Za názvem proměnné musí samozřejmě středník. Vytvoření funkce má také nějaká svoje pravidla zápisu. Například název nesmí začínat číslem, nebo speciálním znakem jako třeba tečkou.

Jednoduché definování proměnné potom vypadá následovně:

<?php
 $nazev_promenne;
?>

Jazyk PHP je netypový. To znamená, že nepoužívá datavé typy, takže při definici proměnné není nikde přesně řečeno, zda je typu text (string), nebo třeba číslo (int). Výhoda je v jednodušší pochopitlnosti, ovšem na druhou stranu je kód více nepřehledný a je to docela netypické, protože většina jazyků je silně typová.

Přiřezení hodnoty do proměnné se provadí s pomocí rovnítka, přičemž za rovnítko zadáte požadovaný výraz, který se má do proměnné dosadit. Při dosazování hodnot se rozhoduje o tom, jakého o bude proměnná typu. Při dosazování textu musí být umístěn mezi uvozovkami a naopak, když dosazujeme číslo, nesmí být uzavřeno v uvozovkách. U logických hodnota lze dosadit dvě hodnoty - true a false. 

<?php
 $cislo = 3.14;
 $text = "Nějaký zajímavý text";
 $logicka_hodnota = true; //popř. false (pravda - true; nepravda - false)
?>

Vypsání hodnoty proměnné

Pokud budeme chtít hodnotu proměnné vypsat do stránky, použije se samozřejmě funkce echo(). Jako argument jí potom předáme označení naší funkce. Při vypisování se navíc nemusíme starat o to, jestli je proměnná textového, logického, nebo číselného typu. Hodnota se vždy vypíše jako text.

Vše by mělo být jasné po shlédnutí tohoto příkladu.

<?php
 $moje_jmeno = "Milan Suk";
 echo($moje_jmeno);
?>

Někdy bychom také chtěli před (popř. za) proměnnou umístit ještě nějaký text a do stránky vypsat řeba - Moje jméno je Milan Suk. To provedeme tak, že řetězec "Moje jméno je" spojíme s řetězcem uloženým v proměnné a nakonec můžeme ještě umístit tečku, aby to byla plnohodnotná věta. Spojování řetězců se PHP provádí tečkou. Náš příklad by potom vypadal asi takto :

<?php
 $moje_jmeno = "Milan Suk";
 echo("Moje jméno je " . $moje_jmeno . ".");
?>

Zde si jen musíme uvědomit, že v uvozovkách je znak tečka skutečně znakem, ale zapsán sám plní funkci spojování řetězců.

Operace s proměnnými

Jak se pracuje s proměnnými, které obsahují text, jsme si již ukázali. S proměnnými, které přenášejí číselné hodnoty se dají vytvářet větší kouzla. Protože jsou to číselné hodnoty, můžeme je mezi sebou sčítat, odečítat, násobit a dělit. Dále jsou zde také pojmy inkrement a dekrement, kterých se ovšem vůbec nemusíme bát. Slouží pro přičtení, nebo naopak pro odečtení čísla jedna od zadané proměnné a zapisují se viz. příklad níže.

<?php
 // Zadání čísel
 $cislo1 = 1024;
 $cislo2 = 3.14;

 echo("Součet čísel je " . ($cislo1 + $cislo2) ); //Sečtení
 echo("Rozdíl čísel je " . ($cislo1 - $cislo2) ); //Odečtení

 echo("Součin čísel je " . ($cislo1 * $cislo2) ); //Vynásobení
 echo("Podíl čísel je " . ($cislo1 / $cislo2) );  //Vydělení

 // Inkrementace
 echo ("Číslo " . $cislo1 . " má po jeho inkrementaci hodnotu" . ($cislo1++) . " !" ); // Výraz $cislo1++ přiřadí hodnotu 1025 ( = 1024 + 1 )

 // Dekrementace 
 echo ("Číslo " . $cislo1 . " má po jeho dekrementaci hodnotu" . ($cislo1--) . " !" ); // Výraz $cislo1-- přiřadí hodnotu 1023 ( = 1024 - 1 )

?>

POZN.: Při zadávání desetiných čísel se jako desetinná čárka používá tečka.

Konstanty

Konstanta je vlastně proměnná, která ovšem nemá proměnnou hodnotu, ale má ji pevně danou. Další výrazný rozdíl je ve způsobu definování a zápisu. S konstantami se pracuje podobně jako s proměnnými, ovšem při zápisu se pro označení konstanty nepoužívá znak dolaru, jen se jednoduše zapíše označení konstanty (jako normální text). Při používání proměnných je také zvykem používat velká písmena, čehož se držte, protože to zpřehledňuje kód a bude vám hned jasné, že co je velkým písmenem je konstanta.

Definování konstanty probíhá za pomocí funkce define(), která očekává dva parametry. Prvním je označení konstanty a druhým je hodnota konstanty. Vše je jednoduše znázorněno na příkladu.

<?php
 define("OS" , "Microsoft Window 7");
 define("MOJE_JMENO", "Milan Suk");
 echo("Moje jméno je " . MOJE_JMENO . " a používám operační systém " . OS . " !");
?>

Některé konstanty v jazyce PHP

V jazyce PHP jsou již některé konstanty (stejně tak jako obravská kvanta funkcí) definované a stačí je jen použít. Jedna taková konstanta je např. PHP_OS, která vrací název operačního systému uživatele. Samozřejmě je v PHP takovýchto konstant definovaných mnohem více, proto si v příkladu níže uvedeme některé z nich.

// Některé informace o operačním systému
echo DIRECTORY_SEPARATOR; // ve Windows vrací výsledek  /
echo PHP_SHLIB_SUFFIX;    // ve Windows vrací výsledek  dll
echo PATH_SEPARATOR;      // ve Windows vrací výsledek  ;


// Další konstanty
echo HTTP_ACCEPT_LANGUAGE; // zobrazí název jazyka
echo REMOTE_ADDR;          // Zobrazí IP adresu uživatele
echo SCRIPT_URI;           // Zobrazí adresu souboru

Další takovéto konstanty získáme, pokud použijeme funkci phpinfo(). Tato funkce nám vypíše všechna možná nastavení PHP, funkce a nebo právě naše konstanty.

Zpracování formulářů

Proměnné se samozřejmě používají hlavně ve chvíli, kdy od uživatele potřebujeme získat nějaké informace. Nejčastější způsob získání těchto informací je přes nějaký odesílací formulář. Tyto formuláře se definuj jako normální HTML prvky a až potom se jejich hodnoty kontrolují s pomocí skryptovacího jazyka. Pokud nevíte, jak s formuláři v jazyce HTML pracovat, přečtěte si následující článek - http://www.jakpsatweb.cz/html/formulare.html.

Při odesílání ofrmuláře máme dva způsoby přenosu dat. První je metoda GET, při níž se informace zobrazují v adrese a metoda POST, při jejiž použítí se informace nikde nezobrazují, což je tedy výhodné např. pri registraci, či jiných kritických procesů na webu, kdy může hrozit napadení. Jakou metodou budeme data posílat upřesňuje atribut method v tagu form (viz. http://www.jakpsatweb.cz/html/formulare.html#form). Dále je pro nás důležitý atribt action, který určuje, na které stránce se bude obsah zpracovávat. Zde je příklad, kde od uživatele žádáme jeho jméno, které pošleme metodou POST a zpracovávat ho budeme na stránce zpracovani.php.

<form action="zpracovani.php" method="POST">
 <input type="text" name="jeno" />
 <input type="submit" value="Odeslat" />

</form>

Získání dat z polí formuláře

Když chceme s daty z polí formuláře pracovat, musíme potom skripty dát do umístění, které jsme zadali v HTML tagu form atributu action. Zde se totiž data budou zasílat. V jednotlivých polích jsou pro nás zásadní také atributy name, které určují označení hodnoty. Pokud toto všechno víme, získání dat provedeme aplikací příkladu níže.

// Definujeme si proměnnou, do které hodnotu uožíme
$jmeno = $_POST['jmeno'];  

echo("Vaše jméno je " . $jmeno); // Výpis informací

Data tedy získáváme pomoc pole $_POST[value] (co je to pole si řekneme v dalších dílech) a za value dosazujeme de facto hodnotu, kterou jsme zadali za atribut name v textovém poli. Pokud bychom formuláři nastavili odesílací metodu GET, postupovali bychom obdobně, jen s tím rozdílem, že místo pole $_POST[] bychom použili pole $_GET[] (viz. níže). 

// Definujeme si proměnnou, do které hodnotu uožíme
$jmeno = $_GET['jmeno']; 

echo("Vaše jméno je " . $jmeno); // Výpis informací

Jednoduchá kalkulačka

V naší kalkulačce budeme od uživatele očekávat zadání dvou číselných hodnot do textových polí ve stránce. Potom tyto hodnoty v další php stránce získáme a vypíšeme jejich součet, rozdíl, součin a podíl. Vše jsme vlastně již provedli zde, takže sestrojení kódu nebude problém. Pokud to není nezbytně nutné, vždy bych raději volil metodu POST, protože je o něco bezpečnější, než GET (útočník nevydí hodnoty v url adrese).

Nejdříve si tedy vytvoříme stránku HTML s dvěmi textovými poli:

<form action="spocitat.php" method="POST">
 První číslo : <input type="text" name="n1" /> <br />

 Druhé číslo : <input type="text" name="n2" />
 <input type="submit" value="Spočítat" />

</form>

A potom vytvoříme stránku spocitat.php, ve které údaje spracujeme a vypíšeme výsledek :

 <?php
 // Získání žádaných hodnot
 $n1 = $_POST['n1'];
 $n2 = $_POST['n2'];

 // Vypočítat a vypsat
 echo("Součet čísel je " . ($n1 + $n2) . "<br />"); //Sečtení

 echo("Rozdíl čísel je " . ($n1 - $n2) . "<br />"); //Odečtení
 echo("Součin čísel je " . ($n1 * $n2) . "<br />"); //Vynásobení

 echo("Podíl čísel je " . ($n1 / $n2) . "<br />");  //Vydělení
?>

Níže můžete vidět výsledek našeho snažení. Všimněte si také, že se nemusíme starat o to, jestli zadáváme desetiná, nebo celá čísla a taktéž i s výsledkem si PHP hravě poradí i když je číslo desetiné.

Závěr

Tímto příkladem bych tento díl označil za ukončený. Na vyzkoušení můžete udělat nějaké další interakce s uživatelem a nebo můžete naši kalkulačku ještě doladit. V dalším díle tohoto seriálu se podíváme na rozhodovací struktury a budeme samozřejmě pokračovat další webovou aplikací.



Aktuálně

  • 3. 6. 2013 - Nový vzhled webu

Code Snippety

Komentáře

Statistiky

  • TOPlist