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

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

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