home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 June / Chip_2001-06_cd1.bin / obsahy / Chip_txt / txt / 96-99.txt < prev   
Text File  |  2001-04-29  |  10KB  |  204 lines

  1. Zßklady PHP
  2. RYCHLOKURZ PHP
  3. Na jazyk PHP jste jist∞ slyÜeli mnoho chvßly. Pokud chcete s jeho pomocφ zkusit vytvo°it n∞jakou p∞knou webovou aplikaci, t°eba vßm p°ijde vhod nßÜ kurz zßklad∙ PHP.
  4.  
  5. ┌vod
  6. V p°edchozφm Φφsle Chipu se mohli u₧ivatelΘ oblφbenΘho skriptovacφho jazyka PHP seznßmit s postupem instalace aktußlnφ verze tohoto hypertextovΘho preprocesoru, a sice s instalacφ na servery od spoleΦnosti Microsoft (IIS a PWS) provozovanΘ na operaΦnφch systΘmech tΘ₧e spoleΦnosti. Od dneÜnφho Φφsla p°inßÜφme rychlokurz PHP urΦen² Φtenß°∙m, kte°φ ji₧ slyÜeli o p°ednostech a charakteristick²ch vlastnostech tohoto jazyka  a rozhodli se nauΦit nezbytnΘ zßklady pot°ebnΘ pro vytvß°enφ dynamick²ch webov²ch aplikacφ prßv∞ pomocφ zmφn∞nΘho nßstroje (p°ipome≥me, ₧e s jazykem PHP jste se mohli seznßmit v sΘrii t°φ Φlßnk∙ od Jana Stoklasy, je₧ byly v∞novßny skriptovacφm jazyk∙m pro web a kterΘ vyÜly v lo≥sk²ch Chipech 9 - 11).
  7. V tomto ·vodnφm dφle budou popsßny naprostΘ zßklady PHP - zßklady syntaxe a  °φdicφ struktury. DalÜφ dφly budou ji₧ zam∞°eny na prßci s webov²mi formulß°i a na propojenφ PHP s r∙zn²mi databßzemi.
  8. Pozn.: Nßskok budou mφt ti Φtenß°i, kte°φ n∞kdy v minulosti programovali v C/C++ (nebo v jazyce s podobnou syntaxφ),  nebo¥ - jak brzy poznßte - PHP a C/C++ majφ mnoho spoleΦnΘho.
  9.  
  10. ZaΦφnßme
  11. P°edpoklßdßm, ₧e Φtenß°i se ji₧ s HTML (Hypertext Markup Language) setkali a zpoΦßtku je bude logicky nejvφce zajφmat, jak  lze umφstit PHP skript do HTML k≤du. K tomuto ·Φelu byly navr₧eny nßsledujφcφ znaΦky. Samoz°ejm∞ je zachovßna kompatibilita se standardem SGML (Standard Generalized Markup Language), tedy se specißlnφ sekvencφ znak∙, je₧ v dokumentu odd∞lujφ p°φkazy od textu: 
  12.  
  13. <? a  ?> 
  14. <?php a ?>
  15. <script language="php'> a </script>
  16. <%  a  %>
  17.  
  18. ZaΦlen∞nφ t∞chto znaΦek je patrnΘ z nßsledujφcφho p°φkladu, ve kterΘm je pomocφ p°φkazu echo vypsßn v prohlφ₧eΦi text: Ahoj, sv∞te, zaΦφnßme! Komentß°e jsou v textu odd∞leny pomocφ dvojice znak∙ // (vÜe, co je napsßno za t∞mito znaky na danΘm °ßdku, bude pova₧ovßno za komentß°). Pro vlo₧enφ delÜφho komentß°e - vφce°ßdkovΘho - se pou₧φvß uvozujφcφ znak /* a ukonΦujφcφ znak */.
  19.  
  20. <html>
  21. <body>
  22. <?php            // zaΦßtek k≤du 
  23.   echo "Ahoj, sv∞te, zaΦφnßme!";    //v²pis textu
  24. ?>        
  25. </body>
  26. </html>
  27.  
  28. Tento soubor, pojmenujme jej nap°φklad jako "vypiÜ.php", musφme samoz°ejm∞ nejprve umφstit do adresß°e, ve kterΘm je nastavena podpora PHP skript∙.
  29. Jak ji₧ vφme, hypertextov² preprocessor PHP dynamicky vytvo°φ novou WWW strßnku, ve kterΘ p∙vodnφ PHP k≤d nahradφ po₧adovan²m HTML k≤dem. V²sledkem p°edchozφho skriptu bude nßsledujφcφ vygenerovan² k≤d:
  30.  
  31. <html>
  32. <body>
  33.  Ahoj, sv∞te, zaΦφnßme!
  34. </body>
  35. </html>
  36.  
  37. VÜe se toΦφ kolem prom∞nn²ch
  38. TΘm∞° vÜe v programovßnφ se toΦφ kolem prom∞nn²ch (prom∞nnß p°edstavuje datovou strukturu, jejφ₧ hodnota se m∙₧e v pr∙b∞hu zpracovßnφ programu dynamicky m∞nit). Pomocφ prom∞nn²ch jsou uchovßvßny hodnoty, s nimi₧ v programu/skriptu operujeme. V PHP  poznßme prom∞nnΘ velice rychle, nebo¥ vÜechny musφ obsahovat povinn² znak $, nap°φklad prom∞nnß a se ve skriptu skr²vß za $a. Na rozdφl od ji₧ zmi≥ovanΘho jazyka C provßdφ PHP spoustu prßce automaticky za nßs - nap°φklad deklarovßnφ prom∞nn²ch v tomto jazyce odpadß (deklarace je p°φkaz, kter² udßvß typ prom∞nnΘ a jejφ jmΘno). P°i prvnφm pou₧itφ se prom∞nnß nadeklaruje sama a je jφ takΘ p°i°azen urΦit² typ. 
  39. Nap°φklad p°φkaz
  40.  
  41. $a=10
  42.  
  43. p°i°adφ do prom∞nnΘ $a Φφslo 10  (znak rovnφtka "=" tedy slou₧φ k p°i°azenφ). $a bude automaticky celΘ Φφslo. 
  44. Tφmto p°φkladem jsme se dostali k prvnφmu typu,  kter²m je integer (celΘ Φφslo). DalÜφmi datov²mi  typy jsou:
  45.  
  46. floating-point numbers (desetinnΘ Φφslo)    - nap°. $b=10.25;        
  47. string (°et∞zec znak∙)    - nap°. $c="text";
  48. array (pole)        - nap°. $d[0]="abc";  //jednodimenzionßlnφ pole
  49.             - nap°. $d[0][0]="def";  //vφcedimenzionßlnφ pole (dvoj-)
  50. a object (objekt)
  51.  
  52. ╪φdicφ struktury
  53.     Vysv∞tlenφ a pochopenφ prßce s °φdicφmi strukturami je nezbytnou podmφnkou pro dalÜφ psanφ skript∙ (ve vÜech jazycφch), nebo¥ jasn∞ definujφ a °φdφ dalÜφ b∞h programu. Proto ani v tomto rychlokurzu nez∙staneme "pozadu" a popφÜeme si nejΦast∞jÜφ struktury pomocφ jednoduch²ch p°φklad∙.
  54.  
  55. P°φkazy pro v∞tvenφ programu
  56. Mezi nejpou₧φvan∞jÜφ struktury pat°φ podmφnky, pomocφ kter²ch je podle n∞jakΘ zadanΘ podmφnky urΦovßn dalÜφ b∞h (v∞tvenφ) skriptu.
  57. P°φkaz IF 
  58.  
  59. if ($aa==$bb)                    // kdy₧ je $aa rovno $bb
  60.     echo "aa je stejnΘ jako bb";        //vypiÜ- aa je stejnΘ jako bb 
  61.  
  62. Nebo forma srozumiteln∞jÜφ pro "CΘΦka°e":
  63.  
  64. if ($aa==$bb) {
  65.     echo "aa je stejnΘ jako bb";
  66.     }
  67.  
  68. Podmφnka IF ELSE
  69.  
  70. if ($aa>$bb) {                    // kdy₧ je $aa v∞tÜφ ne₧ $bb
  71.     echo "aa je v∞tÜφ ne₧ bb";        //vypiÜ- aa je v∞tÜφ ne₧ bb 
  72. } else {                        //jinak
  73.     echo "aa nenφ v∞tÜφ ne₧ bb";        //vypiÜ- aa nenφ v∞tÜφ ne₧ bb
  74. }
  75.  
  76. Podmφnka ELSEIF
  77.  
  78. if ($aa>$bb) {                    // kdy₧ je $aa v∞tÜφ ne₧ $bb
  79.     echo "aa je v∞tÜφ ne₧ bb";        // vypiÜ- aa je v∞tÜφ ne₧ bb
  80. } elseif ($aa==$bb {                // jinak kdy₧ je $aa rovno $bb
  81.     echo "aa je rovno bb";        //vypiÜ- aa je rovno bb
  82. } else {                        //jinak
  83.     echo "aa je menÜφ ne₧ bb";        //vypiÜ- aa je menÜφ ne₧ bb
  84. }
  85.  
  86.  
  87. SWITCH - PHP takΘ obsahuje p°φkaz p°epφnaΦe neboli p°φkaz pro mnohonßsobnΘ v∞tvenφ programu.
  88.  
  89. switch ($i) {                //kdy₧ $i
  90.     case 0:                // je 0
  91.         print "i rovno 0";    // vypiÜ i rovno 0
  92.         break;            //ukonΦenφ v∞tve p°epφnaΦe pomocφ p°φkazu break
  93.     case 1:                // je 1
  94.         print "i rovno 1";    // vypiÜ i rovno 1
  95.         break;            //ukonΦenφ v∞tve p°epφnaΦe pomocφ p°φkazu break
  96. }
  97.  
  98.  
  99. IteraΦnφ p°φkazy - cykly
  100.  Mnozφ programßto°i postupem Φasu narazφ na po₧adavek, kter²m je mo₧nost/nutnost opakovßnφ jistΘ Φßsti skriptu podle zadanΘ podmφnky. Pro tento ·Φel se v programovßnφ pou₧φvajφ cykly, o kter²ch si dßle povφme.
  101.  Velice Φasto pou₧φvan²m je cyklus WHILE - tento iteraΦnφ p°φkaz testuje podmφnku cyklu p°ed pr∙chodem cyklem - cyklus tedy nemusφ prob∞hnout ani jednou. 
  102.  
  103. $a=20;        //p°i°azenφ Φφsla 20 do prom∞nnΘ $a
  104. while ($a>0)        //dokud je $a v∞tÜφ ne₧ 0 pak d∞lej
  105. {
  106.     print $a;    // vypsßnφ hodnoty prom∞nnΘ $a
  107.     $a--;        //dekrementovßnφ po pou₧itφ=p∙vodnφ hodnota v²razu snφ₧ena o 1
  108.  
  109. Cyklus DO-WHILE - v tomto cyklu se podmφnka testuje a₧ po pr∙chodu cyklem - cyklus prob∞hne nejmΘn∞ jednou.
  110.  
  111. $a=20;        //p°i°azenφ Φφsla 20 do prom∞nnΘ $a
  112. do              //d∞lej (dokud $a>0)
  113. {
  114.     print $a;    // vypsßnφ hodnoty prom∞nne $a
  115.     $a--;        // dekrementovßnφ po pou₧itφ=p∙vodnφ hodnota v²razu snφ₧ena o 1
  116. } while ($a>0)    //dokud $a>0
  117.  
  118. P°φkaz FOR - typick² p°φkaz cyklu, kter² pou₧ijeme, kdy₧ znßme p°edem poΦet po₧adovan²ch pr∙chod∙ cyklem.
  119.  
  120. for ($i = 1; $i <= 10; $i++) {     // pro $i od 1 do 10 inkrementuj $i
  121.     print $i;            // vypsßnφ $i -> 12345678910    
  122. }
  123.  
  124. P°φkaz FOREACH - dalÜφ p°φkaz cyklu (jakßsi modifikace p°edchozφho cyklu), kter² op∞t pou₧ijeme v p°φpad∞, ₧e dop°edu znßme po₧adovan² poΦet pr∙chod∙ cyklem. Tento p°φkaz je v PHP zahrnut a₧ od verze 4 a umo₧≥uje nßm iterovat p°es  pole.
  125. Pozn.: Nemusφme pou₧φt p°φkaz reset(), proto₧e ukazatel je p°ed prvnφm pr∙chodem cyklu automaticky nastaven na prvnφ prvek pole.
  126.  Uve∩me p°φklad:
  127.  
  128. /* u cyklu foreach je v ka₧dΘm pr∙chodu cyklem hodnota aktußlnφho  prvku $a p°i°azena do prom∞nnΘ $v a index pole je zv²Üen o 1 */  
  129.  
  130. $a = array (1, 5, 6, 20);
  131. foreach ($a as $v) {
  132.     print "SouΦasnß hodnota z \$a: $v.\n";
  133. }
  134.  
  135. V²sledkem bude nßsledujφcφ vygenerovan² HTML k≤d (v souboru byly navφc pouze dopln∞ny HTML znaΦky, mezi n∞₧ byl skript vlo₧en):
  136. <HTML>
  137. <BODY>
  138. SouΦasnß hodnota z $a: 1.
  139. SouΦasnß hodnota z $a: 5.
  140. SouΦasnß hodnota z $a: 6.
  141. SouΦasnß hodnota z $a: 20.
  142. </BODY>
  143. </HTML>
  144.  
  145. Pozn.: Pro nßsilnΘ p°eruÜenφ vykonßvßnφ cykl∙ (for, while a switch) se pou₧φvß p°φkaz break. P°φkaz continue slou₧φ k p°eskoΦenφ zb²vajφcφch p°φkaz∙ cyklu a pro zahßjenφ dalÜφ iterace.
  146.  
  147. Funkce
  148.     Pomocφ funkcφ m∙₧eme dosßhnout opakovßnφ urΦitΘ Φßsti programu (stejnΘ sekvence p°φkaz∙), ani₧ bychom museli danou Φßst v k≤du znovu opisovat. 
  149. Nap°φklad nßsledujφcφ funkce mß dva vstupnφ parametry ($a a $b) a jejφm v²sledkem bude vrßcenφ hodnoty v∞tÜφho z parametr∙.
  150.  
  151. function Max ($a,$b)        //funkce Max se vstupnφmi parametry $a a $b
  152. {
  153.     return $a>$b ? $a : $b;    //vrßcenφ v²sledku funkce Max
  154. }
  155. Pozn.: V tomto p°φkladu jsme pou₧ili podmφn∞n² v²raz, tzv. ternßrnφ operßtor, kter² lze slovn∞ interpretovat takto: kdy₧ $a je v∞tÜφ ne₧ $b, bude vrßcena hodnota $a, jinak $b.
  156.  
  157. Volßnφ a v²pis v²sledku funkce ve skriptu m∙₧e vypadat nap°φklad takto:
  158. echo  Max(10,12);  // vypφÜe se 12
  159.  
  160. Platnost prom∞nn²ch
  161. Pokud budeme pracovat s funkcemi, postupem Φasu urΦit∞ narazφme na otßzku rozsahu platnosti prom∞nn²ch a na po₧adavek, jak zp°φstupnit globßlnφ prom∞nnou uvnit° funkce. Pro tento p°φpad se v PHP pou₧φvß p°φkaz global, kter²m danou prom∞nnou ve funkci zp°φstupnφme. Zde se PHP podstatn∞ liÜφ od jazyka C, ve kterΘm jsou globßlnφ prom∞nnΘ automaticky p°φstupnΘ uvnit° funkcφ.
  162. P°φklad funkce napsanΘ v PHP, ve kterΘ zm∞nφme hodnotu globßlnφ prom∞nnΘ:
  163.  
  164. function JmenoF()
  165. {
  166.     global $a1;        //zp°φstupn∞nφ prom∞nnΘ $a1 pomocφ p°φkazu global
  167.     $a1++;        //post-inkrementovßnφ 
  168. }
  169.  
  170. $a1=100;            // prom∞nnΘ $a1 p°i°azena hodnota 100
  171. JmenoF();            // volßnφ funkce JmenoF
  172. Print $a1;            //v²pis $a1 ==101
  173.  
  174. Zßv∞r
  175. V ·vodnφm dφle naÜeho rychlokurzu PHP jsme se seznßmili s ·vodnφmi znalostmi nutn²mi pro dalÜφ tvorbu dynamicky generovan²ch WWW strßnek pomocφ oblφbenΘho skriptovacφho jazyka - PHP. V p°φÜtφm dφle postoupφme op∞t o kr∙Φek dßle - povφme si, jak na webovΘ formulß°e.
  176.  
  177.  [  Milan Pinte    I    pinte@atlas.cz  ]
  178.  
  179.  
  180.  
  181. infotipy:
  182.  
  183. PHP.CZ
  184.  www.php.cz 
  185.  
  186. PHPBuilder.com
  187. www.phpbuilder.com
  188.  
  189. Zend / Where PHP meets eBusiness
  190. www.zend.com
  191.  
  192. PHP: php and mysql examples and resources from WeberDev.com
  193. www.weberdev.com
  194.  
  195.  
  196. Literaratura: 
  197. [1] Kosek, J.: PHP - tvorba interaktivnφch internetov²ch aplikacφ Podrobn² pr∙vodce, 1. vydßnφ, Grada Publishing, Praha 1999, 492 stran. 
  198. [2] PHP manußl - www.php.net/manual/cs
  199.  
  200.  
  201.     5/1
  202.  
  203.