221
Chapter 1 Configuring Your Installation Introduction Great website ေတြကို creat လုပ္ေပးႏိုင္တ႔ technologies ေတြက အမားႀကီးရွိပါတယ္။ အဒိထကမွ သင္ဟာ Apache/MySQL/PHP (တစ္ခါတစ္ရံ AMP လု႔သံုးႏံႈးပါတယ္) ကို ေရြးခယ္ၿ ပီးေလ႔လာၾကမွာျဖစ္ပါတယ္။ သင္႔အေနန႔ အရင္ကတည္းက မေလ႔လာဖူးတာျဖစ္ျဖစ္ နည္းနည္းပ ပါးေလ႔လာဖူးရင္ျဖစ္ျဖစ္ ဒီစာအုပ္ကို ဖတ္ရႈႏိုင္ပါတယ္။ Apache, MySQL, PHP ဆုိတ႔ ၃ ခုလံုးဟာ တစ္ပိုင္းျခင္းစီျဖစ္ျဖစ္ သံုးခုတြျဖစ္ျဖစ္ ေတာ္ေတာ္ေလးကို complex ျဖစ္ပါတယ္။ ယခုစာအုပ္ထမွာ အဒိ ၃ ခုလံုးန႔သက္ဆုိင္တ႔ အေၾကာင္းအရာအားလံုးရ႕ details ကို ေဖာ္ျပႏိုင္ဖိ႔ဆုိတာ ေတာ္ေတာ္ေလးကိမလြယ္ကူပါဘူး။ မျဖစ္ႏိုင္ပါဘူး။ ဒီစာအုပ္ရ႕ အဓိက ရည္ရြယ္ခက္က ခုနက ေျပာခ႔တ႔ AMP တစ္ခုျခင္းစီကို အေျခခံကေန နားလည္လြယ္ေအာင္ ရည္ရြယ္ၿပီးေရးထားတာပါ။ တစ္ခိ႕ေနရာေတြမွာ coding အားလံုးကို အေသးစိတ္လိုက္မရွင္းထားတာက ေရွ႕သင္ခန္းစာမွာ ရွင္းထားခ႔ၿပီးရင္ ေနာက္သင္ ခန္းစာမွာထပ္မရွင္းေတာ႔ပါဘူး။ အဓိက ရည္ရြယ္ခက္ကို focus လုပ္ေနတာကေန ေသြဖီသြားမွာစိုးလိ႔ပါ။ နာက္တစ္ခုက ဒီစာအုပ္ကို ဖတ္မယ္ဆုိရင္ စာဖတ္သူဟာ HTML, CSS ကို နားလည္ ထားသူ သိ႔မဟုတ္ တီးမိေခါက္မိရွိထားသူျဖစ္ဖု႔လိုပါတယ္။ HTML န႔ CSS န႔ပါတ္သတ္တာေတြကို လံုး၀ ထည့္မရွင္းထားပါဘူး။ တစ္ျခား ေနာက္ထပ္ Program တစ္ခုခုကို လည္း သင္ မသိထားရင္ ရပါတယ္။ သိထားတ႔သူေတြကေတာ႔ programming concept ရတာေပါ႔။ ဆိုလိုတာကေတာ႔ APACHE/MySQL/ PHP newbie ေတြအတြက္ ရည္ရြယ္ပါတယ္။ တကယ္လိ႔မား ကၽြန္ေတာ္ intermediate level အတြက္ စာအုပ္ ထုတ္ျဖစ္ခ႔မယ္ဆုိရင္ အဒိစာအုပ္မွာ ေအာက္ပါအခန္းမား ပါ၀င္လာမွာျဖစ္ပါတယ္ - 1. Image upload 2. Create thumbnails 3. Handling and avoiding errors 4. Validating user input အခု စာအုပ္မွာ အဓိက ပါတာေတြကေတာ႔ PHP ကို စတင္ဖု႔အတြက္ မိမိစက္ထမွာ web serv- er တစ္ခု တည္ေဆာက္တာန႔ ကန္တ႔အပိုင္းကေတာ႔ PHP/MySQL အဓိက ျဖစ္ပါတယ္။ အခုစာအုပ္ကိသင္က ဆံုးခန္းတုိင္ေအာင္ ဖတ္ၿပီးၿပီဆုိပါက သင္႔အေနျဖင္႔ movie review dynamic website တစ္ခုကို အေျခခံကက ဖန္တီးႏိုင္မွာျဖစ္ပါတယ္။ ဘာေတြပါလဆုိရင္ movie name ေတြပါမယ္။ အဒိ movie တစ္ခုျခင္းစီရ႕ details ေတြပါမယ္။ user ေတြရ႕ comments ေတြပါမယ္။ အဒိ comments တြန႔အတူ movie ratings ေတြပါ ၾကယ္ေလးေတြန႔ ျပတတ္လာမယ္။ ၿပီးရင္ ေနာက္ထပ္ movie အသစ္ေတြ ထပ္ေပါင္းထည့္ႏိုင္မယ္။ ရွိၿပီးသားဟာေတြကို Edit လုပ္ႏိုင္မယ္။ delete လုပ္ႏိုင္မယ္။ အဒါေတြ အားလံုးအတြက္ concepts ေတြကို ေသခာရွင္းျပထားပါတယ္။ တစ္ခိ႕ေနရာေတြမွာ screen

Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

Embed Size (px)

Citation preview

Page 1: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

Chapter 1Configuring Your Installation

Introduction Great website ေတြက creat လပေပးႏငတ႔ technologies ေတြက အမားႀကးရပါတယ။ အဒထကမ သငဟာ Apache/MySQL/PHP (တစခါတစရ AMP လ႔သးႏႈးပါတယ) က ေရြးခယၿပးေလ႔လာၾကမာျဖစပါတယ။ သင႔အေနန႔ အရငကတညးက မေလ႔လာဖးတာျဖစျဖစ နညးနညးပါးပါးေလ႔လာဖးရငျဖစျဖစ ဒစာအပက ဖတရႈႏငပါတယ။ Apache, MySQL, PHP ဆတ႔ ၃ ခလးဟာ တစပငးျခငးစျဖစျဖစ သးခတြျဖစျဖစ ေတာေတာေလးက complex ျဖစပါတယ။ ယခစာအပထမာ အဒ ၃ ခလးန႔သကဆငတ႔ အေၾကာငးအရာအားလးရ႕ details က ေဖာျပႏငဖ႔ဆတာ ေတာေတာေလးက မလြယကပါဘး။ မျဖစႏငပါဘး။ ဒစာအပရ႕ အဓက ရညရြယခကက ခနက ေျပာခ႔တ႔ AMP တစချခငးစက အေျခခကေန နားလညလြယေအာင ရညရြယၿပးေရးထားတာပါ။ တစခ႕ေနရာေတြမာ coding အားလးက အေသးစတလကမရငးထားတာက ေရ႕သငခနးစာမာ ရငးထားခ႔ၿပးရင ေနာကသငခနးစာမာထပမရငးေတာ႔ပါဘး။ အဓက ရညရြယခကက focus လပေနတာကေန ေသြဖသြားမာစးလ႔ပါ။ ေနာကတစခက ဒစာအပက ဖတမယဆရင စာဖတသဟာ HTML, CSS က နားလည ထားသ သ႔မဟတ တးမေခါကမရထားသျဖစဖ႔လပါတယ။ HTML န႔ CSS န႔ပါတသတတာေတြက လး၀ ထညမရငးထားပါဘး။ တစျခား ေနာကထပ Program တစခခက လညး သင မသထားရင ရပါတယ။ သထားတ႔သေတြကေတာ႔ programming concept ရတာေပါ႔။ ဆလတာကေတာ႔ APACHE/MySQL/PHP newbie ေတြအတြက ရညရြယပါတယ။ တကယလ႔မား ကၽြနေတာ intermediate level အတြက စာအပ ထတျဖစခ႔မယဆရင အဒစာအပမာ ေအာကပါအခနးမား ပါ၀ငလာမာျဖစပါတယ - 1. Image upload 2. Create thumbnails 3. Handling and avoiding errors 4. Validating user input အခ စာအပမာ အဓက ပါတာေတြကေတာ႔ PHP က စတငဖ႔အတြက မမစကထမာ web serv-er တစခ တညေဆာကတာန႔ ကနတ႔အပငးကေတာ႔ PHP/MySQL အဓက ျဖစပါတယ။ အခစာအပက သငက ဆးခနးတငေအာင ဖတၿပးၿပဆပါက သင႔အေနျဖင႔ movie review dynamic website တစခက အေျခခကက ဖနတးႏငမာျဖစပါတယ။ ဘာေတြပါလဆရင movie name ေတြပါမယ။ အဒ movie တစချခငးစရ႕ details ေတြပါမယ။ user ေတြရ႕ comments ေတြပါမယ။ အဒ comments ေတြန႔အတ movie ratings ေတြပါ ၾကယေလးေတြန႔ ျပတတလာမယ။ ၿပးရင ေနာကထပ movie အသစေတြ ထပေပါငးထညႏငမယ။ ရၿပးသားဟာေတြက Edit လပႏငမယ။ delete လပႏငမယ။ အဒါေတြ အားလးအတြက concepts ေတြက ေသခာရငးျပထားပါတယ။ တစခ႕ေနရာေတြမာ screen

Page 2: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;2

rZÑdr pmay

shot န႔ ျပပါတယ။

Requirements ခ သငခနးစာအတြက လအပတာေတြကေတာ႔ ၁။ Browser ၂။ Text editor ( ကၽြနေတာကေတာ႔ notepad++ သးပါတယ) ၃။ Wamp server ၄။ developer tools bar (firefox addon) တ႔ျဖစပါတယ။ အဒါေတြ အားလးက ဒစာအပန႔အတ ပါလာမယ႔ CD ခပထကေန ရႏငပါတယ။

Wamp server installation ပထမဆး CD ထက WampServer2.0c ဆတ႔ .exe file က double click လပပါ။

Yes က ႏပပါ။

Page 3: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

3udkausmf

rZÑdr pmay

Next က ႏပပါ။

Page 4: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;4

rZÑdr pmay

default အေနန႔ c ေအာကမာ wamp ဆတ႔ folder နာမညန႔ install လပမာပါ။ Next ကဘ ႏပပါ။ ေနာကတစခါ Quick launch တ႔ဘာတ႔ေရြးခငးရငလညး ႏစသကသလ ေရြးၿပး Next လပပါ။

ၿပးရငေတာ႔ Install က ႏပပါ။ ဒါဆရင သ႔ဟာသ install လပေနပါလမ႔မယ။ ၿပးသြားရင default browser ေရြးခငးပါလမ႔မယ။ ကၽြနေတာကေတာ႔ firefox ကဘေရြးခ႔ပါတယ။ ေနာကတစဆင႔အေနန႔ mail parameters က ေရြးခငးပါတယ။

ေလာေလာဆယ ဒအတငးထားၿပး Next ကဘ ႏပပါတယ။ၿပးသြားရငေတာ႔ Finish က ႏပလကပါ။ ဒါဆရင task bar မာ ေအာကပါအတငးေပၚေနပါလမ႔မယ။

Page 5: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

5udkausmf

rZÑdr pmay

အဒ ျမားျပထားတ႔ icon ေပၚမာ left click ႏပၿပးေတာ႔ put online က ကလစလကပါ။

အဒါၿပးရင wamp server icon ေလးဟာ ေအာကပါပအတငးေျပာငးသြားပါလမ႔မယ။

Page 6: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;6

rZÑdr pmay

အားလးၿပးသြားၿပဆရင သင႔အေနန႔ wamp server က ေအာငျမငစြာ install လပၿပးသြားပါၿပ။ သင ယချပလပလကတ႔ ဆာဗာထမာ PHP 5.2.6 , Apache 2.2.8 , MySQL 5.0.51b တ႔ ကလညး install လပၿပးသား ျဖစသြားပါမည။

Starting with browser

firefox browser မာ localhost or 127.0.0.1 လ႔ ရကထညလကပါက ေအာကပါအတငး တကလာရပါမည။ဒါမမဟတလညး wamp server icon အေပၚမာ left click လပၿပး localhost က click လပရငလညး တကပါတယ။

Page 7: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

7udkausmf

rZÑdr pmay

Your projects ဆတ႔ေနရာမာ ခေလာေလာဆယ ေအာကပါအတငးျမငရမာျဖစပါတယ။No projects yet.To create a new one, just create a directory in ‘www’.

ကၽြနေတာတ႔လပသမ projects အားလးသည c:\wamp\www ဆေသာ folder ေအာကတြငသာ ျပလပရမည ျဖစပါသည။ ေနာကထပ phpMyAdmin က ေခၚလလင wamp server icon ေပၚမ phpMyAdmin က click လပၿပး ေခၚႏငပါသည။ Default Database username မာ root ျဖစၿပး password မာ blank ျဖစပါသည။ ယခစာအပတြင Default အတငးသာ သးသြားမညျဖစပါသည။

Page 8: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;8

rZÑdr pmay

How to use Notepad++

Notepad++ က install လပၿပးၿပဆပါက text document တစခေပၚတြင right click လပၾကညပါက Edit with Notepad++ ဆေသာ စာတမးကေတြ႕ျမငရမညျဖစပါသည။

သငက php page တစခက စတငၿပး create လပလပါက www folder ထတြင text docu-ment တစခ လပလကပါ။ ၿပးရငအဒ text document ေပၚက right click လပၿပးေတာ႔ Edit with Notepad++ လပလကပါ။ ဒလဆရင notepad++ program တကလာပါမယ။ တကလာတ႔အခါမာ Language မာ PHP က ေရြးေပးပါ။ ၿပးရငsave as လပၿပးေတာ႔ နာမညတစခန႔ သမးလကရင php file တစခက ရလာမာျဖစပါတယ။ default အေနန႔ PHP ရ႕ open and close tag ေတြက အနန႔ ေဖာျပၿပး comment ေတြက အစမးန႔ျပပါတယ။ ျပငခငတယဆရငေတာ႔ settings/style configura-tor မာ ျပငလ႔ရပါတယ။

Page 9: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

9udkausmf

rZÑdr pmay

Chapter (2)Creating PHP pages using PHP

ဒအခနးမာေတာ႔ PHP ရ႕ အေျခခအခကေလးမားက ေျပာသြားမာျဖစၿပး တစခနတညး မာဘ ေျပာသြားတ႔အခကေလးေတြန႔ web တစခက အဆင႔ဆင႔ တညေဆာကသြားမာျဖစပါတယ။ အားလးၿပးသြားတ႔အခါမာ Movie review ေတြရယ ၊ ဒ web က လာတ႔ လေတြရ႕ comment ေတြရယ movie details ေတြက MySQL န႔ တြၿပး ျပႏငမာျဖစပါတယ။ အေသးစား dynam-ic web page တစခ တညေဆာကတယလ႔ မတယလ႔ရပါတယ။ သင႔အေနန႔ PHP program က ဒအတငး သအရ ခညး သကသကေလ႔လာ ေနရင ပငးမာစးပါတယ။ ကယ သထားသေလာကက ဘယေလာကထ ေရးလ႔ရသလ ဘယေလာကထ ဖနတးလ႔ရသလဆတာက သထားဖ႔လပါတယ။ ခ အေျခခအခကေလးေတြန႔ တင သင ထငမတမထားေလာကေအာင လပႏငမာက ေတြ႕ရရမာပါ။ ကၽြနေတာဟာ ဒစာအပန႔ အတ CD တစခပ တြထညေပးထားၿပးေတာ႔ အဒ CD ထမာ Exercise fi les ေတြပါတယ။ အႀကျပလတာကေတာ႔ အဒ CD ထက ဖငေတြက တတႏငသမ နားလညေအာငၾကညပါ။ copy paste လပၿပး သငမေလ႔ကင႔ပါန႔။ Programming ဆတာမးကလညး တစခါေရးနားမလည ႏစခါေရး ရင ရးသြားတာမးမဟတပါဘး။ ထပခါထပခါေရးေလ ပ နားလညေလ ျဖစေစတာပါ။

PHP က အျခား language ေတြျဖစတ႔ HTML တ႔လ text editor န႔ ေရးလ႔ရပါတယ။ ဒါေပမယ႔ HTML န႔ မတတာက PHP မာက .php ဆတ႔ extension န႔ အဆး သတတာျဖစၿပး Web စာမကႏာ ေပၚတာေတြက HTML ေတြျဖစတယဆတာ မတထားဖ႔လပါတယ။

How PHP fi ts with HTML

The Rules of PHP syntax PHP က စေရးၿပဆရင ထပဆးမာ <?php န႔ စၿပးေတာ႔ ေနာကဆးမာ ?> အဆးသတရပါတယ။ ေယဘယအားျဖင႔ PHP statement ေတြရ႕အဆးက semicolon(;)န႔ အဆး သတေပးရပါတယ။ ေအာကက ဥပမာက ၾကညပါ။

Page 10: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;10

rZÑdr pmay

<?php $num = 1+2; echo $num; ?> ကယေရးေနတ႔ ပရဂရမဟာ တျဖညးျဖညးရည လာၿပးရႈပေထြးမႈရလာရင ေနာကတစခါ ျပနၾကညတ႔အခါ ကယေရးထားတ႔ဟာက ကယ႔ဟာက ျပနမမတမ ျဖစေနတတပါတယ။ ဒါေၾကာင႔ စတငေရးၿပဆကတညးက ဘယ အေၾကာငးအရာ က ဘာေၾကာင႔ေရးထားတယဆတာက ပရဂရမထမာ ထညေရးထားဖ႔ အၾကျပလပါတယ။ ဒါက Comment ေရးတယလ႔လေခၚပါတယ။ Com-ment ေရးရင တစေၾကာငးတညးဆရင double forward slashes (//) က အသး ျပၿပးေရးရပါတယ။ ဥပမာ- <?php // Adding number $num = 1+2; echo $num; ?> ဒလ ေရးတ႔အခါမာ comments ေတြက ပရဂရမက ထည မ run ပါဘး။ တကယလ႔ ကယမတထားတာက ငါးေၾကာငး ေလာကျဖစသြားမယဆရင /* com-ment */ က သးလ႔ရပါတယ။ ဒါေတြက မတထားရငရပါၿပ။ က... အခ ဆရင သငဟာ PHP က ဘယလ စေရးရမယဆတာ သၿပးသြားၿပမဟတလား။ သပမခကပါဘး။

The importance of coding pratices သငဟာ ပရဂရမ တစခ စေရးေတာ႔မယဆရင Code structure ေတြက အ ရ င ဆးေ လ ႔ လာ သ င ႔ ပ ါ တ ယ ။ သ ငေ ရး လ က တ ႔ C o d eေ တ ြ ဟာ B r o w s e rေ ပ ၚ မ ာေကာငးမြနစြာအလပလပေနသမ သင႔ရ႕ code structure က သပဂရစကစရာမလပါဘး ။ တကယလ႔ အသညလမဟတေတာ႔ဘ တစခခ error ျပ ေနၿပဆရင Code error က ရာရေတာ႔မယ ။ အဒအခါမာစေရးကတညးက ရႈပေထြးေနေအာငေရးခ႔မယဆရင အလြယတက ရာဖ႔ ခကခမာပါ။ ေအာကက နမနာပစကၾကညၾကညပါ။

Page 11: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

11udkausmf

rZÑdr pmay

Example(2) ကၾကညလကရင ပရညတယထငေပမယ႔ တကယတမးၾကေတာ႔ syntax err-ror or other troubleshooting လပတ႔အခါမာ ပမျမနဆနစြာလပႏငပါတယ။ ဒါဟာ ပရဂရမက ခမ စေရးမယ႔ သေတြအတြကတကယ႔က အေရးႀကးပါတယ။ ၾကသလေရးလကရင အကင႔ႀကးပါသြားတတပါတယ။Example (1) < ?php //check to make sure the fi rst name is equal to MgMg before granting ac-cess if ($_POST['fname'] == 'MgMg') { echo '<p> Hi '. $_POST['fname'] . '</p>'; } else { echo '<p> Your name isn\'t MgMg so you cannot enter the web site. </p> '; } ?>Example(2) < ?php //check to make sure the fi rst name is equal to Joe before granting access if ($_POST['fname'] == 'Joe') { echo '<p>'; echo 'Hi'; echo $_POST['fname']; echo '</p>'; } else { echo '<p>'; echo 'Your name\'s not MgMg so you cannot enter the web site!'; echo '</p>';

Page 12: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;12

rZÑdr pmay

Creating your first program Using (echo) 1. ေအာကမာ ျပထားတ႔ ကဒေတြက notepad++ ထ ကးထညၿပး firstprog.php ဆၿပး Save လပပါ။ <html> <head> <title>My first Program</title> </head> <body> <?php echo "I'm a KoKo.And I'm OK."; ?> </body> </html>OK . အဒ firstprog.php ဆတ႔ ဖငက web browser ကေန ၾကညၾကညရင ေအာကကပအတငး ျမငရပါမယ။

Page 13: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

13udkausmf

rZÑdr pmay

က အခ ေနာကထပ တစေၾကာငးေလာက ထပေပါငး ေရးၾကညရေအာင။ ထပေပါငးေရးတ႔ စာေၾကာငးက Highlight လပေပးထားပါတယ။ <html> <head> <title>My first Program</title> </head> <body> <?php echo "I'm a KoKo."; echo 'And I\'m OK.'; ?> </body> </html>

File က save လပၿပးေတာ႔ Browser ကေန ျပနၾကညၾကညပါ။ ေအာကပါ ပအတငး ျမငရပါလမ႔မယ။

Page 14: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;14

rZÑdr pmay

How it works? Browser ကေန PHP program က call လပလကရင အရငဆး PHP code ေတြက line by line ရာပါတယ။ ဆလတာက <?php ?> ၾကားက ကဒေတြက ရာတာေပါ႔။ တစခနတညးမာဘ အဒ code ေတြက process လပပါတယ။ ဆာဗာက PHP code ေတြဟာ တစေၾကာငးတညး ပစန႔ သြားတာပါ။ ဆာဗာဆကPHP code ေတြဟာ မနမနကနကနေရာကသြားၿပဆရင ကနတ႔ HTML code ေတြက browser ဆပ႔ေပးပါတယ။ တစခါတညး php sections ေတြပါ ပ႔ေပးတာပါ။ အထကက ပရဂရမ မာ Coding ပငးမာ သတထားမမယဆရင single quotation marks (') ေလးက သတထားမမာပါ။ Text string ေတြက ေဖာျပရာမာ single quotation mark(') န႔ double quotation mark(") က လအပခကေပၚမတညၿပး သးသြားရမာပါ။ ေနာကပငး သငခနးစာေတြမာ ပရဂရမ ေရးရငး ေရးရငး ပမေလ႔လာႏငပါတယ။ ေအာကက နမနာ ပစေလးက ၾကညၾကညပါ။

echo " I'm a KoKo"; အဒဟာက output အေနန႔ ထတလကရင I'm a KoKo ဆၿပး ရလာမာပါ။ ဘာျဖစလ႔လဆေတာ႔ text string ရ႕ အစန႔ အဆး က " န႔ ခၿပး သးထားလ႔ပါ။ double quotaion mark (") ႏစခၾကားမာ ရတ႔ဟာက String ေတြျဖစတယဆတာ PHP က သ႔အလလ သပါတယ။ ေအာကက နမနာကလညး ၾကညပါဥး။

echo 'I'm a KoKo'; အဒ လငးက Output ထတလကရင Error message ရလာမာပါ။ ဘာျဖစလ႔လဆေတာ႔ String value က ဘယက စမနး PHP က မသေတာ႔ပါဘး။ I'm က ' က စတာလား ။ ဒါမမဟတ 'I က စတာလားဆတာ Confused ျဖစသြားပါၿပ။ အဒလဘ double quotation mark န႔ စေပမယ႔ အလားတ Problem မး ေတြလညးျဖစႏငပါတယ။ ေအာကက နမနာေလးက ေလ႔လာၾကညပါ။ echo "I'm a KoKo . "Hello world""; အဒေတာ႔ လအပသလ ေပၚဖ႔ single quotation mark(') and double quotation

Page 15: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

15udkausmf

rZÑdr pmay

mark (") ေတြက လအပသလ အသးျပရမာပါ။ အထကပါ code က မနမနကနကန Run ဖ႔ ေအာကပါအတငး ေရးရင ရပါတယ။ echo"I'm a KoKo . \"Hello world\""; \ သးထားတာက သတျပမမာပါ။ ဘာအတြက သးတာလဆရင ဒမာက Hello world ရ႕ေရ႕န႔ေနာကက (") က plain character အျဖစ ယလတ႔အတြကဘျဖစပါတယ။ အခေန ရႈပေနမယဆတာ သပါတယ။ ေနာက အခနးေတြ ေရာကလာရင ခ ေလ႔ကင႔ခနးေတြက ထမငးစားေရေသာက တာထကက ပမ လြယက သြားေစမယဆတာ အာမခပါတယ။

Integrating HTML with PHPေအာကမာ ျပထားတ႔ နမနာေလးေတြက ၾကညလကရင HTML က PHP ထ ထညသးရတာ

ဘယေလာက လြယကၿပး လပ တယဆတာ ကယတင လပၾကညလကပါ။

<html> <head> <title>My first Program</title> </head> <body> <?php echo " <h1>I'm a KoKo.</h1>"; echo "<h2>I'm a KoKo . \"Hello world\"</h2>"; ?> </body> </html>Considerations with HTML inside PHP

HTML က PHP ထမာ ထညသးေတာ႔မယဆရင ေအာကမာ ျပထားတ႔အခကေတြက ေသခာေလး ဂရစကေစခငပါတယ။ ၁။ double quotation mark ေတြက သးရာမာ ဂရစကပါ။ back slash (\) ခၿပးသးပါ။ ဥပမာ- echo "<p style=\"font-size:80%;\">";

၂။ HTML န႔သးမယဆရင single quotation mark က အမားဆးသးသင႔ပါတယ။

Page 16: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;16

rZÑdr pmay

ဥပမာ echo '<p style="font-size:80%;">'; ၃။ PHP code ေတြထက HTML code ေတြ တအားမားေနၿပဆရင သတထားပါ။ code ေတြေရာေထြးၿပး ရႈပေထြး ေနတတပါတယ။ အဒအခါမာ ကယ႔ရ႕ HTML code ေတြက Strictly ျဖစေအာင ျပနစဥးစားၿပး ျပနေရးပါ။ ေအာကက ဥပမာ ၂ ခက ႏႈငးယဥၾကညရင သႏငပါတယ။Example(1)<?php echo ' <table style="font-family: Arial,sans-serif; font-size: 80%; '; echo 'width: 100%;">'; echo ' <tr> '; echo ' <td style="width: 50%;">'; echo 'First Name:'; echo ' </td > '; echo ' <td style="width: 50%">'; echo $_POST['fname']; echo ' </td > '; echo ' </tr > '; echo ' </table > '; ?>

Example(2)<table style="font-family: Arial,sans-serif; font-size: 80%; width: 100%;"> <tr> <td style="width: 50%;"> First Name: </td > <td style="width: 50%" > <?php echo $_POST['fname'];?> </td> </tr> </table>

Page 17: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

17udkausmf

rZÑdr pmay

အထကက ဥပမာ ၂ ခက ယဥၾကညမယဆရင အဓက ရညရြယခကက $_POST['fname'] ဆတ႔ ဟာက ထတေပးဖ႔ဘျဖစတယဆတာ ေတြ႕ရမယ။ ဒလပစမးမာ HTML code အားလးက PHP ပစ ထ ထညေရးမယ႔အစား(Example 1လ) Example 2 လ HTML ထမာ လအပတ႔ PHP code ကဘ ထညေရးရင ပၿပးရးရငးပါတယ။ ဆာဗာ အတြကကေတာ႔ အထကက Example ၂ ခထက ၾကကတ႔ဟာန႔ ေရး ။ အေရးမႀကးဘး။ ပရဂရမမာေတြအတြကဘကယေရးလကတ႔ဟာ For-mat ကက ေရးခငတယ၊ debugging လပဖ႔ လြယလြယျဖစခငတယဆရင example 2 လေရးဖ႔ အၾကျပလပါတယ။

Using Constants and Variables to add Functionality

ခဆရင echo function ဘယလ အလပလပသလဆတာ နားလညသြားၿပလ႔ယဆပါတယ။ echo function ဟာ HTML န႔ တတပါဘ။ ခ ရငးျပမယ႔ Constants and Variables ေတြက ထညသး အသးျပတတမ တကယ႔ True power of PHP က ရရမာျဖစပါတယ။

Overview of constants Constant ဆတ႔ သေဘာတရားက ေကာငးသားတငး သၾကမာပါ။ သ႔က အသးျပမယဆရင (၁) မသးခငမာ သ႕ရ႕ တနဖးက ႀကတငသတမတဖ႔လပါတယ။ (၂) Constant ေတြက နာမညေပးတ႔အခါမာ အစစာလးေတြက letter (A to Z, a to z) or _(underscore) န႔စရပါတယ။ (၃) Constant နာမညေတြက Number န႔ စလ႔ မရပါဘး။ (၄) Constant ေတြဟာ case- sensitive ျဖစပါတယ။ သသာထငရားေအာင စာလး အႀကးေတြန႔ ေရးေလ႔ရပါတယ။ (၅) Constant ေတြက PHP function တစချဖစတ႔ defi ne() န႔ သတမတၿပးေတာ႔ သတမတၿပးသြားရင သ႔က ျပနေျပာငးလ႔မရပါဘး နမနာေလး ေလ႔ကင႔ၾကညရေအာင။ ေအာကမာ ျပထားတ႔ code ေတြအတငး text editor ထ ရကထညပါ။

Page 18: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;18

rZÑdr pmay

<html> <head> <title> My Movie Site </title> </head> <body> <?php define ('FAVMOVIE', 'ThaGyanMoe'); echo 'My favorite movie is '; echo FAVMOVIE; ?> </body> </html > အဒ ပရဂရမေလးက ေလ႔လာမယဆရင FAVMOVIE ဆတ႔ constant က သတမတၿပး သ႔ရ႕ တနဖးက ThaGyanMoe လ႔ ထားလကတာပါ။ အဒေတာ႔ ဘယလျဖစသြားမလဆရင define('name','value') ျဖစသြားတာပါ။ ေအာကက ပအတငး Result ထြကလာပါမယ။

Page 19: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

19udkausmf

rZÑdr pmay

Overview of Variables

Constant ရ႕ ေျပာငးျပနက Variable ေပါ႔ ။ Variable ေတြရ႕ တနဖးဟာ ေျပာငးႏငတယ။ Variable ေတြက သးဖ႔ defi ne သတမတေပးစရာမလသလ declare လပဖ႔လညး မလပါဘး။ Vari-able ေတြဟာ ဘာန႔ တသလဆရင information ေတြက သမးထားတ႔ container တစခပါဘ။ လတ႔ေနရာကေန ေခၚသးႏငတယ။ ၿပးေတာ႔ အဒ information ကလညး ထပေျပာငးႏငတယ။ Vari-able ေတြက ေရးေတာ႔မယဆရင (၁) $ န႔ စရမယ။ (၂) Variable ေတြဟာ case-sensitive ျဖစပါတယ။ ($dateEntered န႔ $Dateentered) တ႔ရ႕ တနဖးဟာ မတပါဘး (၃) Variable name ေတြရ႕ အစဟာလညး letter(A to Z, a to z) or _ (underscore) ျဖစရပါမယ။ (၄) Variable name ေတြရ႕ အစဟာ number မျဖစရပါဘး (0-9)။

Using Variables

ခနက moviesite.php က အနညးငယ ျပငေရးၾကညပါမယ။ Variables ေလး ထညသးၾကညမာေပါ႔။ ျပငထားတ႔ စာေၾကာငးေတြက Highlight ျပထားပါတယ။ <html> <head> <title> My Movie Site </title> </head> <body> <?php define ('FAVMOVIE', 'ThaGyanMoe'); echo 'My favorite movie is '; echo FAVMOVIE; echo '<br/>'; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html >

Page 20: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;20

rZÑdr pmay

How it works ပထမဆး $movierate ဆတ႔ variable ရ႕ တနဖးက 5 လ႔ သတမတလကပါတယ။ Num-ber ေတြက တနဖးသတမတ ရင single quotation mark or double quotation mark မလပါဘး။ တကယလ႔ သငဟာ ေအာကပါအတငး ေရးမယဆရင movierate တနဖးဟာ ဂဏနး 5 မဟတဘ Character 5 ျဖစသြားမာပါ။ $movierate='5';ဒေတာ႔ တနဖးေတြက သတမတရင integer သတမတၿပး ထားရင ေနာကပငး mathematical calcu-lation လပရင ပမလြယကပါလမ႔မယ။ ေအာကမာ ျပထားတ႔ နမနာက ၾကညလကရင သသာပါတယ။ <?php $mamamovierate = 5; $nyinyimovierate = 7; $fathermovierate = 2; $mothermovierate = 1; $avgmovierate = (($mamamovierate + $nyinyimovierate + $fathermovierate+ $mothermovierate) / 4); echo 'The average movie rating for this movie is: '; echo $avgmovierate; ?>

Page 21: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

21udkausmf

rZÑdr pmay

ဒပရဂရမေလးက ေလ႔လာၾကညရင ရးရးရငးရငးေလးပါဘ။ သခၤာ ေဖာျမလာအတငး စစေပါငးက အေရအတြက န႔ စားလကရင average value က ရတာဘေလ ။ မဟတဘးလား။ တစခ သတထားရမာက () ေတြက ေရးရငျဖစပါတယ။ ( ဖြင႔ၿပးရင ျပနပတ ) ရပါတယ။ + -*/ ေတြပါလာၿပဆေတာ႔ ဒအေၾကာငးက ေနာကပငးမာ ဆကရငးျပပါမယ။ ခ PHP ထမာ ပါတ႔ built-in mathematical functions ေတြက နညးနညးေလာက တးေခါက ၾကညရေအာင။ rand([$min , $max]) : Returns a random number. ceil($value) : Returns the next highest integer by rounding the value up-wards. fl oor($value) : Returns the next lowest integer by rounding the value down-wards. number_format($number[,$decimal_places[,$decimal_point, $thousands_sep]])

ေအာကမာ ျပထားတ႔ နမေလးန႔ ယဥတြ ေလ႔လာၾကညပါ။ ၿပးရင ကယ႔ဟာက တစျခား တနဖးေတြက ေရးၿပး ေလ႔ကင႔ပါ။ Pratice makes perfect တ႔။

rand([$min , $max]) : Returns a random number. ceil($value) : Returns the next highest integer by rounding the value up-wards. fl oor($value) : Returns the next lowest integer by rounding the value down-wards. number_format($number[,$decimal_places[,$decimal_point, $thousands_sep]])

$price = 12345.67 number_format($price); // returns 12,345.67 number_format($price,2,'.',''); // returns 12345.67

Page 22: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;22

rZÑdr pmay

အခက အျမညးေလးေကၽြးထားတ႔သေဘာပါဘ။ ေနာကပငးမာ လကေတြ႕ေလ႔ကင႔ခနးေတြလပရငးန႔ ပၿပး နားလည လာပါမယ။ သကဆငရာ ေနရာေရာကရင အေသးစတရငးျပမာပါ။

Passing variables between pages

တကယလ႔ သင႔ရ႕ website ထက user ေတြက ၀ငခြင႔ေပးမယဆရင login form လလာၿပေပါ႔။ Login လပၿပးသြားရင သင႔အေနန႔ ၀ငလာတ႔ user က ႏႈတဆကခငတယ။ အဒ ႏႈတဆကစာကလညး user က ဘယ စာမကႏာကဘ သြားသြား ေပၚေနေစခငတယဆရင ေပၚေစခငတ႔ ဟာက vari-able တစခ သတမတၿပး အဒ variable က စာမကႏာတစခကေန ေနာကတစခက passing လပဖ႔ လပရမာဘျဖစတယ။ အဒလ pass လပဖ႔ အေျခခ အားျဖင႔ေပါ႔ ၄ မးရပါတယ။ (1) Pass the variables in URL (2) Through a session (3) Via a cookie (4) with an HTML form အဒ ထက ဘယဟာက သးမယဆတာေတာ႔ ကယ ျပလပတ႔ site ရ႕ လအပခကေပၚမာမတညၿပးဘ ဆး ျဖတၾကပါတယ။

Passing Variables through a URL ဥပမာေပါ႔ဗာ -

http://www.mydomain.com/news/articles/showart.php?id=12345

သက variables က URL ထကေန ျဖတၿပးေဖာျပတာပါ။ showart.php က ေခၚလကရင ar-ticles ထက id နပါတ 12345 က ေခၚတငလကတာပါ။ အဒလ variable ေတြက URL ထမာ ေဖာျပတ႔အခါမာ ႏစခ က တစျပငတညး လပခငရင ampersand(&) သေကၤတက သးၿပး ႏစခက ေပါငးၿပး ေဖာျပလ႔ရတယ။ ဥပမာ- http://www.mydomain.com/news/articles/showart.php?id=12345&lang=en

Page 23: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

23udkausmf

rZÑdr pmay

သ႔ရ႕ သေဘာတရားကေတာ႔ id နပါတ 12345 ျဖစရမယ႔ အျပင language ကလညး en ဆတ႔ english ျဖစရမယေပါ႔ဗာ။ ခကေတာ႔ ဒလ လပလ႔ရတယဆတာဘ မတထားဥးေနာ။ ကယက ခမ စေလ႔လာတာဆေတာ႔ အေျခခေလာကေတြဘ ေလ႔လာေနတာေလ။ ဒလ variable ေတြက URL ထမာ ေဖာျပတ႔ နညးက တကယတမး ေတာ႔ Security အပငးက စဥးစားရင တအားက အားနညးပါတယ။ sensitive ျဖစတ႔ information ေတြက ခလသာ ျပေပးေနရင Security အတြက ဘယလလပ စတခႏငရေတာ႔မာလ။ သ႕ရ႕ အားနညးခကေလးေတြက ေလ႔လာၾကညရေအာင။

၁။ ယဇာအားလးက သငသးထားတ႔ variables ေတြက ျမငရမယ။ ၂။ ယဇာေတြဟာ URL ထက variable ေတြက ေျပာငးၿပးေတာ႔ တစျခား နညးလမးေတြန႔ သင မျပခငတ႔ information ေတြက ယႏငတယ ။

ဘာဘျဖစျဖစေပါ႔။ security ပငး အားနညးတယဆေပမယ႔ တစျခား သးလ႔ရတ႔ ေနရာေလးေတြလညး ရေသးတယေလ။ ခလမး variable ေတြက PASS လပဖ႔ PHP မာ ရပါတယ။ $_GET array ျဖစပါတယ။ URL မာ ေပၚမယ႔ variable name က key အျဖစ ယလကမာပါ။ URL မာ variable က id ျဖစတယဆရင $_GET['id'] ျဖစၿပးေတာ႔ ေနာက variable က lang ဆရင $_GET['lang'] ေပါ႔။ ဒါဆရင ေလ႔ကင႔ခနး နမနာေလး လပၾကညရ ေအာင ။ ခနက ေရးခ႔တ႔ moviesite.php က နညးနညးေလး ျပငေရးမယဗာ။

<html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body > <?php //delete this line:define('FAVMOVIE', 'TheLifeof Brian'); echo 'My favorite movie is ';

Page 24: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;24

rZÑdr pmay

echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html>ျပငၿပးသြားၿပလား။ OK. ဒါဆရင ေနာကထပ document အသစတစခေရးမယ။ text editor မာ new pageေခၚၿပးေတာ႔ ေအာကပါအတငး ေရးပါ။ ၿပးရင movie1.php ဆၿပး save လပပါ။

<html> <head> <title>FindmyFavoriteMovie!</title> <head> <body> <?php echo ' <a href="moviesite.php?favmovie=Stripes"> '; echo 'Click here to see information about my favorite movie!'; echo ' </a> '; ?> </body> </html>

ၿပးရင browser ကေန movie1.php က ေခၚလကရင ေအာကက ပ အတငးေပၚလာ ပါမယ။ ကၽြနေတာ ဒစာအပမာ HTML အေၾကာငးက အေသးစတရငး မေနပါဘး။ PHP က ေလ႔လာေနၿပဆေတာ႔ HTML ကလညး အေတာ အသင႔ နားလည ေနၿပလ႔ ယဆပါတယ။

Page 25: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

25udkausmf

rZÑdr pmay

ပမာ ျမငတ႔အတငးဘ သက click ပါတ႔။ အဒေတာ႔ click လကေပါ႔။ ဒါဆရင ေအာကကပအတငး ထြကလာမယ။

Page 26: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;26

rZÑdr pmay

ပမာျမငရတ႔အတငးဘ $favmovie = TheGyanMoe ျဖစသြားတာပါ။ တစခါတညး browser ရ႕ Tab ရ႕ title ကလညး ၾကညလကပါဥး My Movie Site - ThaGyanMoe ဆၿပး ျမငရမာပါ။ ဘာျဖစလ႔လဆေတာ႔ title tag မာ $favmovie ဆတ႔ variable က ေခၚသးထားလကလ႔ျဖစပါတယ။

Special characters in URLs

URL မာ variable ေတြမာပါတတတ႔ special character ေတြျဖစတ႔ space, amper-sands(&) စတ႔ character မား က ဒအတငး ေဖာျပရာမာ problem ရပါတယ။ ဒလ ဟာေတြက PHP မာ ေကာလႊားႏငပါတယ။ သ႕မာပါတ႔ urlencode() ဆတ႔ function က သးၿပး special character problem က ေျဖရငးႏငပါတယ။ အခ နညးနညးေလာက ထပေပါငး ေလ႔ကင႔ၾကညရေအာင။ mov-ie1.php က ေအာကက ကဒေတြအတငး ထပ ျပငေရးၾကညမယေလ။

<html> <head> <title>FindmyFavoriteMovie!</title> </head> <body> <?php //add this line: $myfavmovie=urlencode('Enemyatthegate'); //change this line: echo "<a href=\"moviesite.php?favmovie=$myfavmovie\">"; echo 'Click here to see information about my favoritemovie!'; echo '</a>'; ?> </body > </html>

Page 27: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

27udkausmf

rZÑdr pmay

save လပၿပး ျပန ဖြငၾကညရေအာင။ ဒါဆရင ေအာကပါပအတငးျမငရမယ။ URL box ထက ေသခာၾကညပါ။

ဒပရဂရမေလးမာဆရင $myfavmovie = Enemy at the gate ဆၿပး ေပးခ႔တာပါ။ word ေတြၾကားက space ေတြက မရေစခငတ႔အတြက urlencode() ဆတ႔ function က တစခါတညး တြေပးလကတာပါဘ။ မခကပါဘး။ ဟတတယမလား။ က ..ေနာကတစခနးက ဆကကး လကၾကရေအာင။

Passing variables with SESSIONS

ကၽြနေတာ အထကမာ ေျပာခ႔တ႔အတငး variable က URL ကေန passing လပတ႔အခါမာ အေရးမႀကးတ႔ ေဒတာေတြ ၊ saved လပထားတ႔ old information ေတြက ယသးလကလ႔ ကယ႔ site အတြက dangerous အေျခအေနက မေရာကႏငတ႔ အေျခအေနေတြမာ သးလ႔ရပါတယ။ တကယလ႔မား user တစေယာကရ႕ personal data ေတြကသာဆရင အထကပါနညးန႔ မသးသင႔ပါဘး။ ကယ႔အေၾကာငးက ဘာျဖစလ႔ လတငးက ေပးသရမာလ ? မဟတဘးလား။ Person-al data ေတြဆတာ username, password, address, email, phone number, credit card number စတာေတြပါပါတယ။ အဒါေတြက private အေနန႔ သးဖ႔ Cookies က သးရပါတယ။ ေနာကပငးမာေတာ႔ cookies အေၾကာငးက ထပၿပး ျဖညစြကေဆြးေႏြးသြားပါမယ။

Page 28: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;28

rZÑdr pmay

what is a session? Session ဆတာ တကယေတာ႔ variable က temporary သတမတလကတာဘျဖစပါတယ။ သ႕ရ႕ သကတမးက ဘယေလာကခလဆေတာ႔ Browser က shutdown ခလကတ႔အထပါဘ။ browser လညး ပတ သလညး ေပာက ပါဘ။ Session မာလညး သ႔ဟာသ session id ပါပါတယ။ ဒါမ ကယလပလကတ႔ (browser ေပၚမာ) အရာတစခက သက သ႔နပါတန႔သ မတထားတာျဖစပါတယ။ PHP program က လအပတ႔အခါမာ အဒ Session ေတြက refer ျပနလပပါတယ။Session ေတြက URL ထမာ Pass လပလ႔ရသလ cookie န႔လညး တြဖကၿပး လပလ႔ရပါတယ။ PHP program မာ session က ေခၚသးဖ႔ session_start() ဆတ႔ function ေလးက ေခၚသးလကယပါဘ။ ဘယနားမာ ေရးရလဆရင PHP program ရ႕ ထပဆးမာ ေရးရပါတယ။ တစခေတာ႔ရတယ။ session ထမာ သငက ဘယ data ေတြက သမးမာလဆတာေတာ႔ ပထမဆး စဥးစားထားဖ႔လပါတယ။ အဓကက ေတာ႔ username and login information ေတြက သမးတာမားပါတယ။ က ..ေျပာေနၾကာပါတယ။ ကၽြနေတာတ႔ ပရဂရမ တစပဒေလာက ခေရးလကမယ။ movie1.php ကဘ နညးနညး ထပေပါငးေရးၾကညမယ။ ေအာကက အတငးေပါ႔ -<?php session_start(); $_SESSION['username']='MgMg12345'; $_SESSION['authuser']=1;?> <html> <head> <title>FindmyFavoriteMovie!</title> </head> <body> <?php $myfavmovie=urlencode('Enemyatthegate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\"> ";

Page 29: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

29udkausmf

rZÑdr pmay

echo 'Click here to see information about my favorite mov-ie!'; echo ' </a> '; ?> </body> </html>

ေနာကၿပးေတာ႔ moviesite.php ကလညး နညးနညးေတာ႔ျပငေရးရမယေလ။ ဘာလ႔ဆေတာ႔ သ႔ဆက information ေတြ ယရမာကး ။ session သးၿပဆေတာ႔ သက ဒအတငး မေပးေတာ႔ဘးေလ။ သတမတထားတ႔ data ေတြက တမတ တကစစမယ။ တရငေပးမယ။ မတရင မေပးဘးေပါ႔။ အဒလ စစဖ႔အတြက moviesite.php က နညးနညးေလး ျပငေရးမယေလ။

<?phpsession_start(); //check to see if user has logged in with a valid passwordif($_SESSION['authuser']!=1){echo'Sorry,butyoudon\'thavepermissiontoviewthispage!';exit();}?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body> <?php echo'Welcometooursite,'; echo$_SESSION['username']; echo'!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate;

Page 30: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;30

rZÑdr pmay

?> </body> </html>

Save လပၿပးေတာ႔ movie1.php က ဖြင႔ၿပး click လပလကရင ေအာကက ပအတငးထြကလာပါမယ။

How it works

အေရးႀကးတာက မေမ႔န႔ေနာ။ session က ေရးမယဆရင ကယေရးမယ႔ script ရ႕ ထပဆးမာ ေရးရတယ။ ခ ဒ ပရဂရမ မာဆရင movie1.php ကေန request လပလာတာက moviesite.php ရ႕ ထပဆးက session က if န႔ စစပါတယ။ if ရ႕ အလပလပပက ေအာကပါအတငးျဖစပါတယ။ သ႕ရ႕ condition က if(conditional statement){statement} ျဖစပါတယ။ ဥပမာ ေလး တစခ န႔ လပၾကညမယေလ။ အစဆေတာ႔ လြယလြယကကေပါ႔ဗာ။

Page 31: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

31udkausmf

rZÑdr pmay

<?php if (1+3 ==4){ echo 'Summation is true.'; } ?> အဒါက run လကရင browser ကေန Summation is true ဆတာက ျပမာပါ။ အလပလပပက if ဆတ႔အတငး ျဖစလငေပါ႔ ဗာ... 1+3==4 ျဖစလင Summation is true ဆတာက echo န႔ output ထတထားတာပါ။ 1+3==5 ဆရင ဘာမ ျပမာမဟတပါဘး ။ ဟတမမဟတတာကး။ ဘာျဖစလ႔ == ႏစခါသးရတာလ ဆရင PHP မာ သးရမယ႔ Comparison operators က ရငး ျပပါမယ။

Comparison operators == :Values are equal === : Values are identical != :Values are not equal !== :Values are not identical < :value 1 is less than value 2 > :value 1 is greater than value 2 <= :value 1 is less than or equal to value 2 >= :value 1 is greater than or equal to value 2

ဒေနရာမာ ေသခာ မတထားရမာက equal ဆတာန႔ identical ဆတာ မတပါဘး။ identical မာဆရင variable ရ႕ value ေရာ datatype ေရာ တပါတယ။ equal မာကေတာ႔ value ဘတတာပါ။ အခ moviesite.php မာ ျပငေရးလကတ႔ ဟာက ျပနရငးပါမယ။

Page 32: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;32

rZÑdr pmay

if($_SESSION['authuser'] !=1) ဆတာက movie1.php file ကေန request လပလာတာမာ authuser =1 မဟတဘးဆရင ဆတ႔ အဓပၸာယရပါတယ။ လရငးေျပာရရင 1 ျဖစမ ရမယဆေပါ႔ဗာ။ 1 မဟတဘးဆရင {} ကြငးထကဟာက ဆက Run မာပါ။ အဒမာ သက echo သးၿပး သငက 1 မဟတတ႔အတြက ဒ page က ၾကညခြင႔မရပါဘး ဆၿပး output ထတေပးတာပါ။ ၿပးရင exit() func-tion သးၿပး ျပနထြကသြားပါတယ။ တကယလ႔ 1 ျဖစခ႔မယဆရင ကနတ႔ code ေတြက ဆက run မာပါ။ အခက 1 ျဖစေနေတာ႔ ပထမဆး welcome to our site လာမယ။ ေနာကၿပးရင echo $_SESSION['username'] က ကၽြနေတာတ႔က MgMg12345 လ႔သတမတခ႔တ႔အတြက MgMg12345 ဆၿပးျပမယ။ ကနတာကေတာ႔ ေရ႕က အတငးဘ။ If , else if, while , do while, switch and break , For စတ႔ statement ေတြက သ႔ရ႕ သကဆငရာေနရာ ေရာကမ ကၽြနေတာ ရငးျပသြားပါမယ။ Theory န႔ Pratical က တစခါတညး လပသြားတာေပါ႔။ ဒါမမဟတရင ခငဗား ပငးသြားမာေပါ႔။

Page 33: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

33udkausmf

rZÑdr pmay

Passing variables with cookies

Cookies ေတြမာ ဘာေတြက သမးသလဆရင website က လာေရာကတ႔သရ႕ computer information အနညးငယက သမးပါတယ။ Theory အရဆရငေတာ႔ Cookies ေတြဟာ အသးျပသရ႕ IP , operating system ေတြက intercept လပႏငပါတယ။ ဒါေပမယ႔ cookies ေတြက storing infor-mation ဘလပပါတယ။ တစခ႕သေတြက ေတာ႔ ဒ cookies technology န႔ အသးျပသရ႕ browsing habits ေတြ က track လပပါတယ။ ၿပးေတာ႔ ဒ cookies ေတြက commonly name directory ထမာ သမးထားတာျဖစတ႔အတြက hacker ေတြက hack လပၿပးေတာ႔ ေသာလညးေကာငး တစျခားသက မမကြနပတာထက cookies ေတြက တစနညးနညးျဖင႔လာယသြားလငေသာ လညးေကာငး သင႔ရ႕ အေရးႀကးေဒတာေတြ ပါသြားႏငပါတယ။ ဒါေၾကာင႔ တစခ႕သေတြကေတာ႔ Browser က cook-ies က disable ေပးထားေလ႔ရပါတယ။ ဒလမး ျဖစပကႏငတာေတြေၾကာင႔ တကယ႔ အေရးႀကး ေဒတာေတြ (ဥပမာ - Credit card information ) စတာေတြက ကြနပတာထမာ သမးဆညး မထားဖ႔ အႀကေပးလပါတယ။ Cookies န႔ပါတသတၿပး ပသခငရင security risk ေတြက ပ သခငရင ေအာကက website က သြားေရာက ေလ႔လာႏငပါတယ။ www.w3.org/Security/faq/wwwsf2.html#CLT-Q10 ဒလဆရင ဘာျဖစလ႔ developer သမားေတြက cookies က သးေနၾကေသးလ။ cook-ies က သးျခငးျဖင႔ သတမတထားတ႔ အခနထ information က သမးထားလ႔ရပါတယ။ Ses-sion က သာသးမယဆရင Browser က ပတလကတာန႔ သ႕ရ႕ life ကလညး ကနၿပေလ။ cookies ကေတာ႔ အလ မဟတပါဘး။ Session ကသာ cookies န႔ တြသးမယဆရင browser life ထက ပ ၾကာရညခေအာငသးႏငပါတယ။ ဟတၿပ။ ခ cookie က ဘယလ သတမတမလ။ လြယပါတယ။ setcookie() ေပါ႔။ ဒါလညး PHP function တစခပါဘ။ cookie တစခ သတမတမယဆရင ေအာကက အခကေတြက အရငဆး စဥးစား ဖ႔လပါတယ။ 1. Cookie name 2. Value of the cookie name (eg. username) 3. Cookie life time (in seconds) UNIX timestamp ေပၚမာ အေျခခထားပါတယ။

Page 34: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;34

rZÑdr pmay

ဒါေပမယ႔ ခလ ေရးလ႔ရပါ တယ။ time()+60*60*24*365 ဒါဆရင သ႔ရ႕ သကတမးက ၁ ႏစစာျဖစပါတယ။ 4. Path ( cookie က သမးမယ႔ေနရာ) 5. Domain ( ဒ cookie က လကခႏငတ႔ domain) (ဒဟာက optional ျဖစပါတယ။ မသတမတလညးရတယ) 6. Cookie မာ secure connection HTTPS က on ေပးထားရမယ။ အဒေတာ႔ ဒလပစျဖစမာေပါ႔။ setcookie ($name[, $value[, $expire[, $path[, $domain[, $secure]]]]])

ခလညး $_COOKIE['cookiename'] က သးမာပါဘ။ ခ လပမယ႔ ပရဂရမမာဆရင MgMg12345 ဆတ႔ user ဟာ ဒ site က လာတငး သ႔ရ႕ username က type လပစရာမလဘ ေအာတ ျဖညေပးမာျဖစပါတယ။ movie1.php fi le ကဘ နညးနညးေလး ထပ ျပင ေရးၾကညတာေပါ႔။<?php

setcookie('username', 'MgMg', time() + 60); session_start(); //delete this line: $_SESSION['username'] = 'MgMg12345'; $_SESSION['authuser'] = 1;?> <html> <head> <title> Find my Favorite Movie! </title> </head> <body> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\"> "; echo 'Click here to see information about my favorite movie!'; echo ' </a> '; ?> </body> </html>

setcookie('username', 'MgMg', time() + 60);

Page 35: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

35udkausmf

rZÑdr pmay

ၿပးေတာ႔ ထးစအတငး moviesite.php fi le က နညးနညးေလး ထပျပငေရးမယ <?phpsession_start(); //check to see if user has logged in with a valid passwordif ($_SESSION['authuser'] != 1) { echo 'Sorry, but you don\'t have permission to view this page!'; exit();}?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head > <body > <?php echo 'Welcome to our site, '; echo $_COOKIE['username']; echo '! <br/> '; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate=5; echo 'My movie rating for this movie is: '; echo $movierate;?> </body > </html>

ဒလဆရင ေအာကပါပေတြအတငးျမငရမာပါ။

Page 36: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;36

rZÑdr pmay

အထကက ပရဂရမဟာ cookies life time က 60 seconds ဘ သတမတထားတာပါ။ ကယ႔ဟာက စတၾကက ျပငၾကညၿပးေလ႔ကင႔ၾကညပါ။

Page 37: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

37udkausmf

rZÑdr pmay

Passing information with Forms

Form ပစက နညးနညးေလာက ေလ႔လာၾကညရေအာင ။ သ႔က စတငေတာ႔မယဆရင (၁) <form> န႔ စတငၿပး action and method ဆတ႔ attribute ပါပါတယ။ action အေနန႔ URL တစခက ေပးႏငၿပး method အေနန႔ GET or POST တစခခက သး ႏငပါတယ။

(၂) input fi elds မားပါပါတယ။ အသးမားတာေတြကေတာ႔ TEXT: min 2 characters to 2000 characters အထ သးႏငပါတယ။ ဒထက ပမားမားသးခငရငေတာ႔ textarea ဆတ႔ ဟာက သးရပါမယ။ Check box : user ေတြက Choice လပဖ႔ရနအတြကျဖစပါတယ။ choice က တစခထကမက ေရြးခယႏငမာျဖစပါတယ။ Radio: radio button ကလညး list ထကေန ေရြးခယဖ႔ဘျဖစပါတယ။ ဒါေပမယ႔ သက တစခဘ ေရြးလ႔ရမာျဖစပါတယ။ Select: ဒေကာင႔ကေတာ႔ ေတာေတာမားမားက Drop down box အျဖစသၾကပါတယ။ Passwords: သ႔ကေတာ႔ user က ဘာရကတယဆတာက Hide လပထားရမာျဖစပါတယ။

Using forms to get information

movie1.php fi le ကဘ နညးနညးေလး ထပၿပး ျပငေရးၾကညမယေလ။ ျပငရငးျပငရငး ေတာေတာေတာင မားလာၿပေနာ။ ကၽြနေတာေျပာခငတာက မားလာၿပဆေတာ႔ Comment ေလးေတြ ေသခာေရးဖ႔ ပါ။ ေအာကမာ ျပထားတ႔ Code ေလးေတြက ေသခာ ေလ႔လာၾကညပါ။

Page 38: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;38

rZÑdr pmay

<?php //delete this line: setcookie('username', 'MgMg', time() + 60); session_start(); $_SESSION['username'] = $_POST['user']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; //Check username and password information if (($_SESSION['username'] == 'MgMg') and ($_SESSION['userpass'] == '12345')) { $_SESSION['authuser'] = 1; } else { echo 'Sorry, but you don\'t have permission to view this page!'; exit(); }?><html> <head > <title> Find my Favorite Movie! </title > </head > <body> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\"> "; echo "Click here to see information about my favorite movie!"; echo " </a> "; ?> </body> </html> ျပးသြားရင moviesite.php က နညးနညး ထပျပငေရးပါဥးမယ။ <?php session_start(); //check to see if user has logged in with a valid password if ($_SESSION['authuser'] !=1 ) { echo 'Sorry, but you don\'t have permission to view this page!'; exit();

Page 39: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

39udkausmf

rZÑdr pmay

} ?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head> <body> <?php echo 'Welcome to our site, '; //delete this line: echo $_COOKIE['username']; echo $_SESSION['username']; echo '!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; ?> </body> </html>

ၿပးသြားရင Login form တစခ တညေဆာကပါမယ။ text editor မာ new document လပပါ။ File name က login.php လ႔ နာမညေပးပါမယ။

<?phpsession_unset();?> <html> <head> <title>Please Log In</title> </head> <body> <form method="post" action="movie1.php"> <p> Enter your username: <input type="text" name="user"/> </p> <p> Enter your password:

Page 40: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;40

rZÑdr pmay

<input type="password" name="pass"/> </p> <p> <input type="submit" name="submit" value="Submit"/> </p> </form> </body> </html>

ၿပးသြားရင login.php file က ေခၚၾကညပါမယ။ ေအာကကပအတငး ျမငရမာပါ။

username ေနရာမာ mgmg12345 password က 12345 ဆၿပး၀ငၾကညပါ။ ၀ငလ႔ရမာမဟတပါဘး။ username မားေနတ႔အတြက ျဖစပါတယ။ Authorization scripts အလပလပတယေပါ႔ဗာ။

Page 41: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

41udkausmf

rZÑdr pmay

အခ login name "MgMg" and password "12345" န႔၀ငၾကညပါ။ ၀ငလ႔ရသြားတာက ေတြ႕ရပါမယ။

How it works ပထမဆးအလပလပတာက login.php ေလ ။ ဟတတယမလား။ သ႔ထမာ ဘယ page ကဘလာတ႔ session ေတြထက variables ေတြက unset လပလကပါတယ။ အဒါက session_un-set() ဆတ႔ function န႔ လပလကတာပါ။ ၿပးရင variables ၂ ချဖစတ႔ username and password (user and password respectively) က ေမးပါတယ။ ၿပးရင ရလာတ႔ variables ၂ ခက movie1.php က ပ႔ေပးပါတယ။ အလ ပ႔တ႔ေနရာမာ POST method က သးၿပးပ႔ပါတယ။ အဒါေၾကာင႔ movie1.php မာ $_POST syntax က ေတြ႕ရတာျဖစပါတယ။ ခ ဒေလာက သရင ရပါၿပ။ ေနာက အခနးေတြမာ လကေတြ႕ေလ႔ကင႔ခနးေတြ လပရငးန႔ ပၿပးနားလညလာပါမယ။ movie1.php fi leက တကယေတာ႔ ေအာကပါလပငနးစဥမားက လပေဆာငသြားပါတယ - (၁) Session က စတငေပးတယ။ default အားျဖင႔ login က ရလာတ႔ variables ေတြက register လပေပးတယ။ (၂) Usernameand password က accept လပႏငလား မလပႏငဘးလား စစေပးတယ။ (၃) တကယလ႔ username and password ၂ ခလးက လကခတယဆရင autheruser က 1 အျဖစ သတမတ ေပးၿပးေတာ႔ other pages ေတြက access ေပးပါတယ။

Page 42: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;42

rZÑdr pmay

(like moviesite.php) (၄) တကယလ႔ username and password က မားတယဆရင error message က ျပေပးပါတယ။

Using if / else arguments

ခ if/elsearguments ကရငးပါမယ။ ေရ႕မာတနးကေတာ႔ နညးနညး ရငးခ႔ေသး တယေလ။ မတမမယထငတယ။ if က ဘာျဖစလ႔ သးရတာလ။ ဟတက႔ ဒလပါ။ ကၽြနေတာတ႔ဟာ ခဆရင val-ues အမးမးက variables ေတြန႔ ျပႏငလာၿပျဖစပါတယ။ တစခ႕ variable ေတြက specific action လပခငတ႔အခါမးမာ if က သးပါတယ။ ဥပမာ $password ဆတ႔ variable ေပါ႔။ user က password ေတာငးမယ။ user က ထညမယ။ မနရင site ထက ၀ငခြင႔ေပးမယ။ မမနဘးဆရင user က kick out ဒါမမဟတ site ထက ၀ငခြင႔မေပးဘး။ if က else ထပေပါငး ေပးလကမယဆရင the whole range of possible actions ေတြက ထနးႏငမာပါ။ Using if statements Basic if statement က ေအာကေဖာျပပါ အတငးျဖစပါတယ if (condition) action to be taken if true. ဥပမာ အေနန႔ - if ($stockmarket >1000) echo 'Wharr.... Time to Party'; တကယလ႔ simple statement ထက ပ ရညတယဆရငေတာ႔ {} က သးရမာပါ။ ဒ အဖြင႔ အပတေတြက ေသခာ ဂရစကဖ႔လပါတယ။ ေအာကေဖာျပပါ နမနာက ၾကညပါ။ if ($stockmarket > 10000) { echo 'Wharr .....Time to Party!'; $mood = 'happy'; $retirement = 'potentially obtainable'; }

Page 43: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

43udkausmf

rZÑdr pmay

အခ ကၽြနေတာတ႔ လကေတြ႕ေလ႔ကင႔ဖ႔ လပပါမယ။ text editor ကဖြင႔ပါ။ new document လပပါ။ date.php လ႔ နာမညေပးပါ။ ၿပးရင ေအာကက code ေတြအတငး လကေရးၾကညပါ။

<html> <head> <title> How many days in this month? </title> </head> <body> <?php date_default_timezone_set('Asia/Yangon'); $month = date('n'); if ($month == 1) { echo '31'; } if ($month == 2) { echo '28 (unless it\'s a leap year)'; } if ($month == 3) { echo '31'; } if ($month == 4) { echo '30'; } if ($month == 5) { echo '31'; } if ($month == 6) { echo '30'; } if ($month == 7) { echo '31'; } if ($month == 8) { echo '31'; } if ($month == 9) { echo '30'; } if ($month == 10) { echo '31'; } if ($month == 11) { echo '30'; } if ($month == 12) { echo '31'; } ?> </body> </html>

Page 44: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;44

rZÑdr pmay

ကၽြနေတာ ဒစာအပေရးေနတ႔ အခနက စကတငဘာလ ျဖစတ႔အတြက 30 လ႔ ျပေနတာပါ။

How it works အရငဆးdate_default_timezone_set ဆတ႔ date function တစခ န႔ ကယေရာကရေနတ႔ ေဒသေပၚမတညၿပး time zone သတမတတာပါ။ အေမရကား နယးေယာက မာဆရင ('America/New_York') လ႔ သတမတရမာပါ။ ကၽြနေတာတ႔ ေရးလကတ႔ script က $month ဆတ႔ variable က ယပါတယ။ ၿပးေတာ႔ PHP date function ေတြထက တစချဖစတ႔ date('n') ဆတ႔ value န႔ assign လပေပးလကပါတယ။ ဒ script က ဆာဗာ ရ႕ အခနက ၾကညပါတယ။ ဒေနရာမာ တစခ ေျပာခငတာက date function ကက 1 for january , 2 for february စသျဖင႔ သပါတယ။ ေတာေနၾကာ ဘယက ဘယလ သတာလ ဥးေဏာကစားေနမာစးလ႔ပါ။ date function ကလညး ေနာကပငး အခနးေတြမာ အကယတ၀န႔ ရငးပါဥးမယ။ ဒ script မာ if statement သးၿပး မနတ႔ အထ စစပါတယ။ ပထမဆး if statement က False ျဖစသြားတယဆရငေနာက ထပ statement တစခက ခကျခငးစစပါတယ။ ဒလန႔ True ျဖစတ႔အထ စစပါတယ။

Using if and else together သ႕ရ႕ပစေလးကေတာ႔ ေအာကပါအတငးျဖစပါတယ။ အကယတ၀န႔ေတာ႔ မရငးေတာ႔ဘးေလ။ တစခ မဟတရင တစခ ဆတ႔ အဓပၸာယရပါတယ။ <?php $test = 5; if($test < 15) { echo 'The condition was met'; } else { echo 'The condition was not met'; } ?>

Page 45: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

45udkausmf

rZÑdr pmay

အထကက ပရဂရမေလးက ၾကညမယဆရင $test ဆတ႔ variable တနဖးက 5 လ႔ သတမတလကတယ။ ၿပးေတာ႔ if statement န႔ စစၾကညလကတယ။ စစၾကညတယဆတာ ကယ output လပခငတ႔ data အတြက ျဖစပါတယ။ $test က 15 ထကငယတယဆရင The condition was met က ထတေပးမာပါ။ မငယဘးဆရငေတာ႔ The condition was not met ဆတ႔ စာေၾကာငးက ထတေပးမာပါ။ $test = 20 လ႔သာေပးခ႔မယဆရင ဒတယ output က ထတေပးမာပါ။ တကယလ႔ ကယေပးခငတ႔ message က အေျခအေန ၂ ခထကပရင ဘယလလပမလ ။ ရပါတယ။ အဒအခါမာ if ရယ else ရယၾကားမာ else if က ထညသြငး အသးျပႏငပါေသးတယ။ ေအာကက နမနာေလးက ေလ႔လာၾကညရေအာင။

<?php $age = 20; if($age < 18) { echo "Not old enough to vote or drink! <br />"; } else if ($age < 21) { echo "Old enough to vote, but not to drink. <br />"; } else { // If we get here, $age is >= 21 echo "Old enough to vote and drink! <br />"; } ?>

အေပၚက code ကေလ႔လာၾကညရင အသက ၁၈ ႏစေအာကဆရင vote or drink ၂ ခလး လပလ႔မရဘး။ တကယလ႔ ၂၁ ႏစေအာကဆရငေတာ႔ ( ၁၈ ႏစ န႔ ၂၁ ႏစၾကားျဖစသြားတာေပါ႔) ေသာကလ႔မရဘး။ ေအာကဆး တစခက ေတာ႔ ၂ ခလးလပလ႔ရၿပေပါ႔။ $age=20 ဆတ႔ ေနရာမာ အသက အမးမးက ေျပာငးလ ေလ႔ကင႔ၾကညပါ။

Page 46: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;46

rZÑdr pmay

While and do-while while loop က ဘယလ လပေပးလဆရင code block တစခက True မျဖစမခငး repeat လပေပးပါတယ။ နမနာေလးန႔တြေလ႔လာလကရင ပနားလညသြားမာပါ။ <?php $i = 0; while($i<3){ echo "Count is at $i. <br />"; ++$i; } ?> အထကကပစမာဆရင ကၽြနေတာတ႔က counter variable $i က သးထားပါတယ။ သ႕ရ႕ ကနဥးတနဖးက သည 0 ေပးထားလကပါတယ။ ေနာကၿပးေတာ႔ while loop ထထည သးလကပါတယ။ ဘယ အေျခအေနထ ဒကဒ က Run မာလဆေတာ႔ <3 ထ ပါ။ ဘယက စမာလဆေတာ႔ သည ကပါ။ while န႔စစမယ။ ပထမဆးက သည ..အေက မနတယ ဘာျဖစလ႔လဆေတာ႔ 3 ထကငယတယေလ။ ဒေတာ႔ ပထမဆး output အေနန႔ Count is at 0. ျဖစမယ။ ဒတယအေနန႔ 1 တတယအေနန႔ 2 အထမနတယ။ စတတအေနန႔ 3 ၾကေတာ႔ မမနေတာ႔ဘး။ ဘာျဖစလ႔လဆေတာ႔ <3 ဆတာ 3 န႔ ညလ႔မရဘး။ ငယကငယရမာ။ ဒလမး ပထမက 0 ဒတယက 1 တတယက 2 ဆတာ ဘယလ လပ ကြနပတာက သလ။ ဟတက႔... ++$i ဆတ႔ဟာန႔ ေဖာျပတာပါ။ ထြကလာတ႔ တနဖးက 1 ေပါငး ေပးတာပါ။ ဒ script က run လကရင Browser မာ ဒလ ေပၚမာပါ။

Count is at 0. Count is at 1. Count is at 2 မတခက။ သင႔ အေနန႔ မတထားရမာက condition က မကကညႏငဘးဆရင loop က ex-cute လပေပးမာ မဟတပါဘး။ $i=4 ဆရင ဘာ output မ ထြကလာမာမဟတပါဘး။

Page 47: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

47udkausmf

rZÑdr pmay

do-while loop

<?php $i=10; do{ echo "The count is at $i."; ++$i; }while(i<5); ?>

ဒပစမာဆရင do ဆေတာ႔ လပပါေပါ႔။ ဘာလပခငးလဆရင output အေနန႔ $i value က ထတခငးတယ။ ၿပးေတာ႔ while loop က ဆကဆငးတယ။ အဒမာၾကေတာ႔ ဘာ output မ မထြကေတာ႔ဘးေလ။ initial value ကက 10 ျဖစေနၿပ။ while မာေပးထားတ႔ condition က < 5 ဆေတာ႔ ဘာ မ ထြကလာမာမဟတဘး။ Output အေနန႔ The count is 10. ဆၿပး ေပၚလာမာပါ။

FOR loop

for loop ဆတာ PHP program ရ႕ အသးမားဆး statement ေတြထက တစခ အပါ၀ငျဖစပါတယ။ သ႔ အေနန႔ expression ၃ ခ က လကခႏငပါတယ။ Expression 1 အေနန႔ loop ရ႕ အစ တနဖးက ေဖာျပတာျဖစၿပး Expression 2 အေနန႔ကေတာ႔ expression 1 အေပၚအေျခခကာ iteration method သးၿပး တြကခကမာ ျဖစပါတယ။ True value ေတြကဘ တြကမာျဖစၿပး False ျဖစသြားတ႔အခါမာ ရပသြားမာျဖစပါတယ။ Expression 3 အေနန႔ကေတာ႔ iteration တစခစရ႕ end of iteration ျဖစပါတယ။ ဒလေျပာေနေတာ႔ နညးနညး ရႈပသြားသလ ခစားရမယ။ မရႈပဘးေနာ။ ေအာကက နမနာပစေလးကၾကညလက။ လြယမလြယ။ ေျပာဖ႔ကနသြားတယ။ Expression တစခစမာ အစတအပငး တစခ ထကမက ပါႏငပါတယ။ ပါလာခ႔ရင comma (,) န႔ ခေပးရပါမယ။ Expression တစခန႔တစခၾကားမာေတာ႔ semicolon (;) န႔ ခေရးေပးရပါတယ။

Page 48: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;48

rZÑdr pmay

<?php for($i=0;$i<5;++$i){ echo "The count is $i <br />"; } ?>

ဒါဆရင အဒ script က run မယဆရင browser က ေအာကပါအတငး ျပေပးမာပါ။ The count is 0 The count is 1 The count is 2 The count is 3 The count is 4 FOREACH loop foreach ဆတ႔ အတငး သလညးဘ တစခခငးစအတြက သးတာေပါ႔ဗာ။ ဒ foreach က ar-rays န႔ တြသးရင very powerfull ျဖစတယဗ။ နမနာေလးန႔ဘျပမယဗာ။ ေရ႕ခနး က array ကေသခာ နားလညခ႔ရင လြယပါတယ။

<?php $bands=array( "IronCross","Emperor","LazyClub","Aurora" ); foreach($bandsas$band){ echo$band,"<br/>"; } ?> ဘယလ အလပသြားသလဆရင $bands ဆတ႔ variable န႔ array တစခ န႔ တညေဆာကလကတယ။ ၿပးေတာ႔ foreach န႔ loop ပတလကတယ။ $bands as $band ဆတာမာ as = alias name (နာမညခြ ေပါ႔ ဗာ) ။ array ထက value တစခ စက variable တစခ စ အျဖစ

Page 49: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

49udkausmf

rZÑdr pmay

သတမတလကတယ။ အဒေတာ႔ ဘယလျဖစသြားမလ။ ျမငသာေအာင ရငးျပရရင $band = Iron-Cross ေနာကတစခါ ထပပတျပနေတာ႔ $band = Emperor ..and so on ေပါ႔ဗာ။ အဒေတာ႔ output ထတလကရင Browser က ေအာကပါအတငး ျပပါလမ႔မယ။ IronCross Emperor LazyClub Aurora

foreach loop ရ႕ လပၿပး အသး၀ငတ႔ ပစေလးတစခက နညးနညးေလး ထထ၀င၀င ထပေလ႔လာၾကညရေအာင။ ေအာကက ပစေလးကၾကညၾကညပါ။

<?php $person=array( 'name'=>'Kokyaw', 'age'=>23, 'passion' => 'craft beer' ); foreach($personas$key=>$value){ echo "His $key is $value. <br />"; } ?>

အထကက script က run လကရင ေအာကပါ အတငး browser က ထတေပးမာပါ။

His name is Kokyaw. His age is 23. His passion is craft beer.

Page 50: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;50

rZÑdr pmay

Break ဘယ loop မာ မဆ break function သးၿပး လခငတ႔ ေနရာမာ ရပတန႔လ႔ရပါတယ။ ဥပမာ- while($i<10) { if($i == 7) { break; // Exit the while loop } } ဒမာဆရင while and if က တြသးသြားတာ ေတြ႕ရပါမယ။ break က loop မဟတဘ loop က အေျခအေနတစခမာ ရပတန႔ေပးတယဆတာက မတထားဖ႔လပါတယ။ $i ==7 ဆတ႔ ေနရာမာ loop က ရပသြားမာပါ။ ရပၿပးသြားတာန႔ loop ကေန ထြကသြားမာ ျဖစပါတယ။

Switch Switch statement က codition 2 ခထက ပတ႔ အခါမးမာ သးေလ႔ရပါတယ။ သ႔က case န႔ တြၿပး သးရပါတယ။ ေမးစရာရလာပါတယ။ if က သးရငေရာ မရဘးတ႔လား။ ရပါတယ လ႔ဘေျဖရမာဘ။ ဒါေပမယ႔ codition အမားႀကးအတြကဆရင switch က သးရတာ ပၿပး လြယကျမနဆနပါတယ။ case တစခခငးစဟာ ဘာန႔ သြားတသလဆရင if function န႔ သြားတပါတယ။ switch မာ expression က လကခၿပး case တစခခငးစန႔ စစပါတယ။ မနသြားၿပဆတ႔ case မာ code က excute လပပါတယ။ case တစခခငးစက break statement or else statement န႔ separate လပထားရပါမယ။ နမနာေလး တစခန႔ ျပပါမယ။ date က check လပတ႔ script ေလးတစခေပါ႔။ ရးရးရငးရငးေလးန႔ နားလညလြယပါတယ။ <?php $day=date('w'); switch($day) { case '0': echo"It'sSunday!"; break;

Page 51: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

51udkausmf

rZÑdr pmay

case'1': echo"It'sMonday!"; break; case'2': echo"It'sTuesday!"; break; case'3': echo"It'sWednesday!"; break; case'4': echo"It'sThursday!"; break; case '5': echo"Woohoo!It'sFriday!"; break; case '6': echo"It'sSaturday!"; break; default: echo"That'snodayIrecognize..."; break; } ?>

ကၽြနေတာတ႔ အေပၚက script မာဆရင date() function က ယသးခ႔ပါတယ။ $date ဆတ႔ variable ရ႕ value က date() န႔ ေပးခ႔တာပါ။ w ဆတာက week က ေျပာတာပါ။ ေနာကပငး အခနးေတြမာ လကေတြ႕လပရငး န႔ ပနားလညမာပါ။ ခကေတာ႔ ဒေလာက သထားရင ရပါၿပ။

Page 52: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;52

rZÑdr pmay

Continue contiune ရ႕ အလပလပပက break ရ႕ အလပလပပန႔ ဆငတပါတယ။ ျခားနားတာေလးတစခဘရတယ။ အဒါက ဘာလဆေတာ႔ contiune ဟာ လကရ အေျခအေနမာဘ end ျဖစပါတယ။ ျပးရင သက Loop က ေန ျပနမထြက သြားပါဘး။ ဆကၿပးေတာ႔ loop လပပါတယ။ ဥပမာ အေနန႔ ကၽြနေတာတ႔ စ ဂဏနးသးသန႔ ထတၾကည ရေအာင ။

<?php for($i=0;$i<=10;++$i){ /* *Ifthemodulusof$iand2isnotzero(whichevaluates*tofalse),wecontinue */ if($i%2){ continue; } echo$i,""; } ?>

ဒမာဆရင for န႔ if က တြသးထားပါတယ။ For loop ထမာ if statement ထညသးၿပးေတာ႔ အေျခအေနက စစခငးတာပါ။ $i%2 ဆတာက $i တနဖးက ၂ န႔ စားလ႔ ျပတ သြားရင continue (loop က ဆက ၿပးေတာ႔ ပတခငးတာပါ) လပခငးပါတယ။ " " က ထညသးလကတာက space ျခားေစခငလ႔ပါ။ သ႔က run လကရင

0 2 4 6 8 10 ဆၿပးရပါမယ။

Page 53: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

53udkausmf

rZÑdr pmay

return return statement ဟာဆရင PHP မာ most usefull statement လ႔ေတာင ေျပာလ႔ရပါတယ။ သ႔ရ႕ သေဘာတရားကေတာ႔ function တစခအတြငး မာထညသးၿပး အဆးကေရာကသြားၿပဆရင function က stop လပလကၿပး ရလာတ႔ argument က function ရ႕ value အျဖစ ျပနထတေပးတာဘ ျဖစပါတယ။ တကယလ႔ function ရ႕ အျပငဘကမာ သးမယဆရငေတာ႔ script က stop လပတာဘျဖစပါတယ။ ဒ return အေၾကာငးက ေနာကပငးမာ user defi ned function အခနးေရာကရင ဆကရငးပါမယ။ ခေတာ႔ ဒေလာကသထားဖ႔ဘလပါတယ။

Understanding ARRAYS

array ကေတာ႔ PHP ရ႕ powerfull datatypes ထက တစခဘျဖစပါတယ။ သ႔ရ႕ map infor-mation ( map ဆတာက one to one function လပါဘ) က key န႔ value ဆတာက သးပါတယ။ နပါတ ၁ key သည နပါတ ၁ value ေပါ႔။ ဒေတာ႔ array ဆတ႔ အထမာ information အမားႀကးက variable တစခခငးစအေနန႔ သမးဆညးထား လ႔ရတယ။ သးခငတ႔အခါ အကနထတသးလ႔ရသလ လအပတာေလးေတြဘ လညး ထတသးလ႔ရတယေလ။ array ဆတာ ေသတာ န႔ လညးတပါတယ။ သ႔ထမာ ပစၥညးေတြထညထားမယ။ ကယက လအပတ႔အခါ လအပတာက ထတယမယ။ နပါတ ၁ ေသတာထမာ ခတ ၊ ေပတ ေတြဘ ထညထားမယလ႔ မတထားရင ေနာင က လတ႔အခါ ခကခငး သြားယလ႔ရမယေလ။ နပါတ ၂ ထမ ပဆး ထားမယဆရင ေနာင က ပဆးလတ႔အခါ ဘယ လကရာရမနး မျဖစေတာ႔ဘး ။ သေနၿပ နပါတ ၂ ထမာ ဆတာက ။ အဒထကမ ဘာ အေရာင ဘာ အမးအစား ဆတာေတာ႔ ထပေရြး ရမာေပါ႔။ ေအာကက script က ၾကညပါ။ ရးရး တနးတနးေရးထားတာပါ။

<?php $entryTitle = "Sample Title"; $entryDate="September9,2011"; $entryAuthor="Kokyaw"; $entryBody="Today,Iwroteablogentry."; ?>

Page 54: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;54

rZÑdr pmay

သာမနအားျဖင႔ ဒလ ေရးခငးမးဟာ ဘာမမျဖစေပမယ႔ function တစခမာ သးေတာ႔မယဆရငေတာ႔ confuse ျဖစႏငပါတယ။ ဒလ problem မးက ေကာလႊားႏငေအာင array က သးၿပး ေရးလ႔ရပါတယ။ နမနာေလးက ၾကညေပးပါ။

<?php $entry=array( 'title'=>'SampleTitle', 'date'=>'September9,2011', 'author'=>'Kokyaw', 'body'=>'Today,Iwroteablogentry.' ); ?>

အထကပါ script က ေလ႔လာၾကညပါ။ $entry ဆတ႔ variable တစခထမာ data အကနလးက save လပထားလကပါၿပ။ ဟတၿပ။ ဒါဆရင အဒ data ေတြက ဘယလ access လပမလ။ Ac-cess လပဖ႔ရာ ကၽြနေတာတ႔က key က ေပါငး ေပးရမာပါျဖစပါတယ။ key က ေပါငးေပးတ႔အခါမာ variable ရ႕ အဆးမာ [] square brackes ထမာ ထညေပးရမာ ျဖစပါတယ။ ဒေတာ႔ output က ဘယလထတမလေပါ႔။ လြယလြယေလးပါ။ <?php echo $entry['title']; ?> ဒါဆရင သ႔ရ႕ value ျဖစတ႔ Sample Title ဆတာ ထြကလာမာေပါ႔။ title က key ေပါ႔။

အေကေနာ။ ခက ဒေလာကဘ။ ေနာကပငး သငခနးစာမာ All about arrays ဆၿပး ဆကရငးဥးမယ။ ခ တစခါတညးရငးလကရင မကစရႈပကနမာစးပါတယ။

Page 55: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

55udkausmf

rZÑdr pmay

Incrementing / Decrementing operators

ကၽြနေတာတ႔ PHP program ေရးတ႔အခါ တစခ႕ အပငးေလးေတြမာ ၁ ေပါငးျခငး ၁ ႏႈတျခငး ေတြ ေရးဖ႔ လအပပါတယ။ loop ပတတ႔အခါမးမာ ေရးဖ႔ ဆရင PHP မာ လြယလြယကကေရးလ႔ရေအာင စမေပးထားပါတယ။ value တစခက 1 ေပါငးေပးဖ႔ variable ရ႕ ေရ႕မာ ျဖစျဖစ ေနာကမာ ျဖစျဖစ ++ ႏစခက ေရးလကယပါဘ။ ႏႈတျခငရငေတာ႔ -- (minus) ႏစခက ေရးရမာပါ။ variable ရ႕ ေရ႕မာ ထညရင prepending လ႔ေခၚၿပး ေနာကမာ ထညရငေတာ႔ postpending လ႔ေခၚပါတယ။

<?php $age = 5; ++$age;//Newvalueis6 $age++;//Newvalueis7

--$age;//Newvalueis6 $age--;//Newvalueis5

$bar=4; // Echo a prepended value echo++$bar;//Outputis5,newvalueis5

// Echo a postpended value echo$bar++;//Outputis5,newvalueis6 ?>Logical Operators

logical operators ေတြက ရငး ျပတ႔အခါမာ control structure ေတြမပါဘ ရငး ျပရဖ႔ ေတာေတာ ခကပါတယ။ ဆကစပေနတာကး ။ logical operators ေတြကေတာ႔ ေအာကပါအတငးျဖစပါတယ-

&& (AND) [Returns true if both expressions are true] || (OR) [Returns true if at least one expression is ture]

Page 56: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;56

rZÑdr pmay

XOR [Returns true if one expression is true, but not the other] ! [Returns true if the expression is not true] ထးစအတငးေလး ေလ႔ကင႔ၾကညၾကရေအာင။

<?php $age = true; $bar = false; //Printthestatementif$fooAND$bararetrue

if($age&&$bar){ echo 'Both $age and $bar are true. <br />'; } //Printthestatementif$ageOR$baristrue if($age||$bar){ echo'Atleastoneofthevariablesistrue.<br/>'; } //Printthestatementif$ageOR$baristrue,butnotboth if($agexor$bar){ echo'Onevariableistrue,andoneisfalse.<br/>'; } //Printthestatementif$barisNOTtrue if(!$bar){ echo '$bar is false. <br />'; } ?> ဒေလ႔ကင႔ခနးမာ $bar = true လ႔ ေျပာငးၿပး ကယတင ထပေလ႔လာၾကညပါ။

Page 57: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

57udkausmf

rZÑdr pmay

Using INCLUDES for Effi cient code

ခ ဆရင သငဟာ code ေတာေတာမားမားက ( တတာေတြေရာ မတတာေတြေရာ ) ေတာေတာေလး ေလ႔ကင႔ခ႔ ၿပးၿပေနာ။ သင႔ အေနန႔ code အတတ ေတြက ထပခါတလလ ျပနရကေနရတာ စတအေႏာက အယကျဖစေနမာဘ။ ဒေတာ႔ ခလမးမျဖစရေအာင တရာတရာ code ေတြက သးသန႔ လပထားမယ။ လအပတ႔အခါ လအပတ႔ေနရာ ေရာကမ ေခၚသးမယ။ ဒလလပရင မရဘးလား။ သပရတာေပါ႔။ PHP မာ include() ဆတ႔ statement ေလးတစခ ေခၚသးလကယဘ။ ဘယလ အလပလပသလဆရင script က parse လပတ႔အခါမာ parser ကခနက include ထက ေရးထားတ႔ဟာကပါ page ထက insert လပေပးပါတယ။ အားလး ၿပးသြားေတာ႔မ browser ေပၚက တငေပးတာပါ။ include statement ထမာ any fi le type extension က သးလ႔ရပါတယ။ တစခ႕ကေတာ႔ .inc ဆတာက သးပါတယ။ သင႔အေနန႔ .php ဆတ႔ extension ကလညး သးလ႔ရပါတယ။ ကၽြနေတာတ႔က php ေလ႔လာေနတာဆေတာ႔ .php န႔ သးၾကမယဗာ။ ဟတၿပ ဘယလ ေနရာေတြမာသးမလ ။ page တစခမာ အျမလလ ပါေနတတတာက header and footer ေတြမဟတလား။ စာမကႏာတငး နးပါးမာ ပါတတၾကပါတယ။ web pages 20 ရရင အခါ ၂၀ ေရးမလား။ ဘယေရးမလ။ တစခါဘေရးၿပး အခါ ၂၀ ေခၚသးမာေပါ႔။ dynamic website မာဆရင တစခါေရးၿပး ၾကကသေလာက ေခၚသးလ႔ရတယေနာ။ ကၽြနေတာတ႔ လကေတြ႕ေလ႔လာၾကညရေအာင။ header fi le ေလးတစခ ေရးလကမယ။ ရးရး လြယလြယေလး န႔ဘစ လကမယ။ <div style="text-align: center"> <p> Welcome to my movie review site! <br/> <?php date_default_timezone_set('Yangon/Asia'); echo 'Today is '; echo date('F d'); echo ', '; echo date('Y'); ?> <br/> </div >

Page 58: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;58

rZÑdr pmay

ဒ script က run လကရင ေအာကပါအတငး browser က ထတေပးမာပါ။

Welcome to my movie review site!Today is September 10, 2011

ဟတၿပ ဒscript က ေခၚသးမယ။ ဘယလ ေခၚရသလဆရင<?php include 'header.php'; ?> လ႔ ေခၚလကရင ပါၿပ။ မလြယဘးလား။ လြယတယေနာ။ ကၽြနေတာတ႔ ေရးခ႔တ႔ movie site က 3 page ေရးခ႔ၿပးၿပေလ။ moviesite.php, movie1.php, login.php ဆတ႔ဟာေတြေပါ႔။ အဒမာ <body> tag ၿပးတာန႔ ခနက <?php include 'header.php'; ?> က ေပါငးထညေပးလကပါ။

Page 59: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

59udkausmf

rZÑdr pmay

Using FUNCTIONS

PHP မာ သ႕ရ႕ built in function မားဟာ ျပညစမားျပားစြာ ပါ၀ငတညရပါတယ။ ဒါေပမယ႔လညး တစခါတစေလမာ ကယလခငတ႔ ပစရေအာင function ေတြက ကယ႔ဟာကလညး သတမတၿပးေရးလ႔ရပါေသးတယ။ function က ေရးခငရင function ဆတာန႔ စပါတယ။ ဥပမာ-

<?php function sayHello(){ echo"Hello,Mingalarpar"; } //Execute the function sayHello(); ?>

sayHello ဆတာကေတာ႔ function name ျဖစပါတယ။ () ထမာေတာ႔ argument ေတြထညလက ထညႏငပါတယ။ ဥပမာ-

<?php function meet($name){ echo"Hello,Mingalarpar$name"; } //Execute the function meet("Kokyaw"); ?>

ဘယလ အလပလပသလဆရင function ေတြက ေလ႔လာၾကညမယဆရင ေအာကကေန ျပန အလပလပတာလ႔ အလြယ မတထားလ႔ရပါတယ။ meet("Kokyaw") ဆတ႔ function က ေတြ႕မယ။ အဒကေနမာ သရ႕ function block ဆက သြားမယ။ function block မာ ေစခငးထားတ႔အတငး အလပလပမယ။ Kokyaw = $name ျဖစသြားမယ။ ေနာကဆး Hello, Mingalarpar Kokyaw ဆတာ ထြကလာတာပါဘ။

Page 60: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;60

rZÑdr pmay

Function block တစခက တစေနရာမာ name တစခန႔ေရးၿပးရင အဒါန႔ နာမညတ ေနာကထပ function တစခက ထပေရးခြင႔မရပါဘး။ Function ေတြကယတငက miniprogram ျဖစၿပး သတ႔ဟာ အျပငက variable ေတြက မသႏငပါဘး။ အျပငက variable ေတြက သတ႔ထက ထညသြငး ႏငဖ႔ဆရင global က သးရမာပါ။ Global ဆတ႔အထမာ default အေနန႔ $_POST, $_GET, $_SESSION, $_COOKIE and so on ေပါ႔ဗာ။ Function အေၾကာငး နညးနညး သသြားၿပဆေတာ႔ ကၽြနေတာတ႔ လကေတြ႕ သးၾကညရေအာင။ movie1.php က နညးနညးေလး ျပငေရးမယေနာ။ ျပငရငး ျပငရငး ေတာေတာေလး ျပငမလာၿပ။ con-cept မျပတေအာငေတာ႔ သတထားေနာ။

<?php //delete this line: setcookie('username', 'MgMg', time() + 60); session_start(); $_SESSION['username'] = $_POST['user']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; //Check username and password information if (($_SESSION['username'] == 'MgMg') and ($_SESSION['userpass'] == '12345')) { $_SESSION['authuser'] = 1; } else { echo 'Sorry, but you don\'t have permission to view this page!'; exit(); }?> <html> <head > <title> Find my Favorite Movie! </title > </head > <body> <?php include 'header.php'; ?>

</html>

Page 61: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

61udkausmf

rZÑdr pmay

<?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\" > "; echo "Click here to see information about my favorite movie!"; echo " </a > "; ?> <br/> <a href="moviesite.php?movienum=5">Click hereto see my top 5 movies.</a> <br/> <a href="moviesite.php?movienum=10">Click hereto see my top 10 movies.</a> </body> </html>

Higlight ျပထားတ႔ထက movienum ဆတာက သတထားမမာပါ။ အဒေကာငက moviesite.php မာ $_GET method န႔ ျပနေခၚၿပးသးမယဆတာ သတရေစခငတယ။ တစေခါကထဖတၿပး နားလညဖ႔ မတမဖ႔ ေတာေတာ ခကပါလမ႔မယ။ ဒေတာ႔ တစခါဖတၿပး တစခါ ခ ေရးၾကညပါ။ လကေတြ႕လပၾကညပါ။ မားမား ေရးပါ။ ကယ႔ဟာက သင႔ေတာသလ ျပနေျပာငး ေရးၾကညပါ။ ဒလဆရင ပၿပးနားလညလာမာပါ။

ကၽြနေတာတ႔ moviesite.php က နညးနညးေလး ထပေပါငးေရးၾကညမယ။ function ေလးကလညး လကေတြ႕ ကကေလ႔ကင႔ရငးေပါ႔။<?phpsession_start(); //check to see if user has logged in with a valid passwordif($_SESSION['authuser']!=1){echo'Sorry,butyoudon\'thavepermissiontoviewthispage!';exit();}?>

Page 62: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;62

rZÑdr pmay

<html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head> <body> <?php include 'header.php'; ?> <?php functionlistmovies_1(){ echo'1.ThaGyanMoe<br/>'; echo'2.SavingPrivateRyan<br/>'; echo'3.PearlHarbour<br/>'; echo'4.Enemyatthegate<br/>'; echo '5. Matrix <br/> '; }functionlistmovies_2(){ echo'6.Terminator2<br/>'; echo'7.StarWar<br/>'; echo '8. Tokyo Drifts <br/> '; echo '9. Sixteen Candles <br/> '; echo'10.Caddyshack<br/>'; }if(isset($_GET['favmovie'])){ echo'Welcometooursite,'; //deletethisline:echo$_COOKIE['username']; echo$_SESSION['username']; echo'!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate;

Page 63: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

63udkausmf

rZÑdr pmay

}else{ echo 'My top '; echo $_GET['movienum']; echo ' moiveis are: '; echo '<br />'; listmovies_1(); if($_GET['movienum']==10){ listmovies_2(); } } ?> </body> </html>How it works

ခ ဒမာဆရင If / else statement က ပါ သးထားပါတယ။ နားမလညရင ေရ႕မာ ရငးျပထားတာန႔ ေသခာ ျပနဖတၾကညဖ႔ တကတြနးပါတယ။ ကၽြနေတာတ႔ login ၀ငၿပးတာန႔ movie1.php က user က link ၃ ခေပးထားပါတယ။ favourite movie , Top 5 and Top 10 movies ေတြဆၿပးေတာ႔ ေပးထားပါတယ။ ဘယ link က ဘ ေရြးေရြး ( 5 or 10) $movienum ဆတ႔ variable ရ႕ value က ဘ ေရြးခယတာပါ။ ၿပးတာန႔ movieslite.php အလပလပပါတယ။ အဒမာ သက function ၂ ခက set up လပပါတယ။ listmovies_1 and listmovies_2 ေတြေပါ႔။ if (isset($_GET['favmovie'])) { ဆတာက ကၽြနေတာတ႔ ထပေပါငး ေရးခ႔ပါေသးတယ။ ဒမာ isset ဆတာက ဘာလဆေတာ႔ - isset function က variable သတမတထားတာ ရလား မရဘးလားဆတာ စစတာပါ။ သ႔ရ႕ ( variable) ရ႕ value ကေတာ႔ မစစပါဘး။ ဆလတာက favmovie ဆတာ သတမတထားတာရလား ။ ရရင ျပမယ။ မရရင မျပဘးေပ႔ါ။

Page 64: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;64

rZÑdr pmay

ALL about arrays ေရ႕မာလညး array အေၾကာငးက အတနအသင႔ရငးျပခ႔ၿပးပါၿပ။ ခ နညးနညးေလး ထပေပါငး ရငး ျပပါဥးမယ။ array န႔ one variable ေအာကမာ multiple data က store လပလ႔ရတယဆတာ သခ႔ၿပးၿပေနာ။ ထပရငးျပဥးမယ။

<?php $husband = array( 'firstname' => 'MgBa', 'lastname' => 'Oo', 'age' => 30 ); echo $husband['firstname']; ?> ဒမာ ထပေလ႔လာရမာက = က မသးဘ => က သးထားတာပါ။ ဒါဟာ ဘာအဓပၸာယလဆေတာ႔ key ေတြရ႕ value က assign လပတ႔အခါမာ => က သးရတာပါဘ။ ဒမာဆရင firstname က key ျဖစၿပး သ႔ value က MgBa ဆတ႔ဟာပါ။ ဒေတာ႔ array (key => value); ျဖစသြားတာေပါ႔။ ေနာကၿပးေတာ႔ ခလမး variable တစခထမာ store မလပဘ တစခခငးစလပမယဆလညး ေအာကပါအတငး array က တကရက လပလ႔ရပါတယ။ သ႔ရ႕ key က ဘယလ reference လပရသလဆရင-

<?Php $husband['firstname'] => 'MgBa'; $husband['lastname'] => 'Oo'; $husband['age'] => 30; ?> ဒလပစေတြက သငဟာ array အခနးမသငခငကတညး အသးျပခ႔ဖးပါတယ။ စဥးစားမပါသလား။ ကၽြနေတာတ႔ ေရ႕မာသးခ႔တ႔ $_POST, $_GET, $_COOKIE, $_SESSION တ႔ေတြေလ။ သတ႔ကလညး array ေတြပါဘ။

Page 65: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

65udkausmf

rZÑdr pmay

သင႔အေနန႔ array ေတြထမာ ေနာကထပ array ေတြ ထပေပါငးထညလ႔ရပါေသးတယ။ အဒါက ဘာလ႔ ေခၚလဆရင Multidimensional arrays လ႔ေခၚပါတယ။ ဥပမာတစခန႔ ရငးျပမယ။ စားပြတစလးမာ လႏစေယာက ထငေနတယ။ တကယလ႔ ေနာကထပ စားပြ တစလး ထပဆကၿပး လေနာကထပ ၂ ေယာကက ထပေပါငး ထငမယ။ သတ႔ရ႕ data ေတြက ဘယလ စမလ။ စနစတကစမယဆရင table 1 မာ ဘယသန႔ ဘယသ Table 2 မာက ဘယသန႔ဘယသ ... စသျဖင႔ စရမယေလ ဟတတယမလား။ အဒါက Code အေနန႔ ဒလေလးေရးလ႔ရပါတယ။ <?php $table[1]=array( 'husband'=>array( 'firstname'=>'MgBa'; 'lastname'=>'Oo'; 'age'=>30; ), 'wife'=>array( 'firstname'=>'MohMoh'; 'lastname' => 'Thu'; 'age'=>29; ) ); ?> ဟတၿပ။ တစေယာကေယာကက ေမးလကမယ။ Table 1 မာ ထငေနတ႔ သေတြရ႕ fi rstname ေတြက ဘာလ ေဟ႔ ဆရင သငက ေအာကပါအတငး ထတေပးလကယဘ။

<?php echo$table[1]['husband']['firstname']; echo ' and '; echo$table[1]['wife']['firstname']; ?>

Page 66: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;66

rZÑdr pmay

ဒလဆရင Output အေနန႔ MgBa and MohMoh ဆၿပး ထတေပးမာပါ။ (and ရ႕ ေရ႕န႔ေနာကမာ space bar တစခကစ ျခားထားတာက သတျပပါ။ )

ေနာကတစခက သင႔ အေနန႔ simple store အေနန႔ list တစခက သမးခငတယ။ key ေတြကလညး မသတမတခငဘး။ ဒလဆရင PHP က သ႔ဟာသ numeric keys ေတြန႔ auto assign လပသြားမာပါ။ သတျပရမာက auto လပတ႔အခါမာ 0 (သည) က စပါတယ။ ဥပမာ-

<?php $flavours[]='Blueberry'; $flavours[]='Sweety'; $flavours[]='Strawberry'; $flavours[]='Candy'; ?> ဒါက PHP က key က ဘယလ assign လပလကသလဆရင $flavours[0]= 'Blue berry'; $flavours[1]= 'Sweety'; $flavours[2]= 'Strawberry'; $flavours[3]= 'Candy'; ဆၿပး auto သ႔ဟာသ သတမတလကပါတယ။ သင႔အေနန႔က ဒါက ျမငရမာမဟတဘးေနာ။ စတထမာ မတထားဖ႔ဘ။ ဒေကာငက ဘယလေခၚသးရမလဆေတာ႔

<?php echo $flavours[0]; echo ' , '; echo $flavours[3]; ?> ဆရင output အေနန႔က Blue berry , Candy ဆၿပး ထြကလာမာပါ။ အခခနထ သပ အခကအခရမယ မထငဘး။

Page 67: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

67udkausmf

rZÑdr pmay

Sorting Arrays ကၽြနေတာတ႔က array ေတြရ႕ output ေတြက sorting လပလ႔ရပါတယ။ လပလ႔ရတ႔ နညးေတြထက ခ အေျခခန႔ပတသတၿပး နညးနညး ေျပာသြားပါမယ။

၁။ sort($array) : ဒါက array value ေတြက ႀကးစဥငယလကစတာပါ။ ascending value order ေပါ႔။ ၂။ rsort($array): ဒါက array value ေတြက ငယစဥႀကးလကစတာပါ။ descending value order ေပါ႔။

ထးစအတငး quick test ေလးလပၾကညမယ။

<?php $flavours[]='Blueberry'; $flavours[]='Sweety'; $flavours[]='Strawberry'; $flavours[]='Candy'; sort($flavours); print_r($flavours); ?>

ဒမာ print_r ဆတ႔ function ေလးအေၾကာငး နညးနညးရငးျပပါမယ။ သရ႕ တာ၀နကေတာ႔ variable ေတြက ထတျပဖ႔ဘျဖစပါတယ။ ဒလဆရင user ေတြအေနန႔ variable က ျမငရမာပါ။ ဘယမာ အသးျပတာမားသလဆရငေတာ႔ array ေတြက ျပနစစတ႔အခါမာ သးတာမားပါတယ။ ခတစခါ ကၽြနေတာတ႔ ေရးေနတ႔ moviesite.php က array ေပါငးမယ။ sorting လပမယ။ foreach သးမယ။ moviesite.php မာ higlight ျပထားတ႔ေနရာေတြက ျပငပါမယ။

Page 68: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;68

rZÑdr pmay

<?phpsession_start(); //check to see if user has logged in with a valid passwordif ($_SESSION['authuser'] !=1 ) { echo 'Sorry, but you don\'t have permission to view this page!'; exit();}?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head> <body> <?php include 'header.php'; ?> <?php $favmovies = array ( 'ThaGyanMoe', 'Saving Private Ryan', 'Pear Harbour', 'Enemy at the gate', 'Matrix', 'Terminator', 'Star war', 'Tokyo Drifts', 'Sixteen Caldles', 'Caddyshack' ); //delete this lines /*function listmovies_1() { echo '1. ThaGyanMoe <br/> '; echo '2. Saving Private Ryan <br/> '; echo '3. Pearl Harbour <br/> '; echo '4. Enemy at the gate <br/> '; echo '5. Matrix <br/> '; }

Page 69: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

69udkausmf

rZÑdr pmay

function listmovies_2() { echo '6. Terminator 2 <br/> '; echo '7. Star War <br/> '; echo '8. Tokyo Drifts <br/> '; echo '9. Sixteen Candles <br/> '; echo '10. Caddyshack <br/> '; } */ // End of deleted lines

if (isset($_GET['favmovie'])) { echo 'Welcome to our site, '; //delete this line: echo $_COOKIE['username']; echo $_SESSION['username']; echo '!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; } else { echo 'My top 10 favourites movies are :<br /> '; if (isset($_GET['sorted'])){ sort($favmovies); } echo '<ol>'; foreach($favmovies as $movie){ echo '<li>'; echo $movie; echo '</li>'; } echo '</ol>'; } ?> </body> </html>

Page 70: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;70

rZÑdr pmay

ေနာကတစခ movie1.php က ျပငဆငပါမယ။

<?php//delete this line: setcookie('username', 'MgMg', time() + 60);session_start();$_SESSION['username'] = $_POST['user'];$_SESSION['userpass'] = $_POST['pass'];$_SESSION['authuser'] = 0;//Check username and password informationif (($_SESSION['username'] == 'MgMg') and ($_SESSION['userpass'] == '12345')) { $_SESSION['authuser'] = 1;} else { echo 'Sorry, but you don\'t have permission to view this page!'; exit(); }?> <html> <head > <title> Find my Favorite Movie! </title > </head > <body> <?php include 'header.php'; ?> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\" > "; echo "Click here to see information about my favorite movie!"; echo " </a > "; ?> <br/> <!-- delete this lines <a href="moviesite.php?movienum=5">Click hereto see my top 5 movies.</a> <br/> <a href="moviesite.php?movienum=10">Click hereto see my top 10 movies.</a> End of deleted lines --> <a href="moviesite.php">Click here to see top 10 movies</a><br />

Page 71: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

71udkausmf

rZÑdr pmay

<a href="moviesite.php?sorted=true">Click here to see my top 10 movies sorted alpha-betically</a> </body> </html>

Page 72: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;72

rZÑdr pmay

How it works ပထမဆး movielist က $favmovies ထက array function န႔ ထညလကတယ။ ဒါဆရင သငဟာ foreach function ကသးၿပး array ထကဟာေတြက တစခခငးစ ထတျပႏငၿပေပါ႔။ ပမာျပထားတာကေတာ႔ array ကေန ထတေပးလကတာေတြက sorting ျပနလပၿပးမ ထတျပထားတာပါ။ $_GET['sorted'] ဆတ႔ variable က သးခ႔တာ ေတြ႕ပါလမ႔မယ။ ခဆရင သငဟာ movie list ထကဟာေတြက ထတျပႏငပါၿပ။ ဒါေပမယ႔ သငက ၂ ခ ၃ ခဘ ထတျပခငတယဆရငေရာ ... ??? ဘယလလပၾကမလ။ ဟတက႔.. ကၽြနေတာတ႔ ဆကၿပး ႀကးစားၾကညၾကပါမယ။

စဥးစားၾကညမယဆရင လသေလာက အေရအတြကကဘ ထတျပဖ႔ဆရင while loop က သးရမယေလ။ ဒေတာ႔ while loop ေလးက နညးနညးေလာက ျပနၾကညရေအာင။ <?php $num = 0; while ($num < 5) { $num = $num +1; echo $num; echo '<br />'; } ?> ေအာကက code ေတြက ထပၾကညပါဥး။ အလပလပပခငးက အတတဘ။ ကြသြားတာက do/while loop က သးတာပါ။ ဘာကြာသြားလဆရင while loop မာ condition တစခခမာ FALSE ျဖစႏငတယ။ အလ ျဖစသြားရင code ေတြက လး၀ execute လပေပးမာမဟတဘး။ တကယလ႔ do / while loop န႔သာဆရင FALSE ျဖစခ႔ရငေတာင အနညးဆး တစႀကမေတာ႔ execute လပေပးမာဘျဖစပါတယ။

<?php $num = 0; do{ $num=$num+1;

Page 73: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

73udkausmf

rZÑdr pmay

echo $num; echo '<br />'; }while($num<5) ?>

ခ while loop က အသးျပၾကညၾကရေအာင။ movie1.php က နညးနညး ျပငေရးပါမယ။ <?php //delete this line: setcookie('username', 'MgMg', time() + 60); session_start(); $_SESSION['username'] = $_POST['user']; $_SESSION['userpass'] = $_POST['pass']; $_SESSION['authuser'] = 0; //Check username and password information if (($_SESSION['username'] == 'MgMg') and ($_SESSION['userpass'] == '12345')) { $_SESSION['authuser'] = 1; } else { echo 'Sorry, but you don\'t have permission to view this page!'; exit(); }?> <html> <head > <title> Find my Favorite Movie! </title > </head > <body> <?php include 'header.php'; ?> <?php $myfavmovie = urlencode('Enemy at the gate'); echo " <a href=\"moviesite.php?favmovie=$myfavmovie\" > "; echo "Click here to see information about my favorite movie!"; echo " </a > "; ?>

Page 74: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;74

rZÑdr pmay

<br/> <!-- delete this lines <a href="moviesite.php?movienum=5">Click hereto see my top 5 movies.</a> <br/> <a href="moviesite.php?movienum=10">Click hereto see my top 10 movies.</a> End of deleted lines --> <!-- delete this lines <a href="moviesite.php">Click here to see top 10 movies</a><br /> <a href="moviesite.php?sorted=true">Click here to see my top 10 movies sorted alphabetically</a> End of deleted lines --> <br /> Or choose how many movies you would like to see?<br /> <form action ="moviesite.php" method="POST"> <p>Enter movies number up to 10:<input type="text" name="num" maxlength="2" size="2" /><br /> Check to sort them alphabetically: <input type="checkbox" name="sorted" /> </p> <input type="submit" name="submit" value="Submit" /> </form> </body> </html>

moviesite.php ကလညး နညးနညးေလး ျပငေရးဖ႔ လပါတယ။ ေအာကပါအတငးေလးျပငေပးပါ။

Page 75: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

75udkausmf

rZÑdr pmay

<?php session_start(); //check to see if user has logged in with a valid password if($_SESSION['authuser']!=1){ echo'Sorry,butyoudon\'thavepermissiontoviewthispage!'; exit(); } ?> <html> <head> <title> My Movie Site - <?php echo $_GET['favmovie']; ?> </title> </head> <body> <?php include 'header.php'; ?> <?php $favmovies=array( 'ThaGyanMoe', 'SavingPrivateRyan', 'PearHarbour', 'Enemyatthegate', 'Matrix', 'Terminator', 'Starwar', 'TokyoDrifts', 'SixteenCaldles', 'Caddyshack' ); //delete this lines /*functionlistmovies_1(){ echo'1.ThaGyanMoe<br/>'; echo'2.SavingPrivateRyan<br/>'; echo'3.PearlHarbour<br/>'; echo'4.Enemyatthegate<br/>'; echo '5. Matrix <br/> '; }

Page 76: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;76

rZÑdr pmay

functionlistmovies_2(){ echo'6.Terminator2<br/>'; echo'7.StarWar<br/>'; echo '8. Tokyo Drifts <br/> '; echo '9. Sixteen Candles <br/> '; echo '10. Caddyshack <br/> '; } */ // End of deleted lines if (isset($_GET['favmovie'])) { echo 'Welcome to our site, '; //delete this line: echo $_COOKIE['username']; echo $_SESSION['username']; echo '!<br/>'; echo 'My favorite movie is '; echo $_GET['favmovie']; echo ' <br/> '; $movierate = 5; echo 'My movie rating for this movie is: '; echo $movierate; } else { echo 'My top '.$_POST['num'].' favourites movies<br /> '; if (isset($_POST['sorted'])){ sort($favmovies); echo 'sorted alphabetically: '; } echo ' are : <br />'; // delete these lines /* echo '<ol>'; foreach($favmovies as $movie){ echo '<li>'; echo $movie; echo '</li>'; } echo '</ol>'; //end of deleted lines

Page 77: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

77udkausmf

rZÑdr pmay

*/ $numlist = 0; echo '<ol>'; while($numlist < $_POST['num']){ echo '<li>'; echo $favmovies[$numlist]; echo '</li>'; $numlist = $numlist + 1; } echo '</ol>'; } ?> </body> </html>

Page 78: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;78

rZÑdr pmay

How it works ကၽြနတာတ႔က echo statement မာ trick ေလးနညးနညးေလး ထပထညလကပါတယ။ ' .$_POST['num']. ' ဆတာေလးပါ။ ဒါဆရင သငက 4 ခက ေရြးရင 4 လ႔ေပၚေနမာျဖစၿပး 5 ကေရြးခ႔ရင 5 လ႔ေပၚေနမာဘျဖစပါတယ။ $_POST['num'] မာ movie အေရအတြက ဘယေလာက ထတေပးရမလဆတာက သငက ေရြးခယေပးရပါတယ။ movie1.php file မာ user input form အေနန႔ထညေပးထားပါတယ။ ေနာကဆးေရးခ႔တ႔ while block ေလးကၾကညပါ။ အဒမာ increment 1 က while block ရ႕ last statemnet ျဖစၿပးေတာ႔ ေရ႕မာ ျပခ႔တ႔ နမနာေတြ အရ စဥးစားၾကညမယဆရင ပထမဆး Ans က $favmovies[1] ျဖစသင႔တာေပါ႔။ ဒလဆရင ပထမဆး movie title က skipped over ျဖစသြားၿပ။ PHP ရ႕ automatic number arrays သေဘာတရား အရ 0 (သည) က စတာမဟတဘးလား။ ဒလ problem မးက off by one error လ႔ေခၚၿပး arrays ေတြသးရင ေတြ႕ ၾကရေလ႔ရတ႔ common prob-lem ဘျဖစပါတယ။

Page 79: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

79udkausmf

rZÑdr pmay

ဒါေၾကာင႔မ႔လ႔ pointer variable ေတြယတ႔ေနရာမာ ေသခာ စဥးစားၿပးမ ယသင႔တယ။ $numlist = 0 က စခ႔ေတာ႔ ပထမဆး အေျဖက $favmoives[0] ျဖစသြားမယ။ ၿပးရင ၁ ေပါငးမယ။ ဒါေလးက ေသခာစဥးစားၿပး ေလ႔လာဖ႔ အႀကျပလပါတယ။

concatenateconcatenate ဆတာက quote ေတြကေန virtually undetected ျဖစေအာင

လပေဆာငေပးတာပါ။ . (dot) ေလး ခၿပးသးရပါတယ။ ေအာကပါနမနာေလးကၾကညပါ။echo 'My top ' . $_POST['num'] . 'movies';

Page 80: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;80

rZÑdr pmay

Exercises

For chapter (2)1. Go back to your date.php file, and, instead of displaying only the number of days in the current month, add a few lines that say: The month is . There are days in this month. There are months left in the current year. 2. On your movie web site, write a file that displays the following line at the bottom center of every page of your site, with a link to your e -mail address. This site developed by: ENTER YOUR NAME HERE .3. Write a program that displays a different message based on the time of day. For example, have the site display "Good Morning!" if it is accessed in the morning.4. Write a program that formats a block of text (to be input by the user) based on preferences chosen by the user. Give your user options for color of text, font choice, and size. Display the output on a new page.5. In the program you created in step 4, allow your users the option of saving the information for the next time they visit. If they choose "yes," save the information in a cookie.6. Using functions, write a program that keeps track of how many times a visi-tor has loaded the page.

Page 81: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

81udkausmf

rZÑdr pmay

Chapter(3)Using PHP with MySQL

အခဆရင သငဟာ PHP န႔ ေတာေတာေလးက ရငးႏးခ႔ၿပးၿပေနာ။ function ေတြသးတတေနၿပ။ include ေတြဘာေတြန႔ေတာင တြသးတတေနၿပ။ ဒအခနးမာေတာ႔ PHP က MySQL database type န႔ ဘယလ ဆကစပ အသးျပရသလဆတာက သငေပးသြားမာပါ။ ဒါမ dynamic website တစခက အေျခခကက လပႏငမာပါ။ သင႔ အေနန႔ MySQL က သၿပးသားျဖစခငလညးျဖစမယ။ မသရေသးသေတြအတြက MySQL က အေျခခက စၿပး ျဖညးျဖညးခငး ရငးလငးသြားပါမယ။ ဒသငခနးစာၿပးသြားရင သင႔အေနန႔ - -MySQL database က နားလညသြားပါမယ။ -MySQL database ထက Data ေတြက ၾကညႏငမယ။ -သင႔ရ႕ website ကေန database က လမးခတဆကႏငပါမယ။ -သင႔ website ရ႕ လအပတ႔ေနရာမာလအပတ႔ data က ဘ သးျခား ထတယႏငမယ။ -Problems တစခ႕က သငကယတင ေျဖရငးတတလာမယ။

Overview of MySQL structure and Syntax database ဆတာ information ေတြက Store လပထားတ႔ဟာဘျဖစပါတယ။ တစစတစေယာကက အေၾကာငးအရာတစခ သ႔မဟတ တစခထကပတာေတြက record လပထားမယ ၿပးရင ကနတ႔သေတြက access လပႏငရမယ။ ေဒတာေဘစ႔ထမာ name , address, phone number, medical record, police record, email address, sale transaction, music or video informations, and more... ေတြ မတထားေလ႔ရပါတယ။ သင႔ အေနန႔ကေတာ႔ ကၽြနေတာတ႔ ေရ႕သငခနးစာမာလပခ႔တ႔ movie ကဘ ဆကလပသြားရမာပါ။ MySQL commands ေတြက com-mand promt သ႔မဟတ PHP ကေန ေပးႏငပါတယ။ ကၽြနေတာတ႔ ခက စၿပး PHP န႔ဘ ေပးမာပါ။

MySQL structure MySQL structure က နညးနညးေလး ရငးျပပါဥးမယ။ MySQL database က relational da-tabase system ပါ။ relational database system မာ information ေတြက separate လပၿပး tables ေတြထမာ သမးဆညးထားလ႔ရတယ။

Page 82: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;82

rZÑdr pmay

ဒါမမဟတ group လပၿပး သမးလ႔ရပါတယ။ table တစခခငးစထမာလညး မတညတ႔ fields ေတြ ထပရလ႔ရပါေသးတယ။ Eg. table တစခထမာ field တစခက firstname ျဖစၿပးေတာ႔ ေနာက field တစခမာ သ႔ရ႕ last name ေပါ႔။ ေဒတာေတြက တစခခငးစ က လသလ ထတသးႏငဖ႔ဆရာ Data structure က တညေဆာကတ႔ေပၚမာလညး မတညပါတယ။ Field ေတြက text, date, numbers , and so on ေတြက ကငတြယ ထနးသမးႏငပါတယ။ သငတညေဆာကမယ႔ MySQL tables ေတြကေတာ႔ သင ဘယလ information မးက သမးမလဆတ႔ အေပၚ မတညၿပး ကြျပား ႏငပါတယ။ MySQL ဟာ tables ေတြက linked ခတေပးႏငပါတယ။ tables ေတြထမာ ပါတ႔ တစခ႕ fields ေတြရ႕ values ေတြဟာ တတ ေတြဘျဖစပါတယ။ ဥပမာ .. table တစခမာ Customer's_ID, Customer's name, Customer's address ေတြပါမယ။ ေနာက table တစခထမာ Customer's_ID, Customer's past order ပါမယ။ ဒါဆရင common အေနန႔ Customer's_ID field ျဖစၿပးေတာ႔ ID number က တတ ျဖစတ႔အတြက table ႏစခက linked together လပလ႔ရပါတယ။ ဒါက ဘာက ျပေပးႏငသလဆရင table ၂ ခလးမာ ရတ႔ data ေတြက တစခါတညးန႔ သင႔က ျပေပးႏငပါတယ။ ဘာလ႔ဆေတာ႔ ဆကစပေနတာကး ။

MySQL field type Description Example

char(length Any character - based data can be stored in this field, but the field will have a fixed length denoted by the value in the parentheses

Customer’s State field always has two char-acters and would use char(2)

varchar(length Any character - based data can be in this field, and the data can vary in length from 0 up to 255 characters. The maximum length of the field is denoted in parentheses.

Customer ’s Address field has letters and numbers and varies in length

int(length Integers that can range from 2,147,483,648 to +2,147,483,647 can be stored in this field. The length parameter limits the number of digits that can be shown, not the value. Mathematical functions can be performed on data in this field.

Quantity of a product on hand.

Page 83: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

83udkausmf

rZÑdr pmay

MySQL fi eld type Description Example

int(length) unsigned Positive integers (and zero) up to 4,294,967,295 can be in this fi eld. The length parameter limits the number of digits that can be displayed. Mathematical functions can be performed on data in this fi eld.

Customer ID (if en-tirely numerical)

text Any character - based data can be in this fi eld, with a maximum size of 65,536 characters.

Comments fi eld that allows longer text to be stored without lim-iting the fi eld to 255 characters

decimal(length,dec) Numeric fi eld that can store deci-mals. The length parameter limits the number of digits that can be displayed, and the dec parameter limits the number of decimal places that can be stored.

Prices. For example, a price fi eld that would store prices up to 999.99 would be de-fi ned as decimal(5,2)

enum( “ option1 ” , “ op-tion2 ” , ...

Allows only certain values to be stored in this fi eld, such as “ true ” and “ false , ” or a list of states. 65,535 different options are allowed.

Gender fi eld for your users will have a value of either “ male ” or “ female. ”

date Stores a date in YYYY - MM - DD format.

Date of an order, a birthday, or the date a user joined as a regis-tered user

time Stores time in hh:mm:ss format. Time a news article was added to the web site.

datetime Multipurpose fi eld that stores both the date and time together as YYYY - MM - DD hh:mm:ss

Last date and time a user visited your web page

Page 84: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;84

rZÑdr pmay

အေပၚဇယားမာ ျပခ႔တာေတြက အဓက အမားဆး သးေနတာေတြျဖစပါတယ။ ေအာကမာ ျပထားတ႔ဟာေတြကေတာ႔ တစခါတစရမာ ကယရ႕ လအပခကေပၚမတညၿပး သးရတ႔ဟာေတြျဖစပါတယ။

MySQL field type Description

year(length Stores a year. By default, the year is four digits, though it is pos-sible to specify a two - digit format by using the length parameter.

tinyint(length Numeric field that stores integers from - 128 to 127. (Adding the unsigned parameter allows storage of 0 to 255.)

smallint(length) Numeric field that stores integers from - 32,768 to 32,767. (Adding the unsigned parameter allows storage of 0 to 65,535.)

mediumint(length) Numeric field that stores integers from - 8,388,608 to 8,388,607. (Adding the unsigned parameter allows storage of 0 to 16,777,215.)

bigint(length) Numeric field that stores integers from 9,223,372,036,854,775,808 to 9,223,372,036,854,775,807. (Adding the unsigned parameter allows storage of 0 to 18,446,744,073,709,551,615.)

tinytext Allows storage of up to 255 characters.

mediumtext Allows storage of up to 1,677,215 characters

longtext Allows storage of up to 4,294,967,295 characters.

blob Equal to a text field, except that it is case - sensitive when sort-ing and comparing. Stores up to 65,535 characters. blob and its derivatives (which follow) are generally used to store binary data.

tinyblob Equal to the tinytext field, except that it is case - sensitive when sorting and comparing; see blob , above.

mediumblob Equal to the mediumtext field, except that it is case-sensitive when sorting and comparing; see blob , above.

longblob Equal to the longtext field, except that it is case - sensitive when sorting and comparing; see blob , above.

Page 85: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

85udkausmf

rZÑdr pmay

Choosing the right fi eld type

သငဟာ database တစခလပေတာ႔မယဆရင ဘယ fi eld type က ေရြးမယဆတာ ႀကတငစဥးစားသင႔ပါတယ။ ဒလ စဥးစားႏငဖ႔အတြက ေအာကမာ ေမးခြနးေလးေတြန႔ ျပထားေပးပါတယ။ ကယ႔ကယက ေမးခြနးေမးၾကညပါ။ ၁။ Field တစခမာ numbers and letters ေတြ ႏစခလး ပါမာလား။ အေျဖက Yes ဆရင သင႔အေနန႔ char, varchar, text, tinytext, mediumtext, longtext, blob, tinyblob, longblob ေတြက စဥးစားရမာပါ။ ေနာကၿပး ထပေမးပါ။ characters ဘယေလာေလာက ပါႏငသလေပါ႔။ တကယလ႔ေပါ႔ ၁။ 0-255 characters, variable length ဆရင varchar က သးသင႔တယ။ space ေတြကလညး ထညတြကမာျဖစပါတယ။ ၂။ 256-65536 characters ဆရင text က သးသင႔တယ။ ၃။ 65537-1677215 characters ဆရင mediumtext က သးသင႔တယ။ ၄။ 1677216-4294967295 characters ဆရင longtext ကသးသင႔တယ။ ၅။ သငအသးျပမယ႔ဟာက letter or number ျဖစတ႔အျပင fi nite number ေတြပါခ႔မယဆရင enum က သးရပါမယ။ ၆။ သငအသးျပမယ႔ထမာ date သ႔မဟတ time only ဆရင timestamp က အသးျပရမယ။ ႏစခလးအတြက တစခါတညး သမးမယဆရင datetime ကသးရမယ။ year တစခတညးဆရင year က အသးျပလ႔ရပါတယ။

Page 86: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;86

rZÑdr pmay

၇။ ကယအသးျပမယ႔ fields မာ numbers and mathematical functions ေတြဘပါမယဆရင ေအာကပါ တ႔က အသးျပမယ႔ size ေပၚမတညၿပး သးႏငပါတယ - (ကက) -127 to 127 use tinyint (ခခ) -32768 to 32767 use smallint (ဂဂ) -8388608 to 8388607 use mediumint (ဃဃ) -2147483648 to 2147483647 use int (ငင) -9223372036854775808 to 9223372036854775807 use bigint (စစ) Integers from 0 to 255, use tinyint unsigned. (ဆဆ) Integers from 0 to 65,535, use smallint unsigned. (ဇဇ) Integers from 0 to 16,777,215, use mediumint unsigned. (စစ) Integers from 0 to 4,294,967,295, use int unsigned. (ညည) Integers from 0 to 18,446,744,073,709,551,615, use bigint unsigned. (ဋဋ) Decimals with fixed decimal places, use dec

null or not null

MySQL server က database ထမာ ရတ႔ field ေတြဟာ အလြတ ျဖစႏငသလား မျဖစႏငဘးလားဆတာကလညး သက ဆနးစစပါတယ။ ျဖစႏင မျဖစႏငဆတာက မမဘာသာ null , not null ဆတာန႔ သတမတေပးရတာဘျဖစပါ တယ ။ null လ႔ သတမတလကရင အဒ field မာ ဘာမမရလညးျဖစပါတယ။ တကယလ႔ not null လ႔သာ သတမတ လကမယဆရင field ထမာ some-thing or anything တစခခ ရရမာျဖစပါတယ။ သည (0) ဟာဆရင quantity အေနန႔ ဘာမမရေပမယ႔ data အေနန႔ၾကညမယဆရငေတာ႔ something ျဖစပါတယ။ not null သတမတထားတ႔ Field တစခမာ သငက ဘာမ မျဖညခ႔မဘးဆရင MySQL က အဒေနရာမာ something အေနန႔ 0 (သည) က default အေနန႔ ထညေပးမာျဖစပါတယ။ ဒါေၾကာင႔မ႔လ႔လညး Data validation လပမယဆရင MySQL data check ေပၚ မမခသင႔ပါဘး။ PHP ေပၚမာသာ ပၿပးလပသင႔ပါတယ။ ေနာကပငး စာအပမာ data validation ေတြကပါ ေရးသားသြားဖ႔ ရပါတယ။

Page 87: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

87udkausmf

rZÑdr pmay

Indexes

MySQL ဟာ သ႔ထမာ ရတ႔ data ေတြက ရာတ႔အခါမာ ျမနဆနေစဖ႔အတြက in-dex က သးပါတယ။ ဥပမာ အေနန႔ ေျပာျပရရင သငဟာ စတးဆငတစခရ႕ manager ဆပါစ႔။ ဒေတာ႔ သငက စာရငးဇယားေတြက ထနးသမးရေတာ႔မယ။ receipt ေတြက ထနးရမယ။ သင႔မာ ေဘာကခာေတြ အမားရလာၿပ။ အ၀တအထညေဘာကခာေတြ၊ ႏ႔ဆေဘာကခာေတြ၊ သယယပ႔ေဆာငခေဘာကခာေတြ..စသျဖင႔ အမားႀကးရလာၿပ ။ သငက ဒါေတြက ဒအတငးဘ သမးထားလကမယ။ ေန႔စဥေဘာကခာေတြက ၅ ႏစေလာကၾကာလာတ႔အခါမာ သင႔မာ ေထာငန႔ ေသာငးန႔ခရလာမယေလ။ တစရကမာ သေဌးက လြနခ႔တ႔ ၄ ႏစေလာကက Levis ဂငးေဘာငးဘ ေဘာကခာ တစခက ေတာငးမယဆပါေတာ႔။ သင ရာရၿပေလ။ တစရြကခငးတစခခငး ရာရၿပ။ သင႔မာ ေဒတာ က ရတယ။ ဒါေပမယ႔ ေသခာ စနစတက မစထားခ႔ေတာ႔ ရာရခကေနၿပ။ အစကတညးက ႏစအလက ၊ ႏစအလကမာမ ပစၥညး အမးအစားအလက ေသခာ စနစတက ခြထတထားၿပး သမးထားခ႔မယဆရင ျမနျမနဆနဆန ရာလ႔ရတာေပါ႔။ ၂၀၀၆ ခႏစကေဘာကခာကေတာငးရင ၂၀၀၆ ထသြားရာလကယဘ။ ဒအထမာမ ဂငးေဘာငးဘဆရင ၂၀၀၆ ခႏစ ဂငးေဘာငးဘ ဆတ႔ အထသြားရာလကရင သငလခငတာ ခကခငးရၿပေလ။ MySQL မာလညး ဒလဘ ။ သ႔ အမးအစားလကေလးေတြ ခြထားေပးတာက index လပတယလ႔ ေခၚပါတယ။ MySQL ta-ble ေတြမာindex အနညးဆး တစခ လပါတယ။ ဘာန႔ သတမတသလဆရင primary key ဆတာန႔သတမတပါတယ။ ဒ fi eld ဟာဆရင not null or UNIQUE ျဖစရပါမယ။ ဥပမာ Customer ID ေပါ႔။ Customer တစေယာကစဟာ နာမည တေတြ ရႏငပါတယ။ ဥပမာ သင႔ဆမာ MgMg ဆတ႔ Cus-tomer ဆတ႔ အမညတ ၂ ေယာကရတယဆပါစ႔။ သတ႔က နာမည ဘ တႏငပါတယ။ ကၽြနေတာတ႔ Database ထမာေတာ႔ Customer ID ၂ ခန႔ မတထားၿပေလ။ ၁ န႔ ၂ ေပါ႔။ Customer ID 1 ရ႕ receipt ေတြကဘလခငတယဆရငလညး ရၿပေလ။ လြယလြယကက န႔ ထတေပးလ႔ရၿပ။

Auto-Increment

fi eld တစခမာ data record တစခ ထပေပါငးလာတငး automatic ၁ ေပါငးေပးခငတယဆရင auto increment က သးရပါတယ။ တစခ႕ေနရာေတြမာ ဒေကာငက ေတာေတာက အသး၀ငပါတယ။ ဥပမာ Customer ID နပါတ သတမတမယဆပါစ႔။

Page 88: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;88

rZÑdr pmay

ပထမတစေယာကက နပါတ ၁ ေနာက ၂ ၊ ၃၊ ၄၊ သ႔ဟာသ အစဥအတငး ေပါငးေပးသြားတာပါ။ သ႔ရ႕ command ကေတာ႔ auto_increment ျဖစပါတယ။

Types of MySQL Tables and Storage Engine ခဆရင သငဟာ tables ေတြရ႕ general features ေတြက သရၿပးတ႔ေနာကမာ ထပသရမာက Tables type ႏစမးရတယဆတာကပါ။ transaction-safe tables (TSTs) and Non-transaction-saffe tables (NTSTs) ေတြဘျဖစပါတယ။ Transaction-safe table မာဆရင lost ျဖစသြားတ႔ data ေတြက recoverd လပလ႔ရပါတယ။ ခကခငးလပလကတ႔ data changes ေတြကလညး roll-back ျပနလပလ႔ရပါတယ။ Non-transaction-safe table ကေတာ႔ memory usage က သးရာမာ ပ နညးၿပး ပလညး ျမနျမနဆနဆနလပပါတယ။ ဒါေပမယ႔ သ႔မာ data ေတြ lost ျဖစသြားရင recovery လပလ႔မရပါဘး။ permanent delete ျဖစသြားတာပါ။ တစခခမားသြားရင rollback ျပနလပလ႔မရပါဘး။ MySQL မာ storage engine ေတြ အမားႀကးရပါတယ။ အဒထက most common ကေတာ႔ ေအာကပါအတငး ျဖစပါတယ။ -MyISAM -MERGE -MEMORY -InnoDB -BDB MyISAM သကေတာ႔ MySQL ရ႕ default enging ျဖစၿပးေတာ႔ Non-transaction-safe table က sup-port လပပါတယ။ MySQL ရ႕ field type အားလး ၊ parameters and functions အားလးက support လပပါတယ။

MERGE သကေတာ႔ ထပတကတ႔ MyISAM tables ေတြက တစခတညးအျဖစ manipulate လပေပးႏငပါတယ။ သလညး Non-transaction-safe tables က support လပပါတယ။

Page 89: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

89udkausmf

rZÑdr pmay

MEMORY Temporary tables ေတြမာ အမားဆး အသးျပပါတယ ဘာျဖစလ႔လဆေတာ႔ သက အရမးက ျမနဆနစြာ အလပလပႏငတ႔အတြကေၾကာင႔ဘျဖစပါတယ။ ဒါေပမယ႔ MyISAM table ေတြရ႕ features ေတာေတာမားမားက support မလပႏငပါဘး ။ ဥပမာ auto_increment or blob/text columns ။ သ႔က Log fi le ေတြန႔ သးတ႔ ေနရာမာ သးတာမားပါတယ။ Memory ထမာ မတထားတာျဖစတ႔အတြက စကက shutdown ခလကရင ေပာကသြားမာပါ။ NTSTs ကဘ support လပပါတယ။

InnoDB သကေတာ႔ transaction-safe table က support လပပါတယ။ အရမးကႀကးတ႔ database ေတြမာ သးပါတယ။

BDBBDB or BerkeleyDB လ႔လညးေခၚၿပးေတာ႔ transaction-safe table က support လပပါတယ။

သလညး အရမးႀကးတ႔ applications ေတြက InnoDB လဘ သးႏငပါတယ။

MySQL syntax and commands

MySQL command ေတြက shell command promt ကေန တကရက ျပလပႏငေပမယ႔ ကၽြနေတာတ႔က PHP ကေလ႔လာေနတာဆေတာ႔ PHP န႔ဘလပတာကဘ ေျပာသြားပါမယ။ MySQL command ေတြက ေရးတ႔အခါမာ CAPITAL LETTERS ေတြန႔ဘ ေရးေလ႔ေရးထရပါတယ။ မေရးလညးရပါတယ။ ဒလေရးခငးအားျဖင႔ MySQL command ေတြန႔ da-tabase , variables, tables ေတြန႔ ကြကြျပားျပား ျမငရႏငပါတယ။ ခ သငခနးစာမာ အသးျပသြားမယ႔ MySQL commands ေတြက ေအာကပါအတငးျဖစပါတယ။

CREATE : Creates new databases and tables ALTER : Modifi es existing tables SELECT : Chooses the data you want DELETE : Erases the data from your table

Page 90: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;90

rZÑdr pmay

DESCRIBE : Lets you know the structure and specifics of the table INSERT INTO tablename VALUES : Puts values into the table UPDATE : Lets you modify data already in a table DROP : Deletes an entire table or database

PHP န႔ MySQL database က ေကာငးေကာငး ခတဆကႏငဖ႔ သင႔ အေနန႔ steps အနညးငယက သထားဖ႔ လပါတယ။ အသးမားတ႔ functions ေတြထက most commonly ျဖစတ႔ functions တစခ႕က ေဖာျပေပးလကပါတယ။

mysql_connect([$host[, $username[, $password]]]):ConnectstotheMySQLserver nd returns a resource which is used to reference the connection. mysql_select_db($database[, $resource]) : Equivalent to the MySQL com-mand USE and sets the active database. mysql_query($query[, $resource]):UsedtosendanyMySQLcommandtothedatabaseserver.InthecaseofSELECTqueries,areferencetotheresultsetwill be returned. mysql_fetch_array($result):Returnarowofdatafromthequery’sresultsetasanassociativearray,numericarrayorboth.mysql_fetch_assoc($result) : Return a row of data from the query ’ s result set as an associative array. mysql_error([$resource]) : Shows the error message generated by the previ-ous query အခခနမာ သင႔အေနန႔ MySQL commands ေတြက အစမးသကသကျဖစေနမာပါ။ စတမပပါန႔ ဆကၿပး ဖတသြားပါ။ ေရးရငးေရးရငး န႔ ဒါေတြဟာ used to ျဖစလာမာပါ။

MySQL commands ေတြက mysql_query သးၿပး PHP ကေန ပ႔လ႔ရပါတယ။ ဒလပ႔တ႔ေနရာမာ variable သၿပးပ႔တာန႔ တကရကပ႔တာဆၿပး ရပါတယ။ ေအာကက ဥပမာကေတာ႔ တကရက ပ႔တာပါ။

Page 91: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

91udkausmf

rZÑdr pmay

$results = mysql_query('SELECT * FROM TABLE');

အေပၚကလေရးတာထကစာရင ေအာကပါအတငး အဆင႔ ၂ ဆင႔န႔ ေရးတာက ပေကာငးပါတယ။

$query = 'SELECT * FROM TABLE'; $result = mysql_query($query); ဒလေရးျခငးအားျဖင႔ သငေရးလကတ႔ command ဟာ error တစခခရခ႔ရငသ႔မဟတ bug တစခခ ရခ႔ရင သင႔အေနန႔ $query မာ ရာျပငရတာ လြယကပါတယ။ result အေနန႔ကေတာ႔ အေပၚက အတငးဘျဖစျဖစ ေအာကကအတငးဘျဖစျဖစ အတတဘရမာပါဘ။ ဒ စာအပမာေတာ႔ ဒတယနညးလမးကဘ အမားဆး အသးျပၿပး ေဖာျပသြားမာျဖစပါတယ။

Connecting to the MySQL server

ပထမဆး အေနန႔ MySQL က သးဖ႔ဆရင MySQL server န႔ ခတဆကဖ႔လပါတယ။ ဆာဗာန႔ခတဆကဖ႔ အတြက ဆာဗာမာ သင အစကတညးက သတမတထားတ႔ Host name, user-name and password ေတြလပါတယ။ Host name: Host name ဆတာ သင MySQL server တငထားတ႔ေနရာဘျဖစပါတယ။ ခ သငခနးစာမာေတာ႔ localhost ဘျဖစပါတယ။ ဘာျဖစလ႔လဆေတာ႔ သင install လပသမအားလးသည locally အတြငးမာဘျဖစေနတ႔အတြကေၾကာင႔ဘျဖစပါတယ။ တစျခား ဆာဗာကဟာက သးမယဆရငေတာ႔ အဒ server က ထညေပးရမာပါ။ Username and password: Server ရ႕ user-name န႔ password ေတြကေျပာတာဘျဖစပါတယ။ ခ သငခနးစာမာ username က root ျဖစၿပးေတာ႔ password ကေတာ႔ blank (ပါတစေ၀ါ႔မထားဘး) ျဖစပါတယ။ MySQL က connect လပရာမာ mysql_connect() ဆတ႔ function န႔ လပမာျဖစပါတယ။ PHP/MySQL န႔ ပါတသတသမ statements အားလးက variables န႔ သးလ႔ရသလ Plain text အေနန႔လညး သးလ႔ရပါတယ။ နမနာ အေနန႔ $host= 'localhost'; $user= 'root';

Page 92: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;92

rZÑdr pmay

$pass= ''; $db = mysql_connect($host, $user, $pass);

ေအာကမာ ထပၾကညပါဥး။ ဒါက plain text အေနန႔ တစခါတညး ျပတာပါ။ $db = mysql_connect('localhost', 'root', '');

အလပလပပျခငးကေတာ႔ အတတဘျဖစပါတယ။

Looking at a Ready-made Database ကၽြနေတာတ႔ ေရ႕က သငခနးစာမာ moviesite န႔ပါတသတတ႔ PHP code ေတြက ေရးခ႔တယ ။ ခ တစခါ အဒေရးၿပးသား site က Database တစခန႔ တြေပးလကမယ။ Database ထမာ ဘာေတြပါမလဆရင - movie table : ထမာ movie န႔ပါတသတတ႔ name and movie information ပါမယ။ movietype table: ထမာ မတညတ႔ movie ေတြရ႕ category ေတြပါမယ။ people table : ထမာေတာ႔ movie ေတြရ႕ actor name and directors နာမညေတြပါမာပါ။ ဟတၿပ။ Table တစခက ဘယလ Create လပမလ။ သ႔ရ common ပစေလးက ဒလပါ-

CREATE TABLE [IF NOT EXISTS] tablename ( fieldname definition, ... [key definitions] ) table options

Page 93: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

93udkausmf

rZÑdr pmay

Insert command က ေရးတ႔ ပစကေတာ႔

INSERT INTO tablename ( fi eld names ...) VALUES (fi eld values...)

ဒ command ႏစခအတြက အေျခခအေနန႔ ခခနမာ ဒေလာက သထားရငရပါၿပ။ ကၽြနေတာတ႔ လကေတြ႔ တစခေလာက ေရးၾကညမယေလ။ ဒါက db1.php ဆၿပး နာမညေပးပါမယ။ <?php

$db = mysql_connect('localhost','root','') or die('Cannot connect to mysql database');mysql_select_db('moviesite',$db) or die(mysql_error($db)); //Create the movie table$query = 'CREATE TABLE IF NOT EXISTS movie ( movie_id INT UNSIGNED NOT NULL AUTO_INCREMENT, movie_name VARCHAR(255) NOT NULL, movie_type TINYINT NOT NULL DEFAULT 0, movie_year SMALLINT UNSIGNED NOT NULL DEFAULT 0, movie_leadactor INTEGER UNSIGNED NOT NULL DEFAULT 0, movie_director INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (movie_id),

KEY (movie_type, movie_year)) ENGINE MYISAM' ;

mysql_query($query,$db) or die(mysql_error($db));

Page 94: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;94

rZÑdr pmay

$query = 'CREATE TABLE IF NOT EXISTS movietype ( movietype_id TINYINT UNSIGNED NOT NULL AUTO_IN-CREMENT, movietype_label VARCHAR(100) NOT NULL, PRIMARY KEY (movietype_id))ENGINE MYISAM';$query = 'CREATE TABLE IF NOT EXISTS movietype ( movietype_id TINYINT UNSIGNED NOT NULL AUTO_IN-CREMENT, movietype_label VARCHAR(100) NOT NULL, PRIMARY KEY (movietype_id))ENGINE MYISAM';mysql_query($query,$db) or die (mysql_error($db));//Create the people table$query = 'CREATE TABLE IF NOT EXISTS people( people_id INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, people_fullname VARCHAR(255) NOT NULL, people_isactor TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, people_isdirector TINYINT(1) UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (people_id))ENGINE MYISAM';mysql_query($query,$db) or die (mysql_error($db));

echo ' Movie database successfully created!';

?>

Page 95: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

95udkausmf

rZÑdr pmay

ေနာကတစခ က ထပေရးပါမယ။ ခနက ဟာက Database ထမာ Table ေတြ တညေဆာကလကတာပါ။ ခဟာက အဒ တညေဆာကၿပးလကတ႔ သကဆငရာ Tables ေတြထက သကဆငရာ data ေတြ ထညေပးတာပါ။ ေသခာေလး ေလ႔လာေစခငပါတယ။ ခဟာကေတာ႔ db2.php ဆၿပး နာမညေပးထားပါတယ။<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect to database');mysql_select_db('moviesite',$db) or die ('Unable to connect to database');

$query = 'INSERT INTO movie (movie_id, movie_name, movie_type, movie_year, movie_leadactor, movie_director) VALUES (1, "Bruce Almighty", 5, 2003, 1, 2), (2, "Office Space", 5, 1999, 5, 6), (3, "Grand canyon", 2, 1991, 4, 3)'; mysql_query($query,$db) or die (mysql_error($db));

$query ='INSERT INTO movietype (movietype_id, movietype_label) VALUES (1, "SCI FI"), (2, "Drama"), (3, "Adventure"), (4, "War"), (5, "Comedy"), (6, "Horror"), (7, "Action"), (8, "Kids")'; mysql_query($query,$db) or die (mysql_error($db)); $query = 'INSERT INTO people (people_id, people_fullname, people_isactor, people_isdi-rector) VALUES (1,"Jim Carrey", 1, 0),

(2,"Tom shadyac", 0, 1), (3,"Lawrence Kasdan", 0, 1), (4,"Kevin Klein", 1, 0),

Page 96: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;96

rZÑdr pmay

(5,"Ron livingston", 1, 0), (6,"Mike judge", 0, 1)'; mysql_query($query,$db) or die (mysql_error($db)); echo " DATA INSERTED SUCCESSFULLY";?>

ပထမဆး အေနန႔ db1.php က RUN ပါမယ။ ဘယလ Run ရမလဆရင http://localhost/db1.php ဆၿပး Browser ကေန ေခၚလကပါ။ ဒါဆရင Movie database successfully created! ဆၿပးေပၚလာပါမယ။ ေနာကၿပးေတာ႔ db2.php က run ပါ။ ဒါဆရင သငဖနတးထားတ႔ moviesite ဆတ႔ database ထမာ table ၃ ခန႔ သန႔ သကဆငရာ data ေတြ ေရာကရသြားပါၿပ။

How it works ခနက ေရးထားတ႔ code ေတြ ဘယလ အလပလပသလဆတာ ကၽြနေတာ ဆကရငးျပပါမယ။ ပထမဆး အေနန႔ MySQL server န႔ connect လပပါတယ ။ ဒလလပရမာ Error တစခခ ရခ႔မယဆရင (ဥပမာ host name, username, password ေတြမားရင) script က ခကျခငး Stop လပဖ႔ပါ ထညသြငးေရးလကပါတယ။

// connect to MySQL $db = mysql_connect('localhost', 'root', 'p@55w0Rd!') or die ('Unable to connect. Check your connection parameters.');

Connect လပလ႔ရသြားၿပဆရင ကယက ဘယ database က သးမာလ ဒါမမဟတ ကသးမယ႔ database မရရင လပေပးပါ ဆတ႔ Command ေလးကပါ ထညေရးေပးလကတယ။ ကၽြနေတာတ႔က moviesite ဆတ႔ database က သးမာေလ။ ဒါေၾကာင႔မ႔လ႔ //create the main database if it doesn't already exist $query = 'CREATE DATABASE IF NOT EXISTS moviesite'; mysql_query($query, $db) or die(mysql_error($db));

Page 97: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

97udkausmf

rZÑdr pmay

ဟတၿပ။ moviesite ဆတ႔ Database တစခက တညေဆာကၿပးသြားၿပဆရင အဒထက ကယအသးျပမယ႔ table ေတြ ထညမယေလ။ ေအာကပါအတငး Table တစချခငးစက Cre-ate လပပါတယ။ Table ထက fi eld တစချခငးစမာ လအပမယ႔ parameters ေတြပါ တစခါတညး ထညပါမယ။ ခ သးျပထားတာေတြက နားမလညရင ေရ႕ကရငးျပထား တာေတြန႔ ျပနတကၿပး ဖတၾကညေစခငပါတယ။

//Create the movie table$query = 'CREATE TABLE IF NOT EXISTS movie ( movie_id INT UNSIGNED NOT NULL AUTO_IN CREMENT, movie_name VARCHAR(255) NOT NULL, movie_type TINYINT NOT NULL DEFAULT 0, movie_year SMALLINT UNSIGNED NOT NULL DEFAULT 0, movie_leadactor INTEGER UNSIGNED NOT NULL DEFAULT 0, movie_director INTEGER UNSIGNED NOT NULL DEFAULT 0, PRIMARY KEY (movie_id), KEY (movie_type, movie_year)) ENGINE MYISAM' ;

ဒါက ကၽြနေတာတ႔ SQL statement ေရးလကတာပါ။ ဒ Statement က $query ဆတ႔ vari-able ေဆာကၿပး ေရးလကတာပါ။ ဒါက MySQL server ဆက mysql_query() ဆတ႔ function က သးၿပးေတာ႔ send လပေပးရမာပါ။ အဒလ လပရငးန႔ ကယေရးလကတ႔ statement မာ Error ပါရင ျပဖ႔ ရယ code ေတြက execute မလပဘ ရပလကဖ႔ error handling control code ေလးပါ တစခါတညး ထညေရးလကတာပါ။ mysql_query($query, $db) or die (mysql_error($db));

mysql_query(staements,source) ဆတာေလးေတာ႔ မတထားလကပါဥး။

Page 98: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;98

rZÑdr pmay

ဒလနညးန႔ Table ၃ ခလးက Create လပၿပးသြားရင အမား တစခမမရရင echo 'Mov-ie database successfully created!'; ဆၿပး ေနာကဆးမာ ေရးခ႔ေတာ႔ အားလးၿပးသြားရင Movie database successfully created! ဆၿပး ေပၚလာရပါမယ။ ဒေလာကဆရင ေရးေရးေလးေတာ႔ သေဘာေပါကလကၿပထငပါတယ။ ဖတဖတျခငးေတာ႔ အခကအခန႔ၾကရမာပါ။ မားမားေရးမ မားမား မတမၿပး ျမနျမနသေဘာေပါကလာမယေလ။

ဆကၿပးေတာ႔ db2.php ကလညး ရငးပါဥးမယ။ ၁။ MySQL server န႔ခတပါတယ။ အေပၚကအတငးပါဘ။ ၂။ အသးျပမယ႔ database ကေရြးေပးရပါတယ။ ဆာဗာထမာ တစခထကမကတ႔ database ေတြ ရေနမယေလ။ ရရမရရ အသးျပမယ႔ database ကေတာ႔ေရြးေပးရမာဘ။ //make sure you’re using the correct database mysql_select_db('moviesite',$db) or die ('Unable to connect to database');

ဒမာဆရင mysql_select_db() ဆတာကေတြ႕မာပါ။ အဒါက database က ေရြးေပးတ႔ဟာပါ။ mysql_select_db(databaseName, Source) ဆၿပး မတထားဖ႔လပါတယ။ ၃။ Data ေတြက Insert လပပါတယ။ ပထမဆး အေနန႔ movie ဆတ႔ Table ထက insert လပပါတယ။ Table ထမာ ရတ႔ Field အစဥအတငး လပပါတယ။

INSERT INTO movie ဆတာ movie ဆတ႔ table ထက insert လပမာပါလ႔ ေျပာလကတာပါ။ (movie_id, movie_name, movie_type, movie_year, movie_leadactor, movie_direc-tor) ဆတာေတြက movie Table ထမာရတ႔ Field name ေတြပါ။

VALUES (1, "Bruce Almighty", 5, 2003, 1, 2), (2, "Office Space", 5, 1999, 5, 6), (3, "Grand Canyon", 2, 1991, 4, 3)

Page 99: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

99udkausmf

rZÑdr pmay

ဆတာေတြက ခနက fi eld တစချခငးစမာ ထညမယ႔ဟာေတြကေျပာတာပါ။ Data ေတြက row by row ထညရတာပါ။

Querying the database

ဟတၿပ။ ခဆ သငဖနတးထားတ႔ moviesite ဆတ႔ database ထမာ data ေတြ ေရာကေနၿပ။ ဒေတာ႔ သငက ဒ data ေတြက အသးချခငမာဘျဖစပါတယ။ ကၽြနေတာတ႔ေတြက database ထမာရတ႔ data ေတြက ကယဖနတး ထားတ႔ website ေပၚက တငခငတယဆရင SELECT ဆတ႔ state-ment က အသးျပရမာဘျဖစပါတယ။ ကယ ျပခငတာေလးေတြက select လပၿပး ျပတ႔သေဘာပါ။ သ႔ပစေလးကေတာ႔ ေအာကပါအတငးေလးဘျဖစပါတယ။

SELECT [fi eld names] AS [alias] FROM [tablename] WHERE [criteria] ORDER BY [fi eldname to sort on ] [ASC|DESC] LIMIT [offset , maxrows]

သင႔အေနန႔ ေနာကပငးမာ ဒထကမကတ႔ parameters ေတြ ထပေပါငးႏငပါတယ။ ဒါေပမယ႔ ခ ပစေလးက လညး အမားဆး အသးျပေနတ႔ ပစေလးတစခပါ။ တစခခငးစ ထပရငးျပပါမယ။

SELECT[fi eld names] : သင အသးျပခငတ႔ Field က ေရြးတာပါ။ Table တစခထက fi eld အကနလးက ေရြးခငတယဆရငေတာ႔ name တစခခငးစ ေရးရင ရသလ SELECT * FROM ဆၿပးေတာ႔ shortcut သးၿပး ေရးလ႔ရပါတယ။ SELECT * FROM movie ဆရင movie Table ထက Fields အားလးက ေရြးလကတာပါ။ AS : alias name ျဖစပါတယ။ ေနာကထပ ေမြးစားနာမညေပးလကတ႔သေဘာပါ။ ဒလ ေပးထားျခငးအားျဖင႔ ေနာကထပ အဒ ေဒတာက တစျခားနာမညျဖင႔ (ကယေပးထားတ႔ Alias name ) reference လပလ႔ရပါတယ။ SELECT movie_name, movie_year AS release_year FROM movie

Page 100: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;100

rZÑdr pmay

FROM: သင ယသးမယ႔ Field ရ႕ table နာမညဘျဖစပါတယ။ တစခထျဖစႏငသလ တစခထကမကလညး ျဖစႏငပါတယ။

WHERE: where က ေအာကမာ သပသပ ထပရငးျပပါမယ။ ORDER BY: default အေနန႔ result ေတြက ascending စေပးပါတယ။ ASC ပါ။ သငက De-scending စခငတယဆရငေတာ႔ DESC ပါ။

LIMIT: limit ဆတာကေတာ႔ ထြကလာမယ႔ Data ေတြက တစခါထြကရင ဘယေလာကဘ ထြကပါ ဆၿပး သတမတေပးလကတာပါ။ ဥပမာ- site တစခမာ users ေတြ အမားႀကးရႏငပါတယ။ အဒထကမ ကယက ဘာက ျပခငသလဆရင ေနာကဆး မနဘာ၀ငတ႔ မနဘာေတြက ျပခငတယ. ဒါေပမယ႔ ေနာကဆး ၁၀ ေယာကကဘျပခငတယဆရင limt 10 ျဖစသြားမာပါ။

WHERE

Where clause က ေတာေတာေလး အသး၀ငပါတယ။ အမားထကမ သတမတထားတ႔ အရညအခငး ရတ႔ ဟာေတြက ျပနေရြးထတေပးတာပါ။ ဥပမာေလး အေနန႔ ျပၾကညမယ။

// retrieves all information about all customers SELECT * FROM customers; // retrieves all information about male customers SELECT * FROM customers WHERE gender = "Male" ဒ ၂ ခက ႏႈငးယဥလကမယဆရင အေပၚတစေၾကာငးက Customers အားလးက ေရြးလကတာပါ။ ေအာက တစေၾကာငးကေတာ႔ Customers ေတြက ေရြးေတာ႔ေရြးတယ ဒါေပမယ႔ အေရြးခရတ႔သေတြ အားလးက ေယာကား ေတြျဖစဖ႔လတယ။ က ခေလာကဆ where clause က နညးနညး သေဘာေပါကမယထငပါတယ။ ခ where clause က နညးနညးေလး detail ကက ဆကၾကညၾကရေအာင- where clause တစခက သးၿပဆရင comparison ေတြ ထညသးမ ပၿပး ျပညစပါတယ။ whre clause က heart of WHERE clause လ႔ ေခၚလညး မမားပါဘး။ comparison operators ေတြက ေအာကပါအတငးျဖစပါတယ။

Page 101: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

101udkausmf

rZÑdr pmay

= is used to test if two values are equal != is used to test if two values are not equal < is used to test if one value is less than the second <= is used to test if one value is less than or equal to the second > is used to test if one value is greater than the second >= is used to test if one value is greater than or equal to the second

LIKE like ကေတာ႔ ဘယေနရာမာသးလဆရင text ေတြက compare လပတ႔ေနရာမာသးပါတယ။ % န႔ ေဖာျပျပး wildcards အေနန႔ သးပါတယ။ wildcard က ဘယလေနရာမာ သးသလဆေတာ႔ သငက fi eld တစခထက data က လခငတယ အကနလးလညး မမတမဘး။ နညးနညးေတာ႔ မတမတယဆပါေတာ႔ ။ ဥပမာ သငက shoe ဆတာဘ မတမတယ။ အဒေဒတာေတြက လခငရင SELECT * FROM products WHERE description LIKE "%shoes%" ဒါဆရင description ဆတ႔ fi eld ထက shoe ပါတ႔ text pattern ေတြအားလးက record လပလကတာပါ။ ဥပမာ - "blue shoes", "red shoes", "no shirts, no shoes, no hat" ေနာကဆး တစခမာလညး shoes ဆတ႔ စကားလးပါလ႔ record ထမာ ပါသြားတာပါ။

Logical operators

where clause မာ logical operators ေတြကလညး ထညသးလ႔ရပါတယ။ ဘာေတြလဆေတာ႔ AND , OR, NOT , XOR ေတြပါ။

SELECT * FROM products WHERE description LIKE "%shoes%" AND price <= 2500

ဒမာဆရင AND ဆတ႔ logical operator တစခ ပလာပါတယ။ text pattern မာ shoes ပါရမာ အျပင သ႔ တနဖးကလညး 2500 န႔ ညရင ည မညရင နညးရမာျဖစပါတယ။ အဒ ဟာေတြန႔ ကကညတာေတြကဘ record လပၿပး ထတျပသြားမာျဖစပါတယ။

Page 102: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;102

rZÑdr pmay

ဒလဘ တစဆင႔ျခငး တစချခငး step by step လပသြားရင သင႔ အေနန႔ ေနာကပငးမာ ပၿပး ျမငသာထငသာ ရလာၿပး သေဘာတရားေတြကလညး ပၿပးနားလညလာမယ။ အဒအခါၾကရင ကယစတကးရသလ ကြန႕ျမးၿပး လပ လပသြားႏငမာဘျဖစပါတယ။ ခ SELECT query က သေဘာေပါကၿပဆရင ေလ႔ကင႔ခနးေလး နညးနညးေလာက လပၾကညလကရေအာင။ <?php $db = mysql_connect('localhost','root','') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db)); $query = 'SELECT movie_name, movie_type FROM movie Where movie_year >1990 ORDER BY movie_type';

$result = mysql_query($query, $db) or die (mysql_error($db)); // Show the result while ($row = mysql_fetch_array($result)){ extract($row); echo $movie_name. ' - ' . $movie_type.'<br />'; } ?>

ဒ script က select1.php လ႔ နာမညေပးၿပး Run လကရင ေအာကပါအတငး browser က ျပေပးမာပါ။

Grand canyon - 2 ThaGyanMoe - 5 Office Space - 5

Page 103: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

103udkausmf

rZÑdr pmay

ကၽြနေတာ while block ကေန စရငးျပပါမယ။ အေပၚ ၂ ခက ခဏခဏ ရငးခ႔ၿပးၿပ။ MySQL query တစခက $result ဆတ႔ variable ထ ထညၿပး server က ပ႔လကတယ။ ဆာဗာကေန ျပနထတေပးဖ႔ while က သးတယ။ data ေတြက row by row ရေနတာေနာ။ ျပနထတေပးဖ႔အတြက mysql_fetch_array() ဆတ႔ function တစခက သးပါတယ။ result အေနန႔ ျဖစလာမယ႔ အေျဖ တစခခငးစက $row ဆတ႔ variable ထ ထညလကပါတယ။ ေနာကၿပးေတာ႔ အဒ row က extract လပလကပါတယ။ အဒ row ထမာ ဘာပါလဆေတာ႔ movie name and movie type ေတြပါတယေလ။ သတ႔ေတြက variables ေတြ အေနန႔ ပါလာတာပါ။ ေအာတ မကတစေတာ႔ မျပဘး။ echo ေလးန output ထတေပးလကတယ။ တကယေတာ႔ ကၽြနေတာ ရငးျပေနတာ ၾကာတယ။ ကယ႔ဟာက ေသခာၾကညလကရင နားလညပါတယ။ လြယလြယေလးပါ။ ကၽြနေတာ ပေလးန႔ ထပရငးျပပါမယ။

Query ($result)

SERVER movie_name movie_type movie_year

ThaGyanMoe 5 2003

Offi ce Space 5 1991

Grand canyon 2 1999

Out put

while ($row = mysql_fetch_array($result) က $result န႔ ေတာငးလကတ႔ query အတြက data ေတြက mysql_fetch_array() ဆတ႔ function ကသးၿပး ေခၚလကတာပါ။ သ႔ထမာ ဘာပါလာမလဆေတာ႔ $movie_name and $movie_type ဆတ႔ variable ၂ ခပါလာပါမယ။ ၂ ခေပါငး pack တစခ လပလကၿပး $row ဆၿပး နာမညေပးလကပါတယ။ ၿပးရင အဒ pack ($row) ဆတာက extract function သးၿပး ေျဖခလကပါတယ။ ေျဖခလကေတာ႔ ဘာထြကလာမလ ။ ခနက variable ၂ ခ ထြကလာမာေပါ႔။ အဒ variables ေတြရ႕ တနဖးေတြက ပထမအႀကမမာေတာ႔ ThaG-yanMoe န႔ သ႔ရ႕ movie type ျဖစတ႔ 5 ေတြေပါ႔။ ေနာက ဒတယအႀကမ while loop အတြကက ဒတယ တနဖးေပါ႔ဗာ။

Page 104: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;104

rZÑdr pmay

ဘယအခနထ loop ပတမာလဆေတာ႔ ၁၉၉၀ ေနာကပငးထြကတ႔ movie အကနလးက Out put ထတေပးၿပးတ႔ အခနထပတမာပါ။ ဘာျဖစလ႔လဆေတာ႔ server ကပ႔တ႔ query ထမာ where clause မာ >1990 လ႔ သတမတလကတယေလ။ ေနာကၿပးေတာ႔ while loop မာၾကေတာ႔လညး သ႔ရ႕ con-diton က $result ေပၚမာမခသြားတယ။

Working with PHP and arrays of Data (foreach) foreach loop ဟာ ဘာန႔ ဆငတသလဆရင while loop န႔ဆငတပါတယ။ အဓက ရညရြယခကကေတာ႔ every result row ေတြက block of statements တစခ အေနန႔ ေဖာျပႏငဖ႔ဘျဖစပါတယ။ ေနာကပငး သငခနးစာေတြမာ ပၿပး ရငးလငးသြားမာပါ။ သ႔ရ႕ ပစေလးက

foreach ($row as $value) { echo $value; echo '< br >'; }

လကေတြ႕သငခနးစာေလး တစခေလာကလပၾကညရေအာင။ select1.php က ဘ နညးနညး ျပငေရးၾကညမယ။ ျပငထားတ႔ေနရာက higlight ျပထားတ႔ေနရာေနာ- <?php $db = mysql_connect('localhost','root','') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db)); $query = 'SELECT movie_name, movie_type FROM movie Where movie_year >1990 ORDER BY movie_type';

Page 105: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

105udkausmf

rZÑdr pmay

$result = mysql_query($query, $db) or die (mysql_error($db)); /* // Show the result while ($row = mysql_fetch_array($result)){ extract($row); echo $movie_name. ' - ' . $movie_type.'<br />'; } */ while ($row = mysql_fetch_assoc($result)) { foreach ($row as $value) { echo $value . ' '; } echo '<br/> '; } ?>

ဘယလ အလပသြားသလဆေတာ႔ ကၽြနေတာ ရငးျပပါမယ။ higlight ျပထားသလျပငၿပး script က run ရငလညး အရင အေျဖအတငးဘရတယဆတာ သငသတျပမပါလမ႔မယ။ ခဒေနရာမာ mysql_fetch_array အစား mysql_fetch_assoc က သးထားတာ သတျပမပါလမ႔မယ။ တကယတမးေတာ႔ mysql_fetch_array မာ value က ၂ စ return ျဖစပါတယ။ associative and numerical တ႔ျဖစပါတယ။ foreach က သးၿပဆရင သက array ထက value တငးက တစချခငးစ ထတေပးမာျဖစတ႔အတြက mysql_fetch_array($result) ဆရင သင႔ အေျဖေတြဟာ ၂ စစျဖစေနမာပါ။ duplicate value ေတြျဖစေနမာေပါ႔။ ေအာကပါအတငးထြကေနလမ႔မယ။

Grand canyon Grand canyon 2 2ThaGyanMoe ThaGyanMoe 5 5Offi ce Space Offi ce Space 5 5

အဒေတာ႔ ဒလ မျဖစရေအာင mysql_fetch_array($result, MYSQL_ASSOC) ဆၿပး asso-ciative တစခဘ return ျပနေအာင ေရးရပါမယ။ ခလမးေရးရတာ ရညတယဆရင mysql_fetch_assoc($result) ဆၿပး တနး ေရးလ႔ရပါတယ။ ဒါဆရငေတာ႔ result ေတြက duplicate မျဖစေတာ႔ပါဘး။

Page 106: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;106

rZÑdr pmay

Using foreach to create table

ဒါကေတာ႔ HTML table ထမာ ထြကလာမယ႔ result ေတြက table န႔ျပတာပါ။ မရငးျပေတာ႔ပါဘး။ ေလ႔လာၾကညပါ။ <?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); // select the movie titles and their genre after 1990 $query = 'SELECT movie_name, movie_type FROM movie WHERE movie_year > 1990 ORDER BY movie_type'; $result = mysql_query($query, $db) or die(mysql_error($db)); // show the results echo '<table border="1">'; while ($row = mysql_fetch_assoc($result)) { echo '<tr>'; foreach ($row as $value) { echo '<td>' . $value . '</td>'; } echo '</tr>'; } echo '</table>'; ?>

အထကပါ script က select2.php လ႔ နာမညေပးၿပး browser ကေန ေခၚတငၾကညပါ။ ေအာကပါအတငး ျမငရပါမယ။

Page 107: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

107udkausmf

rZÑdr pmay

Working with two tables

ကၽြနေတာတ႔ဟာ ခဆရင MySQL commands ေတြ functions ေတြသးၿပးေတာ႔ ta-ble တစခထက data ေတြက output ထတျပႏငပါၿပ။ ဒါေပမယ႔ အထကက ပကၾကညပါ။ movie name ကေတာ႕ ဟတပါၿပ။ ေဘးက 2 ေတြ 5 ေတြက ဘာေတြလဗ။ အဒါ ကၽြနေတာတ႔က ေတာ႔ သတယေလ။ movie type ေတြဆတာ။ ေဘးလက ဘယသမလ။ သန႔ သကဆငတ႔ drama တ႔ ac-tion တ႔က တစျခား table ထမာ သမးထားတယ။ ဒလဆရင အကနလး နားလညေအာင အဒါေတြက ထတျပမရမယ။ ဒါဆရင Table ၂ ခက သးဖ႔လလာၿပေပါ႔။ ဟတတယေနာ။ Table ၁ ခန႔ အထက အတသးဖ႔လတ႔အခါမာ နညး ၂ နညးန႔ သးလ႔ရပါတယ။ နညးလမး(၁)။ သငျပလပထားတ႔ query ထမာ table တစချခငးစက reference လပမယ ။ၿပးရင အဒါက link ျပနခတမယ။ နညးလမး(၂)။ Table ေတြက JOIN ဆတ႔ function သးၿပး ဆကပါမယ။ ကၽြနေတာတ႔ နညးလမး ၂ ခလးက အသးျပၾကညရေအာင။ ၿပးမ တစချခငးစက အေသးစတ ထပေဆြးေႏြးတာေပါ႔။

Referencing Two Tables

ကၽြနေတာတ႔ SELECT ကသးၿပး table ၂ ခကဟာက ထတသးၾကမယ ဆပါစ႔။ Table နာမညေတြက customers , order ဆၿပးထားလကမယ။ customers table ထကေန name ဆတ႔ fi eld န႔ order table ထက order_total ဆတ႔ဟာက ေရြးမယ။ အဒ Table

Page 108: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;108

rZÑdr pmay

၂ ခလးမာ customer_id ဆတ႔ Field ပါၿပးေတာ႔ value က အတတဘျဖစမယ။ ဒါဆရင ေအာကပါအတငး ေရးလ႔ရပါတယ။ SELECT customers.name and order.order_total FROM customers, order WHERE customers.customer_id = order.order_total

customer_id =123 ဆရင သ႔ရ႕ order total အားလးက ေတြ႕ႏငမာျဖစၿပး သင႔ဆငမာ သ လာေရာက သးသြားတ႔ money က သင႔အေနန႔ သရႏငမာျဖစပါတယ။Referencing Individual Tables

ခ multiple tables ေတြက ဘယလ reference လပရသလဆတာ ျပသြားပါမယ။

<?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); /* // select the movie titles and their genre after 1990 $query = 'SELECT movie_name, movie_type FROM movie WHERE movie_year > 1990 ORDER BY movie_type'; */ $query = 'SELECT movie.movie_name, movietype.movietype_label FROM movie, movietype WHERE movie.movie_type = movietype.movietype_id AND movie_ year > 1990 ORDER BY movie_type'; $result = mysql_query($query, $db) or die(mysql_error($db));

Page 109: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

109udkausmf

rZÑdr pmay

// show the results echo '<table border="1">'; while ($row = mysql_fetch_assoc($result)) { echo '<tr>'; foreach ($row as $value) { echo '<td>' . $value . '</td>'; } echo '</tr>'; } echo '</table>';?>

ခဆရင movie name ရယ movie type ေတြက ေတြ႕ရပါၿပ။ ၾကညတ႔သေတြလညး နားလညသြားပါၿပ။ ဒမာက movie table ထက movie_type fi eld ရယ movietype table ထက movietype_id fi eld ေတြက same value ေတြက ကယစားျပထားတ႔အတြက အဒ fi eld ႏစခက link ခတၿပး movie_name, movietype_label က output ထတလကတာပါ။

Page 110: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;110

rZÑdr pmay

Joining Two Tables ဒသငခနးစာမာေတာ႔ Table ႏစခက JOIN ဆတ႔ဟာန႔ ဆကၿပးသးမာပါ။ <?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); /* // select the movie titles and their genre after 1990 $query = 'SELECT movie_name, movie_type FROM movie WHERE movie_year > 1990 ORDER BY movie_type'; */ /* $query = 'SELECT movie.movie_name, movietype.movietype_label FROM movie, movietype WHERE movie.movie_type = movietype.movietype_id AND movie_year > 1990 ORDER BY movie_type'; */ // select the movie titles and their genre after 1990 $query = 'SELECT movie_name, movietype_label FROM movie LEFT JOIN movietype ON movie_type = movi-etype_id WHERE movie.movie_type = movietype.movietype_id AND movie_year > 1990 ORDER BY movie_type'; $result = mysql_query($query, $db) or die(mysql_error($db));

Page 111: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

111udkausmf

rZÑdr pmay

// show the results echo '<table border="1">'; while ($row = mysql_fetch_assoc($result)) { echo '<tr>'; foreach ($row as $value) { echo '<td>' . $value . '</td>'; } echo '</tr>'; } echo '</table>'; ?>

ဒscript က run လကမယဆရငလညး ေရ႕မာ ျပခ႔တ႔ result ေတြအတငးဘ ထြကလာမာပါ။ join ကေန စရငးျပပါမယ။ အရငဆးကေတာ႔ ဘယ fi elds ေတြသးမလဆတာက SELECT statement သးၿပး ေျပာပါတယ။

SELECT movie_name, movietype _label

ေနာကၿပးေတာ႔ LEFT join statement က သးသြားတာ ေတြ႕ပါလမ႔မယ။ FROM movie LEFT JOIN movietype

အရငးဆး ရငးျပရရင second table ျဖစတ႔ movietype ဟာ ဆရင fi rst table ျဖစတ႔ movie table ေပၚ depend လပပါတယ။ main information ေတြက First table ကေန ယၿပးေတာ႔ တစျခား အနညးငယလအပတ႔ information ေတြက second table ကေန ယပါတယ။ ေနာကၿပးေတာ႔ ဘယ fi eld ႏစခက join လပမာလဆတာက ဆာဗာက အသေပးရပါတယ။

ON movie_type = movietype_id

ကနတ႔ Code ေတြကေတာ႔ အတတဘျဖစပါတယ။ ဒေလာကဆရင join ဘယလ အလပသလဆတာ သသြားၿပ။

Page 112: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;112

rZÑdr pmay

Exercises

For chapter (3)

1. Create a PHP program that prints the lead actor and director for each movie in the database. 2. Pick only comedies from the movie table, and show the movie name and the year it was produced. Sort the list alphabetically. 3. Show each movie in the database on its own page, and give the user links in a “ page 1, page 2, page 3 ” – type navigation system. Hint: Use LIMIT to control which movie is on which page.

Page 113: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

113udkausmf

rZÑdr pmay

Chapter (4)Using Tables to Display Data

ခဆရင သငဟာ PHP န႔ MySQL က တြ ၿပးေတာ႔ သးတတေနၿပး dynamic pages က ဖနတး ေနႏငပါၿပ။ တကယလ႔ သင ျပခငတ႔ Data ေတြက row ေတြအမားႀကး ျဖစေနမယ။ ဒလဆရင ၾကညရႈရမယသအဖ႔ ရငးရငးလငး လငး ၾကညႏငဖ႔ သင ဖနတးေပးဖ႔လလာၿပမဟတလား။ ဒလ ဖနတးဖ႔ရာ ရငးလငးလြယကရမယ၊ organized ျဖစရမယ။ neat ျဖစရမယ။ ဒလေတြ ျဖစဖ႔ အတြက အေကာငးဆးကေတာ႔ table က အသးျပရမာပါ။ ဒသငခနးစာမာ ေအာကပါ အေၾကာငးအရာမားပါ၀ငပါတယ - Creating a table to hold the data from the database . Creating column headings automatically . Populating the table with the results of a basic MySQL query . Populating the table with the results of more complex MySQL queries Making the output user - friendly

Creating a table

database ထက data ေတြက Table ထ မထညခငမာ Table layout က အရငဆး စဥးစားသင႔ပါတယ။ ဘာေတြပါမယ။ heading က ဘယလဟာေတြထားမယ စသျဖင႔ေပါ႔။ ကၽြနေတာတ႔ ေအာကက ပစအတငးေလး လပၾကညမယေလ။ table1.php လ႔ နာမညေပးလကပါ။

<div style="text-align: center;"> <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th>

Page 114: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;114

rZÑdr pmay

<th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> </table> </div>

အေက။ ကၽြနေတာတ႔ က table တစခ ေတာ႔ တညေဆာကၿပးသြားၿပ။ ဒ Table ထက data ေတြ insert လပဖ႔အတြက ပထမဥးဆး database န႔ connect လပရမယေလ။ ဒေတာ႔ အရင သငခနးစာေတြအတငး

Page 115: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

115udkausmf

rZÑdr pmay

<?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); ?> <div style="text-align: center;"> <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th> <th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> </table> </div>

ေနာကတစဆင႔အေနန႔ dataေတြက ျပဖ႔အတြက ကၽြနေတာတ႔က MySQL server ကေန data ေတာငးခရပါတယ။ ဒလ ေတာငးခဖ႔အတြက query တစခ တညေဆာကလကပါမယ။ ၿပးရင Server ကေန data row ဘယႏစခ ထတေပးလကလဆတာက mysql_num_row() function သးၿပး ၾကညလကပါဥးမယ။

<?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); // retrieve information $query = 'SELECT movie_name, movie_year, movie_director, movie_leadac-tor, movie_type

Page 116: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;116

rZÑdr pmay

FROM movie ORDER BY movie_name ASC, movie_year DESC'; $result = mysql_query($query, $db) or die(mysql_error($db)); // determine number of rows in returned result $num_movies = mysql_num_rows($result); ?> <div style="text-align: center;"> <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th> <th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> </table> </div>

အခခနထ လပငနးစဥေတြအားလးဟာ browser ရ႕ ေနာကကြယမာဘ အလပလပတနးရၿပးေတာ႔ result က မျပႏငေသးပါဘး။ result က ျပဖ႔အတြက data ေတြက output ထတေပးဖ႔လပါတယ။ ပထမဆး အေနန႔ ကၽြနေတာတ႔ ေရ႕သငခနးစာမာ ေလ႔လာထားခ႔တ႔ while loop က သးၿပး result တစခ ထတၾကညပါမယ။ အေပၚမာ ျပထားတ႔ script ရ႕ </tr> tag အဆးန႔ </table> tag အဆးၾကားမာ while loop က ထားလကပါမယ။ တစခါတညးဘ ထြကလာမယ႔ data ေတြက HTML န႔ တြထတဖ႔ ေရးပါမယ။ <?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db));

Page 117: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

117udkausmf

rZÑdr pmay

// retrieve information $query = 'SELECT movie_name, movie_year, movie_director, movie_leadac-tor, movie_type FROM movie ORDER BY movie_name ASC, movie_year DESC'; $result = mysql_query($query, $db) or die(mysql_error($db)); // determine number of rows in returned result $num_movies = mysql_num_rows($result); ?> <div style="text-align: center;"> <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th> <th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> <?php // loop through the results while ($row = mysql_fetch_assoc($result)) { extract($row); echo ' <tr> '; echo ' <td> ' . $movie_name . ' </td> '; echo ' <td> ' . $movie_year . ' </td> '; echo ' <td> ' . $movie_director . ' </td> '; echo ' <td> ' . $movie_leadactor . ' </td> '; echo ' <td> ' . $movie_type . ' </td> '; echo ' </tr> '; }

Page 118: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;118

rZÑdr pmay

?> </table> <p> <?php echo $num_movies; ?> Movies </p> </div>

How it works code ေတာေတာမားမား အလပလပပကေတာ႔ ေရကကသငခနးစာေတြအတငးပါဘ။ while statement မာဆရင loop ပတၿပးေတာ႔ record ေတြဟာ return ျဖစပါတယ။ {} ထက code block ေတြက record တစချခငးစ ထတေပးတာပါ။ တစခါၿပးတငးတစခါ loop ပတပါတယ။ PHP မာဆရင loop ပတဖ႔ရာ record ဘယေလာကရမလ၊ လကရ ဘယ အဆင႔ထေရာကေနၿပလဆတာ သ႔ဟာသလညး သပါတယ။ while loop ရ႕ first line မာရတ႔ extract() function က field name န႔ နာမညတ variable က create လပၿပးေတာ႔ variable ေတြရ႕ value ေတြက populate လပဖ႔အတြက သးလကတာပါ။ current record ေတြက လပတာေနာ။ ကနတ႔ line ေတြကေတာ႔ HTML ထ ထညသးလကတာပါ။

Page 119: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

119udkausmf

rZÑdr pmay

Using heredoc syntax

ကၽြနေတာတ႔ဟာ PHP mode မာ echo statement န႔ Output ေတြထတခ႔ၾကတယေနာ။ <?php ?> ဆတ႔ tags ေတြၾကားမာရတာေတြေပါ႔။ အဒ tag ႏစခရ႕ အျပငဘကမာ HTML code ေတြမားလာတ႔အခါမာ တစခ႕ေတြက မႀကကၾကဘး။ PHP parse မလပဘ output မထတခငၾကဘး။ တစခ႕ၾကေတာ႔လညး ဒအတငး(အထကက ေရးခ႔တ႔အတငး ) ေရးျခငၾကတယ။ PHP parse လပၿပးမ ေရးမယဆတ႔သေတြအတြက heredoc ဆတ႔ syntax ေလးက မတဆကေပးလကပါမယ။ အရငဆး table1.php ထကဟာေတြက table2.php ထက ေျပာငးလကပါ။ ၿပးရင ေအာကပါအတငး ျပငေရးပါ။ ၁။ table column's header က heredoc န႔ replace လပပါမယ။ ေအာကပါအတငးလပပါမယ။$table = <<<ENDHTML <div style="text-align: center;" > <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th> <th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> ENDHTML;

၂။ ၿပးရင while loop က echo statement ေတြကလညး ျပငေရးပါမယ။

$table .= <<<ENDHTML <tr>

Page 120: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;120

rZÑdr pmay

<td> $movie_name </td> <td> $movie_year </td> <td> $movie_director </td> <td> $movie_leadactor </td> <td> $movie_type </td> </tr> ENDHTML;

၃။ ၿပးရင ေအာကဆးက table ရ႕ close tag န႔ number of movies အတြက ျပငေရးပါမယ။$table .= <<<ENDHTML </table> <p> $num_movies Movies</p> </div>ENDHTML;

နပါတ ၂ န႔ နပါတ၃ မာ $table .= ဆတာက သတထားမမာပါ။ နပါတ ၁ မာက $table = ဘေလ။ .(dot) မပါဘး။ အဒါက ဘာသေဘာလဆေတာ႔ .= လ႔ေရးျခငးအားျဖင႔ ထပဆးက $table ထမာ save လပထားတယေပါ႔။ ဒါမမဟတလညး depend ျဖစတယလ႔ ေျပာတာပါ။ = လ႔ဘ ေရးလကမယဆရင replace လပသြားပါလမ႔မယ။ ခက table တစခထမာဘ ရေနတာေလ။ အဒေတာ႔ ကယ႔ဟာက . (dot) ေလးေတြ ျဖတၿပး စမးၾကညပါ။ ေနာကတစခက ENDHTML; ဆတာေရးတ႔အခါမာ သ႔ရ႕ ေရ႕မာ space မရရပါဘး။ အဒေတာ႔ သငေရးလကတ႔ code ေတြက ေအာကပါအတငးျဖစပါမယ။ <?php $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db));

Page 121: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

121udkausmf

rZÑdr pmay

// retrieve information $query = 'SELECT movie_name, movie_year, movie_director, movie_leadactor, movie_type FROM movie ORDER BY movie_name ASC, movie_year DESC'; $result = mysql_query($query, $db) or die(mysql_error($db)); // determine number of rows in returned result $num_movies = mysql_num_rows($result);

$table = <<<ENDHTML <div style="text-align: center;" > <h2> Movie Review Database </h2> <table border="1" cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <th> Movie Title </th> <th> Year of Release </th> <th> Movie Director </th> <th> Movie Lead Actor </th> <th> Movie Type </th> </tr> ENDHTML; // loop through the resultswhile ($row = mysql_fetch_assoc($result)) { extract($row);$table .= <<<ENDHTML <tr> <td> $movie_name </td> <td> $movie_year </td> <td> $movie_director </td>

Page 122: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;122

rZÑdr pmay

<td> $movie_leadactor </td> <td> $movie_type </td> </tr> ENDHTML;}$table .= <<<ENDHTML </table> <p> $num_movies Movies</p> </div>ENDHTML;

?>ဟတၿပ။ အဒ script က run ၾကညပါ။ ဘာ result မ ေတြ႕ရမာမဟတဘးေနာ။ ဘာျဖစလ႔လဆေတာ႔ ကၽြနေတာတ႔က table ဆတာက variable လပခ႔တယေလ။ ဒါေၾကာင႔ အဒါက echo န႔ output ျပနထတေပးမရမယ။။ ဒေတာ႔ ေအာကဆးမာ echo $table; ဆတာေလးက ထပေပါငးလကပါ။ ဒလေလးေပါ႔။ ဒါဆရင output ထြကလာမာပါ။ ပ ကၾကညပါ။

ENDHTML;echo $table;?>

Page 123: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

123udkausmf

rZÑdr pmay

ENDHTML ဆတ႔ေနရာမာ ႀကကတာ ေရးလ႔ရတယေနာ။ အစန႔ အဆးန႔ တရငရၿပ။

<<< HAHAHA //code blockHAHAHA;

ေအာကကလဆရငေတာ႔ အလပလပမာမဟတဘး။

<<< HAHAHA //code blcokENDHTML;

ခ ဇယားကြက က ေတြ႕လာၿပဆေတာ႔ movie director ေတြ movie name ေတြထညမယေလ။ ဒါမ ၾကညတ႔သ နားလညမာေပါ႔။ ခ ေလ႔ကင႔ခနးမာေတာ႔ function ေလးေတြ တညေဆာကၿပး လပၾကမယ။

<?php $db = mysql_connect('localhost','root','') or die (mysql_error($db)); mysql_select_db('moviesite',$db) or die (mysql_error($db)); // Get director function get_director($director_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id ='.$director_id; $result = mysql_query($query) or die (mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $people_fullname; } // Get actor function get_leadactor($leadactor_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id ='.$leadactor_id; $result = mysql_query($query) or die (mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row);

Page 124: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;124

rZÑdr pmay

return $people_fullname; } // get movie function get_movietype($movietype_id){ global $db; $query = 'SELECT movietype_label FROM movietype WHERE movietype_id ='.$movietype_id; $result = mysql_query($query) or die (mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $movietype_label; } // retrieve information $query = 'SELECT movie_id, movie_name, movie_year, movie_director, movie_lead-actor, movie_type FROM movie ORDER BY movie_name ASC, movie_year DESC'; $result = mysql_query($query) or die (mysql_error($db)); //$row = mysql_fetch_assoc($result); //determine the number of rows in results $num_movies = mysql_num_rows($result);$table = <<<ENDHTML<div style="text-align:center;"> <h2>Movie review database</h2> <table border="1" cellspacing="2" cellpadding="2" style="width:70%;margin-left:auto;margin-right:auto;"> <tr> <th>Movie name</th> <th>Year of release</th> <th>Movie director</th> <th>Movie lead actor</th> <th>Movie type</th> </tr>ENDHTML;

Page 125: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

125udkausmf

rZÑdr pmay

// Loop through the results while($row = mysql_fetch_assoc($result)){ extract($row); $director = get_director($movie_director); $leadactor = get_leadactor($movie_leadactor); $movietype = get_movietype($movie_type); $table .= <<<ENDHTML <tr> <td><a href="movie_details.php?movie_id=$movie_id" title="Click here more about details of $movie_name">$movie_name</a></td> <td>$movie_year</td> <td>$director</td> <td>$leadactor</td> <td>$movietype</td> </tr>ENDHTML; } $table .= <<<ENDHTML </table> <p> $num_movies</p></div> ENDHTML; echo $table;?>

ဟာ.. code ေတြ မားလခညလား ..စတဓာတကမသြားန႔ဥးေနာ။ ျပနလညး ၾကညၾကညဥး ။ သင ေလ႔ကင႔ခ႔တ႔ဟာေတြခညးဘ။ ခ function တစခက ရငးျပဥးမယ။

Page 126: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;126

rZÑdr pmay

// Get director function get_director($director_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id ='.$director_id; $result = mysql_query($query) or die (mysql_error($db)); $row = mysql_fetch_assoc($result); extract($row); return $people_fullname; }

အရငဆး get_director ဆတ႔ function name က ေပးလကပါတယ။ statement အေနန႔ကေတာ႔ $director_id ေပါ႔။ ၿပးရင global variable က declare လပပါတယ။ ဘာျဖစလ႔လဆေတာ႔ ေအာကမာ ဆကသးမယ႔ query အတြက connection လပရမယေလ။ $db က function code block ရ႕ အျပငဖကမာေလ။ အျပငက variable က ယသးမယဆရင global လပရမယလ႔ မတထားလ႔ရပါတယ။ ၿပးေတာ႔ director name ရဖ႔အတြက query တစခ တညေဆာကလကပါတယ။ full name ေတြက people ဆတ႔ Table ထက people_fullname ဆတ႔ field ထမာ ရတာေလ။ အဒေတာ႔ SELECT people_fullname FROM people အဒကမ ဘယသ႔ နာမညကယမာလ။ အရငဆး people id က ရာရမယ။ ဘာက reference လပရမလဆေတာ႔ director id က လပရမယေလ။ အဒေတာ႔ people_id = director_id ေပါ႔ ။ direc-tor_id ဆတာ တကယမရဘးေနာ။ ကၽြနေတာတ႔က ေနာကပငးမာ အဒ $director_id ဆတ႔ေနရာမာ တကယရမယ႔ $movie_director န႔ ယသးလကမယ႔သေဘာအတြက ေရးထားတာ။ 'SELECT people_fullname FROM people WHERE people_id = '.$director_id;

အလပလပပက ရငးျပရရင $director_id = 3 ဆရင 'SELECT people_fullname FROM people WHERE people_id = 3'; ျဖစသြားတာေပါ႔။ ဒါဆရင people_id = 3 ျဖစတ႔ နာမညက ထတေပးမာပါ။

Page 127: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

127udkausmf

rZÑdr pmay

ေနာကဆး while loop ေနရာမာ movie director, movie actor, movie type ေတြအတြက ( Func-tion 3 ခ) ေခၚေရးလ႔ရၿပေလ။ while($row = mysql_fetch_assoc($result)){ extract($row); $director = get_director($movie_director); $leadactor = get_leadactor($movie_leadactor); $movietype = get_movietype($movie_type);ၿပးရင table ထက သကဆငရာေနရာေတြမာ <td>$director</td><td>$leadactor</td><td>$movietype</td>ဆၿပး variable ၃ ခက ေခၚယလကယပါဘ။

ဒေနရာမာ အျပနျပနအလနလန စဥးစားေစခငပါတယ။ ဘာျဖစလ႔လဆေတာ႔ တစခန႔ တစခ ခတဆကၿပး အလပလပသြားတ႔အတြကေၾကာင႔ ကြငးဆကမဖ႔လပါတယ။

Adding links to table movie name ေနရာမာ သန႔သကဆငရာ details data ေတြက ထညသြငးႏငဖ႔အတြက link ကထညခငတာပါ။ ဒါဆရင movie name တစခက click လပလကရငသကဆငရာ detail data ေတြ ထြကလာမာပါ။

<td> <a href="movie_details.php?movie_id=$movie_id" title="Click here more about details of $movie_name">$movie_name</a></td>table2.php မာ ဒလေလး ျပငေရးေပးပါ။ ဒါကေတာ႔ အထးတလညရငးစရာမလေတာ႔ဘးထငပါတယ။ ျပငၿပးသြားရင table3.php လ႔ နာမညေပးလကပါ။ ၿပးရင Browser ကေန

Page 128: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;128

rZÑdr pmay

ၾကညလကရင

ဆၿပးေတြ႔ရမာပါ။ ဟတက႔ link ေတာ႔ လပၿပးသြားပါၿပ။ ဒါေပမယ႔ ႏပလကရင မရဘးဘျပေနမာပါ။ ကၽြနေတာတ႔က link ေလးဘလပရေသးတာကး။ ခ ကၽြနေတာတ႔က movie de-tail ေတြ ျပႏငဖ႔အတြက ေနာကထပ ေဒတာေတြလပါတယ။ database ထက ထပေပါငးေပးပါမယ။ column ေတြထပျဖညမယေလ။

<?php $db = mysql_connect('localhost','root','') or die (mysql_error($db));mysql_select_db('moviesite1',$db) or die (mysql_error($db)); //Alter the movie table to add movie length, cost and taking fields $query = 'ALTER TABLE movie ADD COLUMN ( movie_runningtime TINYINT UNSIGNED NULL, movie_cost DECIMAL(4,1) NULL,

Page 129: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

129udkausmf

rZÑdr pmay

movie_taking DECIMAL(4,1) NULL )'; mysql_query($query,$db) or die (mysql_error($db)); // Adding data to each movie $query = 'UPDATE movie SET movie_runningtime =101, movie_cost = 81, movie_taking = 242.6 WHERE movie_id = 1'; mysql_query($query,$db) or die (mysql_error($db)); $query = 'UPDATE movie SET movie_runningtime =89, movie_cost = 10, movie_taking = 10.8 WHERE movie_id = 2'; mysql_query($query,$db) or die (mysql_error($db)); $query = 'UPDATE movie SET movie_runningtime = 134, movie_cost = NULL, movie_taking = 33.2 WHERE movie_id= 3'; mysql_query($query,$db) or die (mysql_error($db)); echo ' Successfully added data to the database.';

?>

Page 130: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;130

rZÑdr pmay

db3.php လ႔ နာမညေပးၿပး run လကပါ။ Successfully added data to the database. ဆတာ ေပၚလာပါမယ။ ဘာေတြ ပါလာသလဆရင movie တစချခငးစရ႕ ကနကစားရတ(movie_cost)၊ (ၾကာျမင႔ခန)movie length, ျပနလညရရေငြ(movie_taking) ဆတာေတြပါလာမယ။ ဒါေတြအျပင ကၽြနေတာတ႔က ေနာကထပ နညးနညးေလး ထပကြန႔ၿပးလပရရင movie cost ရယ movie tak-ing ရယက ႏႈငးယဥၿပး ဒ ဇာတကားဟာ ျမတသလား ရႈးသလား ဆတာက အေရာငန႔ ျပပါမယ။ သ႔ပစေလးက ေအာကပါအတငးေလးပါ။ // Function to calculate if a movie made a profit, loss or just broke even function calculate_differences($takings, $cost) { $difference = $takings - $cost; if ($difference < 0) { $color = 'red'; $difference = '$' . abs($difference) . 'million'; } elseif ($difference > 0) { $color ='green'; $difference = '$' . $difference . 'million'; } else { $color = 'blue'; $difference = 'broke even'; } return '<span style="color:' . $color . ';">' . $difference . '</span >'; }

ရႈးရင အနန႔ျပခငးၿပး ျမတရင အစမးန႔ ျပမာပါ။ ကနကစားရတမသတ႔ဟာကေတာ႔ အျပာ န႔ ျပခငးထားပါတယ။သ႔က အားလးန႔ေပါငးစပေရးလကရင ေအာကပါအတငးရမာ။ movie_details.php လ႔ နာမညေပးလကပါ။

Page 131: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

131udkausmf

rZÑdr pmay

<?php // Connect to mysql database $db = mysql_connect('localhost','root','') or die ('Unable to connect'); mysql_select_db('moviesite1',$db) or die (mysql_error($db));

function get_director($director_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id = '.$director_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract($row); return $people_fullname; } function get_leadactor($leadactor_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id ='.$leadactor_id; $result = mysql_query($query, $db) or die (mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract ($row); return $people_fullname; }

function get_movietype($type_id){ global $db; $query = 'SELECT movietype_label FROM movietype WHERE movietype_id ='.$type_id;

Page 132: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;132

rZÑdr pmay

$result = mysql_query($query,$db) or die (mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract ($row); return $movietype_label; } // Function to calculate if a movie made a profit, loss or just broke even function calculate_differences($takings, $cost) { $difference = $takings - $cost; if ($difference < 0) { $color = 'red'; $difference = '$' . abs($difference) . 'million'; } elseif ($difference > 0) { $color ='green'; $difference = '$' . $difference . 'million'; } else { $color = 'blue'; $difference = 'broke even'; } return '<span style="color:' . $color . ';">' . $difference . '</span >'; } // Retrieve information $query = 'SELECT movie_name, movie_year, movie_director, movie_lead-actor, movie_type,movie_type, movie_runningtime, movie_cost, movie_taking FROM movie WHERE

Page 133: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

133udkausmf

rZÑdr pmay

movie_id = '.$_GET['movie_id']; $result = mysql_query($query,$db); $row = mysql_fetch_assoc($result); $movie_name = $row['movie_name']; $movie_director = get_director($row['movie_director']); $movie_leadactor = get_leadactor($row['movie_leadactor']); //$movie_type = get_movietype($row['movie_type']); $movie_year = $row['movie_year']; $movie_runningtime = $row['movie_runningtime']; $movie_taking = $row['movie_taking']; $movie_cost = $row['movie_cost']; $movie_health = calculate_differences($row['movie_taking'], $row['movie_cost']);// Display the information.echo <<<ENDHTML <html> <head> <title>Details and reviews for $movie_name.</title> <body> <div style="text-align:center";> <h2>$movie_name</h2> <h3><em>Get details</em></h3> <table cellpadding="2" cellspacing="2" style="width:70%;margin-left:auto;margin-right:auto;"> <tr> <td><strong>Title</strong></td> <td>$movie_name</td> <td><strong>Releaseyear</strong><td> <td><strong>$movie_year</strong><td> </tr>

Page 134: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;134

rZÑdr pmay

<tr> <td><strong>Movie director<strong></td> <td>$movie_director</td> <td><strong>Cost</strong><td> <td><strong>$movie_cost</strong><td> </tr> <tr> <td><strong>Lead actor</strong></td> <td>$movie_leadactor</td> <td><strong>Takings</strong></td> <td><strong>$movie_taking</strong><td> </tr> <tr> <td><strong>Running Time</strong></td> <td>$movie_runningtime</td> <td><strong>Health</strong></td> <td><strong>$movie_health</strong></td> </tr> </table>ENDHTML;?>table3.php က browser ကေန ေခၚလကပါ။ ၿပးရင movie name တစခက ကလစလပလကပါ။ ဒါဆရင သန႔ ပါတသတတ႔ movie detail တစခ ထပထြကလာမာပါ။

Page 135: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

135udkausmf

rZÑdr pmay

How it works

function ၄ ခက ရငးျပၿပးျဖစလ႔ ေကာၿပး ရငးလကေတာ႔မယ။ $query = 'SELECT movie_name, movie_year, movie_director, movie_lead-actor, movie_type,movie_type, movie_runningtime, movie_cost, movie_taking FROM movie WHERE movie_id = '.$_GET['movie_id'];

Page 136: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;136

rZÑdr pmay

အဒ script မာဆရင movie_id = '.$_GET['movie_id']; ဆတာ table3.php ကေန request လပလာတ႔ movie id က GET method သးၿပး movie_details.php မာ compare လပတာျဖစပါတယ။ ေနာကတစခက extract() function က မသးေတာ႔တာ သငသတထားမရင သတထားမပါလမ႔မယ။ တစခါတညး $row ဆတ႔ array ထကေန တကရကတနးယသးထားပါတယ။ $row = mysql_fetch_assoc($result); ဆတ႔အထမာ movie အားလးရ႕ data က ပါလာတာမဟတဘ ကယသခငတ႔ movie တစခရ႕ data ဘပါတာျဖစတ႔ အတြက တစခါတညး $row['$value'] ဆတ႔ array function သးၿပး ယသးလကတာပါ။ မတမလားမသဘး။ မမတမရင ေရ႕က array အခနးက ျပနဖတေစျခငတယ။

Creating movie review table ခ movie တစချခငးစမာ သင႔ရ႕ မတခကေလးေတြ ထညပါဥးမယ။ တစခါတညး movie rat-ing ေလးေတြပါ ထညၾကညမယေလ။ သပမခကပါဘး။ အရငဆး database ထက လတာေလးေတြ ထညဥးမယေလ။

<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect to data-base. Check your database parameters'); mysql_select_db('moviesite1',$db) or die (mysql_error($db)); $query = 'CREATE TABLE IF NOT EXISTS reviews( review_movie_id INT UNSIGNED NOT NULL, review_date DATE NOT NULL, reviewer_name VARCHAR(255) NOT NULL, reviewer_comment VARCHAR(255) NOT NULL, review_rating TINYINT UNSIGNED NOT NULL DEFAULT 0, KEY (review_movie_id) ) ENGINE=MYISAM DEFAULT CHARSET=utf8'; mysql_query($query,$db) or die (mysql_error($db));

Page 137: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

137udkausmf

rZÑdr pmay

// Insert data to table $query =<<<ENDSQL INSERT INTO reviews (review_movie_id, review_date, reviewer_name, reviewer_comment, review_rating) VALUES (1,"2011-8-4","KoKo","I thought this was a great movie Even though my girlgriend made me see it against my will.",4), (1,"2011-9-4","MaMa","I like eraserhead better",3 ), (1,"2011-8-3","Shwe Zin","Very very Good. ",5), (2,"2011-8-25","Billy Bob","This is my favourite movie",5), (3,"2011-9-6","George B.","I liked this movie , even though I thought it was an informational movie from my travel agent.",4)ENDSQL; mysql_query($query,$db); echo ' Movie database successfully updated';?>ဒါက db4.php လ႔ နာမညေပးၿပး Run လကပါ။ Movie database successfully updated ဆၿပး ေပၚလာရင ရပါၿပ။

ဒသငခနးစာမာဆရင movies and review ဆတ႔ table ႏစခက link လပၿပးသကဆငရာ movie ေတြ အတြက review ေတြက ထတေပးမာျဖစပါတယ။ ဒသငခနးစာအတြက movie_details.php က a lot of changes လပရမာျဖစတ႔အတြက သင႔အေနန႔ movie_details.php က back up လပထားသင႔ပါတယ။ back up လပထားျခငးအားျဖင႔ သင႔အေနန႔ အမားေတြ အမားႀကး လပမတ႔အခါ ဒါမမဟတ original version က ျပနလျခငတ႔အခါမာ အခနမေရြး ျပနသြားလ႔ရပါတယ။ ခ ကၽြနေတာတ႔ movie rating အတြက function ေလးတစခ လပၾကညရေအာင။

Page 138: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;138

rZÑdr pmay

function generate_ratings($rating){ $movie_rating = ''; // Not double quote. for ($i=0;$i<$rating;$i++){ $movie_rating .= '<img src="star.png" alt="star"/>'; } return $movie_rating; }

ၿပးရင ေအာကဆးေနရာမာ movie information table က အပငး ၂ ပငးျဖစေအာင ခြထတလကပါမယ။ ဒါဆရင ဘာ code မမရေသးခငမာ ေအာကပါအတငးျဖစေနမာေပါ႔။</table>ENDHTML;

echo <<< ENDHTML </div> </body> </html> ENDHTML;?> ၿပးရင ေအာကပါ code ေတြက ခနက herdoc ၂ ခၾကားမာ ထညလကပါ။ // Retrieve the information reviews for this movie $query = 'SELECT review_movie_id,review_date, reviewer_name, reviewer_com-ment, review_rating FROM reviews WHERE review_movie_id= '.$_GET['movie_id'].' ORDER BY review_date DESC'; $result = mysql_query($query,$db) or die (mysql_error($db));

Page 139: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

139udkausmf

rZÑdr pmay

// Display reviewsecho <<<ENDHTML <h3><em>Reviews</em></h3> <table cellpadding="2" cellspacing="2" style="width:90%; margin-left:auto,margin-right:auto;"> <tr> <th style="width: 7em;">DATE</th> <th style="width: 10em;">Reviewer</th> <th>Comments</th> <th style="width:5em;">Rating</th> </tr>

ENDHTML;while($row = mysql_fetch_assoc($result)){ $date = $row['review_date']; $name= $row['reviewer_name']; $comment = $row['reviewer_comment']; $rating = generate_ratings($row['review_rating']);

echo <<<ENDHTML <tr> <td style="vertical-align:top;text-align:center;">$date</td> <td style="vertical-align:top;">$name</td> <td style="vertical-align:top;">$comment</td> <td style="vertical-align:top;">$rating</td> </tr> ENDHTML;}

Page 140: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;140

rZÑdr pmay

<?php // Connect to mysql database $db = mysql_connect('localhost','root','') or die ('Unable to connect'); mysql_select_db('moviesite1',$db) or die (mysql_error($db)); function get_director($director_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id = '.$director_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract($row); return $people_fullname; } function get_leadactor($leadactor_id){ global $db; $query = 'SELECT people_fullname FROM people WHERE people_id ='.$leadactor_id; $result = mysql_query($query, $db) or die (mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract ($row); return $people_fullname; } function get_movietype($type_id){ global $db; $query = 'SELECT movietype_label FROM movietype WHERE movietype_id ='.$type_id; $result = mysql_query($query,$db) or die (mysql_error($db)); $row = mysql_fetch_assoc($result) or die (mysql_error($db)); extract ($row);

Page 141: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

141udkausmf

rZÑdr pmay

return $movietype_label; } // Function to calculate if a movie made a profit, loss or just broke even function calculate_differences($takings, $cost) { $difference = $takings - $cost; if ($difference < 0) { $color = 'red'; $difference = '$' . abs($difference) . 'million'; } elseif ($difference > 0) { $color ='green'; $difference = '$' . $difference . 'million'; } else { $color = 'blue'; $difference = 'broke even'; } return '<span style="color:' . $color . ';">' . $difference . '</span >'; } // Generate ratings function generate_ratings($rating){ $movie_rating = ''; // Not double quote. for ($i=0;$i<$rating;$i++){ $movie_rating .= '<img src="star.png" alt="star"/>'; } return $movie_rating; }

Page 142: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;142

rZÑdr pmay

// Retrieve information $query = 'SELECT movie_name, movie_year, movie_director, movie_leadactor, mov-ie_type,movie_type, movie_runningtime, movie_cost, movie_taking FROM movie WHERE movie_id = '.$_GET['movie_id'];

$result = mysql_query($query,$db); $row = mysql_fetch_assoc($result); $movie_name = $row['movie_name']; $movie_director = get_director($row['movie_director']); $movie_leadactor = get_leadactor($row['movie_leadactor']); //$movie_type = get_movietype($row['movie_type']); $movie_year = $row['movie_year']; $movie_runningtime = $row['movie_runningtime']; $movie_taking = $row['movie_taking']; $movie_cost = $row['movie_cost']; $movie_health = calculate_differences($row['movie_taking'], $row['movie_cost']); // Display the information.echo <<<ENDHTML <html> <head> <title>Details and reviews for $movie_name.</title> <body> <div style="text-align:center";> <h2>$movie_name</h2> <h3><em>Get details</em></h3> <table cellpadding="2" cellspacing="2" style="width:70%;margin-left:auto;margin-right:auto;">

Page 143: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

143udkausmf

rZÑdr pmay

<tr> <td><strong>Title</strong></td> <td>$movie_name</td> <td><strong>Release year</strong></td> <td><strong>$movie_year</strong></td> </tr> <tr> <td><strong>Movie director</strong></td> <td>$movie_director</td> <td><strong>Cost</strong></td> <td><strong>$movie_cost</strong></td> </tr> <tr> <td><strong>Lead actor</strong></td> <td>$movie_leadactor</td> <td><strong>Takings</strong><td> <td><strong>$movie_taking</strong><td> </tr> <tr> <td><strong>Running Time</strong></td> <td>$movie_runningtime</td> <td><strong>Health</strong><td> <td><strong>$movie_health</strong><td> </tr> </table>ENDHTML; // Retrieve the information reviews for this movie $query = 'SELECT review_movie_id,review_date, reviewer_name, reviewer_comment, review_rating

Page 144: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;144

rZÑdr pmay

FROM reviews WHERE review_movie_id= '.$_GET['movie_id'].' ORDER BY review_date DESC'; $result = mysql_query($query,$db) or die (mysql_error($db)); // Display reviewsecho <<<ENDHTML <h3><em>Reviews</em></h3> <table cellpadding="2" cellspacing="2" style="width:90%; margin-left:auto,margin-right:auto;"> <tr> <th style="width: 7em;">DATE</th> <th style="width: 10em;">Reviewer</th> <th>Comments</th> <th style="width:5em;">Rating</th> </tr> ENDHTML;while($row = mysql_fetch_assoc($result)){ $date = $row['review_date']; $name= $row['reviewer_name']; $comment = $row['reviewer_comment']; $rating = generate_ratings($row['review_rating']); echo <<<ENDHTML <tr> <td style="vertical-align:top;text-align:center;">$date</td> <td style="vertical-align:top;">$name</td> <td style="vertical-align:top;">$comment</td> <td style="vertical-align:top;">$rating</td> </tr> ENDHTML;

Page 145: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

145udkausmf

rZÑdr pmay

}echo <<< ENDHTML </div> </body> </html> ENDHTML;?>

table3.php က run ၿပးေတာ႔ movie name တစခက click လပၾကညပါ။ ဒါဆရင သန႔သကဆငတ႔ details ေတြေရာ review ေတြေရာ ထြကလာမာပါ။

Page 146: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;146

rZÑdr pmay

generate rating function က နားလညမယလ႔ယဆပါတယ။ တစခ သတထားမလား .= က သးထားတာေလ။ အဒါက ဘာလဆေတာ႔ movie rate 1 ထကေကာရင star image ကလညး ၁ ထပေပါငးေပးၿပး ပရပအေရအတြကကပါ ထပတးခငးတာပါ။ ခ အေျခအေနထ သငေရာကလာၿပဆရင သငဟာ code ေတြက ေတာေတာေလး ကငတြယႏငခ႔ပါၿပ။ changes မးစလပလာခ႔ရတယ။ ဒါေပမယ႔ ေနာကဆးမာေတာ႔ အဆငေျပေျပ ျဖစခ႔တာဘမလား။ အရာအားလးက တစခါတညးန႔ ျဖစဖ႔ဆတာ ေတာေတာခကပါတယ။ ကယန႔ အကၽြမးတ၀င မျဖစတ႔ဟာဆ ပဆးတယေလ။ ခလညး ဒလပါဘ။ ထပခါတလလ ေလ႔ကင႔ပါ။ အဓကက ကယတငေရးဖ႔လပါတယ။ ေရးမ သမာ။ မတမမာ။ နားလည လြယမာေပါ႔။ ဒသငခနးစာမာဆရင MySQL က table ေတြန႔ ဘယလ ခတဆက အသးျပရမယ ၊ movie_id က depend လပၿပး review table ထက reviews ေတြအားလးက ဘယလ အသးခရတာ၊ $_GET ဆတ႔ superglobal သးၿပး page တစခကေန ေနာကတစခက access လပရတာေတြက သင႔အေနန႔ သရသြားမာျဖစပါတယ။

Exercises

For chapter (4)

1.Add an entry in the top table of your movie_details.php file that shows the average rating given by reviewers. 2.Change each column heading of the reviews table in your movie_details.php to a link that allows the user to sort by that column (i.e., the user would click on "Date" to sort all the reviews by date). 3.Alternate the background colors of each row in the review table of your mov-ie_details.php file to make them easier to read. Hint: odd - numbered rows would have a background of one color, even - numbered rows would have a background of another color.

Page 147: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

147udkausmf

rZÑdr pmay

Chapter (5)FORM Elements: Letting the User Work with Data

Interactive website ေတြမာ user input ေတြ လအပပါတယ။ ေယဘယအားျဖင႔ form ပစေတြန႔ သြားတာမားပါတယ။ HTML မာေတာ႔ form ပစေလးေတြက ရးရးေလးေတြပါဘ။ အဒထမာ ကၽြနေတာတ႔ submit လပလကတ႔ data ေတြက ဘယေနရာ က ဘယလ ပ႔မယဆတာေတြ ေဖာျပထားပါတယ။ ၿပးေတာ႔မ PHP န႔ တြၿပး သးပါတယ။ PHP script ဟာ HTML form က ပ႔လကတ႔ data ေတြက ရယၿပး action တစခခ ျပလပပါတယ။ ဘာ action ေတြလဆေတာ႔ Data-base က update လပတာတ႔၊ Sending an email, testing the data format and so on ေပါ႔ဗာ။ ကယဘာလပျခငသလဆတာေတြက ဆကလပတာေပါ႔။ အခ ဒသငခနးစာမာ သငဟာ simple application တစခ ျပလပၿပး edit, delete or add members of a data set ေတြ က ျပလပရမာပါ။ PHP and MySQL interaction ေတြ ျပလပရမာေပါ႔ဗာ။ ဒ သငခနးစာမာ ေအာကပါ အေၾကာငးအရာမား ပါ၀ငမာျဖစပါတယ - Creating forms using buttons, text boxes, and other form elements . Creating PHP scripts to process HTML forms . Passing hidden information to the form - processing script via hidden form controls and a URL query string

First form မငတစေထာင ခရးက စတငဖ႔အတြကဆရငေတာင ကၽြနေတာတ႔ဟာ ပထမဆး ေျခတစလမးကေန စ ရတယမဟတလားဗာ။ ခလညး ကၽြနေတာတ႔က very simple form ကေန စတငမယေလ။ ခ exercise မာ HTML form ကေန ေရးသြငးလကတ႔ နာမညက PHP န႔ ျပနျပမာပါ။

Page 148: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;148

rZÑdr pmay

ပထမဆး Form ပစေလးတစခေရးပါမယ။ form1.html လ႔နာမညေပးပါ။

<html> <head> <title>Say my name</title> </head> <body> <form action="formprocess1.php" method="post"> Username: <input type="text" name="username" /> <input type="submit" name="submit" value="Submit" /> </form> </body></html>

ခ ဒတယအေနန႔ Form ကေန ပ႔လကတ႔ data ေတြက PHP န႔ ျပနဖမး ၿပး output ထတေပးပါမယ။<html> <head> <title>Say My Name</title> </head> <body> <h2><?php echo 'Hello ' . $_POST['username']; ?></h2> <pre><strong>Debug:</strong> <?php print_r($_POST)?></pre> </body></html>ဒ script မာဆရင HTML form ကေန post method န႔ပ႔လကတ႔ data အားလးက super global vari-able ျဖစတ႔ $_POST န႔ ျပနယပါတယ။ array index name ကေတာ႔ HTML form မာ သးခ႔တ႔ name =" " ဆတ႔ အထက name ဘျဖစပါတယ။ ကၽြနေတာတ႔က name="username" လ႔ သးခ႔ေတာ႔ $_POST['username'] ဆၿပးျဖစသြားတာေပါ႔။ print_r ကေတာ႔ the whole content of super global ($_POST array) ထကဟာေတြက အကနထတျပခငးတာျဖစပါတယ။ ပမာၾကညပါ။

Page 149: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

149udkausmf

rZÑdr pmay

Page 150: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;150

rZÑdr pmay

ခ ဒ exercise မာေတာ႔ user က သင ေပးထားတ႔ value ေတြထက ႀကကရာ ေရြးခငးၿပး form submit လပခငးမာျဖစပါတယ။ HTML form မာ predefined user input က ႏစမးရပါတယ။ ပထမတစခက available options ေတြထက တစခကေရြးခငးတာန႔ ေနာကတစခက multiple items ေတြက ေရြးခငးတာျဖစပါတယ။ (၁)ပထမတစခအတြက Drop down list and raido button ေတြန႔ဆရင တစခ ဘ ေရြးခယလ႔ရမာျဖစၿပး (၂)ဒတယအတြက ကေတာ႔ check box and multiline list box က သးမယဆရင multiple choices လပလ႔ရမာပါ။ ခ ကၽြနေတာတ႔ simple input type က စတငေလ႔ကင႔ၾကညမယ။ single select list န႔လပမာေပါ႔။ ေအာကပါ အတငး ေရးၾကညရေအာင။ form2.html လ႔နာမညေပးလကပါ။ <html> <head> <title>form2</title> </head> <body> <form action="formprocess2.php" method="post"> <table> <tr> <td>Name:</td> <td><input type="text" name="name" /></td> </tr> <tr> <td>Greeting</td> <td> <select name="greeting"> <option>Hello</option> <option>Hi</option> <option>Mingalarpar</option> </select> </td> </tr>

Page 151: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

151udkausmf

rZÑdr pmay

<tr> <td> </td> <td> <input type="checkbox" name="debug" checked="checked" /> Display debug info </td> </tr> <tr> <td colspan="2" style="text-align:center;"> <input type="submit" name="submit" value="submit" /> </td> </tr> </table> </form> </body></html>

ၿပးသြားရင form2.html အတြက formprocess2.php က ဆကေရးပါမယ။

<html> <head> <title>Greeting2</title> </head> <body> <?php echo $_POST['name'].' '.$_POST['greeting']; if(isset($_POST['debug'])){ echo '<pre><h2>Debug</h2>'."\n"; print_r($_POST); echo'</pre>';} ?>

Page 152: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;152

rZÑdr pmay

</body></html>

ခထ နားလညဥးမယထငပါတယ။ HTML တတထားသေတြ ဆေတာ႔ သပ အခကအခမျဖစႏငပါဘး။

Page 153: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

153udkausmf

rZÑdr pmay

Form ေတြဟာဆရင user ေတြက ပ႔လကတ႔ data ေတြက ၾကတငသတမတထားတ႔ နညးလမးေတြေပၚမာ အေျခခၿပးေတာ႔ system ဆကပ႔ပါတယ။ သငဟာ form တစခထမာ action တစခထကပတ႔ ႀကတငသတမတခကေတြက တစျခား submit နညးလမးေတြသးၿပး လပလ႔ရပါတယ။

Radio buttons , Multiline list boxခ ဒ သငခနးစာမာ raido button , Multiline list boxes ေတြသးၿပးေတာ႔ movie, actor , director ေတြက search or create လပမာပါ။ ပထမဆး form3.php က ေရးပါမယ။ ေအာကပါအတငးပါ။<html> <head> <title> Add/Search Entry </title> <style type="text/css"> <!--td {vertical-align: top;} --> </style> </head> <body> <form action="formprocess3.php" method="post"> <table> <tr> <td> Name </td> <td> <input type="text" name="name"/> </td> </tr> <tr> <td> Movie Type </td> <td> <select name="movie_type"> <option value=""> Select a movie type... </option> <option value="Action"> Action </option> <option value="Drama"> Drama </option>

Page 154: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;154

rZÑdr pmay

<option value="Comedy"> Comedy </option> <option value="Sci-Fi"> Sci-Fi </option> <option value="War"> War </option> <option value="Other"> Other... </option> </select> </td> </tr> <tr> <td> Item Type </td> <td> <input type="radio" name="type" value="movie" checked="checked" /> Movie <br/> <input type="radio" name="type" value="actor"/> Actor <br/> <input type="radio" name="type" value="director"/> Director <br/> </td> </tr> <tr> <td></td> <td> <input type="checkbox" name="debug" checked="checked" /> Display Debug info </td> </tr> <tr> <td colspan="2" style="text-align: center;"> <input type="submit" name="submit" value="Search" /> <input type="submit" name="submit" value="Add" /> </td> </tr> </table> </form> </body> </html>

Page 155: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

155udkausmf

rZÑdr pmay

formprocess3.php ကဆကၿပးေရးပါမယ။<?php if ($_POST['type'] == 'movie' && $_POST['movie_type'] == '') { header('Location: form3.php'); }?> <html> <head> <title> <?php echo $_POST['submit'] . ' ' . $_POST['type'] . ': ' .$_POST['name']; ?> </title> </head> <body> <?php if (isset($_POST['debug'])) { echo ' <pre> '; print_r($_POST); echo ' </pre> '; } $name = ucfi rst($_POST['name']); if ($_POST['type'] == 'movie') { $foo = $_POST['movie_type'] . ' ' . $_POST['type']; } else { $foo = $_POST['type']; } echo ' <p> You are ' . $_POST['submit'] . 'ing '; echo ($_POST['submit'] == 'Search') ? 'for ' : ''; echo 'a ' . $foo . ' named ' . $name . ' </p> ';?> </body> </html>

Page 156: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;156

rZÑdr pmay

OK... အခ browser ကေန form3.php က ဖြင႔လကပါ။ ေအာကပါပအတငးျမငရပါမယ။

Page 157: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

157udkausmf

rZÑdr pmay

Multiple submit buttons

ေအာကမာျပထားတ႔ button ေတြက ၾကညၾကညပါ။ same name ျဖစေနပါတယ။ ဒါေပမယ႔ different values ေတြပါ။ အဒ button ေတြထက တစခခက ကလစလပလကရင submit form ျဖစသြားမာပါ။ Debug block မာ ၾကညလ႔ရပါတယ။ button ေတြဟာ own information/value ေတြကဘပ႔ေပးပါတယ။ script က ဒ value ေတြက ဖတၿပးေတာ႔ သင႔အား form တစခထမာဘ တစျခား process ေတြကပါ ထညသြငးႏငေစမာျဖစပါတယ။ <input type="submit" name="submit" value="Search" /> <input type="submit" name="submit" value="Add" />

Basic input testing

ေအာကမာျပထားတ႔ code ေတြဟာဆရင item type က movie ဟတမဟတစစေဆးပါတယ။ ၿပးေတာ႔ တစခါတညး user က movie type က ေရြးခယထားမထားဆတာ check လပပါတယ။ တကယလ႔ မေရြးထားခ႔ဘးဆရင form pagae က ျပနသြားေအာင header() function န႔ redirect လပထားတာပါ။

if ($_POST['type'] == 'movie' && $_POST['movie_type'] == '') { header('Location: form3.php'); }$_POST['movie_type'] == '' မာ '' က double quote မဟတဘးေနာ။ single quote ႏစခပါ။PHP will automatically send some HTTP headers before it sends any output to the browser. This is important to keep in mind, because once sent, HTTP headers cannot be sent again. If you use the header() function after output has already been sent (either by an echo or print statement, HTML,whitespace, etc.), then you will receive a warning.

Page 158: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;158

rZÑdr pmay

Ternary operator Ternary operator ဆတာ php ရ႕ specific operator မဟတပါဘး။ language ေတာေတာမားမားမာလညး ပါပါတယ။ သ႔က ဘယလေနရာေတြမာသးလဆရင အဓကအားျဖင႔ True / False စစတ႔ေနရာမာသးတာမားပါတယ။ သ႔ကသးျခငးအားျဖင႔ ရရႏငတ႔အကးေကးဇးေတြက clean code/short ျဖစတယ။ user validating ေတြကစစတ႔ ေနရာမာအမားဆးအသးခႏငပါတယ။ if - else အစားထးသးတာေပါ႔။ သ႔ရ႕ပစေလးက ေအာကပါအတငးျဖစပါတယ။

[expression] ? [execute if true] : [execute if false];နမနာေလးတစခန႔ျပပါမယ။ formprocess3.php ကဟာကဘယျပလကမယ။

echo $_POST['submit'] == 'Search' ? 'for ' : '';

ဒါကရငးျပရရင user ဟာ search က ကလစ ခ႔မယဆရင for ဆတာက ထတေပးမာျဖစၿပး Add က ကလစခ႔တယဆရင empty string ကဘထတေပးမာပါ။ ဒါက if - else န႔ေရးမယဆရင

if ($_POST['submit'] == 'Search'){ echo 'for '; } else{ echo ''; }

if - else န႔သးမလား ternary operator န႔သးမလားဆတာေတာ႔ကယ႔ဟာက ဆးျဖတဖ႔လပါတယ။ ေနရာတငးမာ if -else အစား ternary operator က သးလ႔ မသင႔ေတာပါဘး။ တစခါတစေလမာ maintain လပရတာ ခကပါတယ။ ေအာကက ဥပမာတစခက ထပေလ႔လာပါဥး။

Page 159: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

159udkausmf

rZÑdr pmay

$num = 0; if ($num < 0) { $value = 'The value is negative.'; echo $value; } else { if ($num > 0) { $value = 'The value is positive.'; echo $value; } else { $value = 'The value is zero.'; echo $value; } }?>

ဒါက ternary န႔ေရးတာ<?php $num = 42; echo 'The value is '; echo ($num < 0) ? 'negative.' : ($num > 0) ? 'positive.' : 'zero.';?>

Linking forms together

ခဆရငသငဟာ form ေတြက ေတာေတာအသးျပတတေနၿပလ႔ယဆလ႔ရပါတယ။ form ေတြက တစချခငးစ သးၿပးတ႔ေနာကမာ အခေတာ႔ တစခန႔တစခ ခတဆကအသးျပပါမယ။ ခ exercise မာေတာ႔ database ထက new item add လပျခငးန႔ ရၿပးသားထကဟာက Search လပျခငးေတြက ျပလပသြားမာျဖစပါတယ။ ပထမဆး အေနန႔ေတာ႔ database န႔ interaction လပတာက မလပဘ form ေတြကဘ create လပၿပး link လပကာ browser ေပၚမာ ျပႏငေအာင အရငဆး ျပလပသြားၾကမာျဖစပါတယ။

ပထမဆး form4.php က ေရးပါမယ။

Page 160: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;160

rZÑdr pmay

<html> <head> <title>Multipurpose form<title> <style type="text/css"> <!-- td{ vertical-align:top; } --> </style> </head> <body> <form action="form4a.php" method="post"> <table> <tr> <td>Name</td> <td><input type="text" name="name" /></td> </tr> <tr> <td>Item Type</td> <td> <input type="radio" name="type" value="movie" checked="checked" />Movie<br /> <input type="radio" name="type" value="actor" />Actor<br /> <input type="radio" name="type" value="director" />Director<br /> <td> </tr> <tr> <td>Movie type</td>

Page 161: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

161udkausmf

rZÑdr pmay

<td> <select name="movie_type" > <option value="">Select a movie type...</option> <option value="Action">Action</option> <option value="Drama">Drama</option> <option value="Comedy">Comedy</option> <option value="Sci-Fi">Sci-Fi</op-tion> <option value="War">War</op-tion> <option value="other">Other</op-tion> </select> </td> </tr> <tr> <td> <input type="checkbox" name="debug" checked="checked" />Display debug info </td> </tr> <tr> <td colspan="2" style="text-align:center;"> <input type="submit" name="submit" value="Search" /> <input type="submit" name="submit" value="Add" />

Page 162: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;162

rZÑdr pmay

</td> </tr> </table> </form> </body></html>ဒတယအေနန႔ form4a.php ကေရးမာျဖစပါတယ။

<?php // Make sure the user selected a movie type if they are adding a movie. // If not, send them back to the first form if($_POST['submit'] == 'Add'){ if($_POST['type'] == 'movie' && $_POST['movie_type'] == ''){ header('location: form4.php'); } }?><html> <head> <title>Multipurpose form</title> <style type="text/css"> <!-- td{ vertical-align:center; } --> </style> </head> <body> <?php // Show a form to collect more information if the user is adding something

Page 163: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

163udkausmf

rZÑdr pmay

if($_POST['submit']=='Add'){ echo '<h2> Add '.ucfirst($_POST['type']).'</h2>'; ?> <form action="form4b.php" method="post"> <input type="hidden" name="type" value="<?php echo $_POST['type']; ?>" /> <table> <tr> <td>Name</td> <td><?php echo $_POST['name'] ; ?> <input type="hidden" name="name" value="<?php echo $_POST['name']; ?>" /> </td> </tr> <?php if($_POST['type'] == 'movie'){ ?> <tr> <td> Movie Type </td> <td> <?php echo $_POST['movie_type']; ?> <input type="hidden" name="movie_type" value="<?php echo $_POST['movie_type']; ?>" /> </td> </tr>

Page 164: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;164

rZÑdr pmay

<tr> <td>Year</td> <td> <input type="text" name="year" /> </td> </tr> <tr> <td>Movie description</td> <?php }else{ echo '<tr><td>Biography</td>'; } ?> <td><textarea name="extra" rows="5" cols="60"></textarea></td> </tr> <tr> <td colspan="2" style="text-align:center;"> <?php if(isset($_POST['debug'])){ echo '<input type="hidden" name="debug" value="on" />'; } ?> <input type="submit" value="Submit" value="Add" /> </td> </tr> </table> </form>

Page 165: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

165udkausmf

rZÑdr pmay

<?php // If user is just searching for something }else if($_POST['submit'] == 'Search'){ echo '<h1> Search for '.ucfirst($_POST['type']).'</h1>'; echo '<p> Searching for '.$_POST['name'].'...</p>'; } if(isset($_POST['debug'])){ echo '<h2>Debug:</h2><pre>'; print_r($_POST); echo '</pre>'; } ?> </body></html>

တတယအဆင႔အေနန႔ form4b.php က ေရးပါမယ။ <html> <head> <title>From 4b</title> </head> <body> <?php if($_POST['type'] == 'movie'){ echo'<h1>NEW'. ucfirst($_POST['movie_type']).' : '; }else{ echo'<h1>NEW'. ucfirst($_POST['type']) .' :'; } echo $_POST['name'] .'</h1>'; echo '<table>'; if($_POST['type'] == 'movie'){ echo '<tr>'; echo '<td>Year: </td>'; echo '<td>'.$_POST['year'].'</td>'; echo '</tr><tr>'; echo '<td>Movie description: </td>';

Page 166: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;166

rZÑdr pmay

}else{ echo '<tr><td>Biography: </td>'; } echo '<td>' .$_POST['extra'].'</td>'; echo '</tr>'; echo '</table>'; ?> </body></html>

Browser ကေန form4.php ကဖြင႔လကပါ။ ေအာကပါအတငးျမငရပါမယ။

Page 167: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

167udkausmf

rZÑdr pmay

Page 168: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;168

rZÑdr pmay

Exercises

For chapter (5)

1. Create a form and a processing page that let you choose a rating (stars, thumbs up, number from 1 to 5, whatever), and provide comments for a movie. 2. Create a form with several text input boxes that allow you to populate the options of a select field on a subsequent page. 3. Create a calculator form that takes two numbers and calculates their sum.

Page 169: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

169udkausmf

rZÑdr pmay

Chapter (6)Letting the user Edit the Database

database ေတြဟာ သတ႔ထမာရတ႔ data ေတြက self generate မလပႏငပါဘး။ system တစခရ႕ အကညကေတာ႔ အနညးန႔အမားလအပပါတယ။ integrated system လဟာမးေပါ႔။ ခဆရင သငဟာ basic SQL syntax ေတြက သရနားလညၿပးခ႔တ႔ေနာကမာ Table ထက data ေတြက user ေတြက ျမငႏငေအာင ထတျပႏငခ႔ၿပး ျဖစပါတယ။ ခတစဆင႔တကၿပးေတာ႔ user ေတြက Edit , de-lete, update ေတြလပလ႔ရေအာင ျပလပေပးၾကပါမယ။ ဒသငခနးစာမာ ေအာကပါအေၾကာငးအရာမားပါ၀ငပါတယ - - Adding entries - Deleting entries - Modifying entries ကၽြနေတာတ႔က ခ လကရသးေနတ႔ moviesite1 database ကဘ ဆကသးသြားမာျဖစပါတယ။ ပထမဆး database က ျပငဖ႔အတြက logic ကကစဥးစားၾကညမယဆရင admin ကသာ ျပငသင႔တယမဟတလား။ အဒေတာ႔ ကၽြနေတာတ႔က admin page တစခက create လပရမယ။ da-tabase မာ အဓက ဘာေတြပါလလ႔ၾကညရင movie and people ဘပါတယေလ။ ဟတဘးလား။ အဒေတာ႔ movie ဆတ႔ table ရယ people table ေတြက add or delete လပလ႔ရေအာင ေရးမယ။

Creating admin page

admin.php က ေအာကပါအတငးေလးေရးပါမယ။<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1',$db) or die (mysql_error($db));?>

Page 170: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;170

rZÑdr pmay

<html> <head> <title>Movie database</title> <style type="text/css"> th { background-color: #999; } .odd_row{ background-color: #EEE; } .even_row{ background-color: #FFF; } </style> </head> <body> <table style="width:100%;"> <tr> <th colspan="2"> Movie <a href="movie.php?action=add">Add</a> </th> </tr> <?php $query = 'SELECT * FROM movie'; $result = mysql_query($query,$db); $odd = true; while ( $row = mysql_fetch_assoc($result)){ echo ($odd == true )? '<tr class="odd_row">' : '<tr class="even_row">'; $odd = !$odd; echo '<td sytle="width:25%">';

Page 171: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

171udkausmf

rZÑdr pmay

echo $row['movie_name']; echo '</td><td>'; echo '<a href="movie.php?action=edit&id='.$row['movie_id'].'">[Edit]</a>'; echo '<a href="delete.php?type=movie&id='.$row['movie_id'].'">[Delete]</a>'; echo '</td></tr>'; } ?> <tr> <th colspan="2">People<a href="people.php?action=add"> Add</a></th> </tr> <?php $query = 'SELECT * FROM people'; $result = mysql_query($query,$db); $odd = true; while ( $row = mysql_fetch_assoc($result)){ echo ($odd ==true )? '<tr class="odd_row">' : '<tr class="even_row">'; $odd = !$odd; echo '<td sytle="width:25%">'; echo $row['people_fullname']; echo '</td><td>'; echo '<a href="people.php?action=edit&id='.$row['people_id'].'">[Edit]</a>'; echo '<a href="delete.php?type=people&id='.$row['people_id'].'">[Delete]</a>'; echo '</td></tr>'; }

Page 172: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;172

rZÑdr pmay

?> </table> <body></html>

browser ကေန admin.php က ၾကညရငေအာကပါအတငးေတြ႕ရမာပါ။

Page 173: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

173udkausmf

rZÑdr pmay

admin.php ထကဟာေတြက ခခနမာေတာ႔ျပငလ႔မရေသးဘးေနာ။ ဘာလ႔ဆေတာ႔ ကၽြနေတာတ႔ေတြ create မလပရေသးဘး။

How it works

Odd and even rows ေတြက different color န႔ ေဖာျပေပးထားတာပါ။ while loop ေတြ မစခငမာ $odd = true လ႔ေပးခ႔ပါတယ။ while loop ထမာေတာ႔ == သးၿပး ေရးထားတာက သတျပပါ။ = က တနဖး တစခ သတမတတာျဖစၿပး == ကေတာ႔ compare လပတာျဖစပါတယ။ အစဥးဆးက true လပလကေတာ႔ tr တနဖးက ternary operator အရ true ျဖစသြားတယေလ။ ဒေတာ႔ tr = odd_row ျဖစသြားတာေပါ႔။ odd_row ဆေတာ႔ သက background-color: #EEE; လ႔ သတမတခ႔တ႔အတြက မးခးေရာငေလး ျဖစသြားမာပါ။ အဒကေန တစဆင႔ထပဆငးေတာ႔ $odd != $odd ျဖစသြားတယ။ ဆလတာက false ျပနျဖစၿပေပါ႔။ အဒ info ေလးက ေနာကထပပတမယ႔ Loop မာ ထညေပးလကတာေလ။ ဒေတာ႔ false ျဖစသြားေတာ႔ FFF အေရာင(အျဖ)န႔ ျပေပးတာပါ။

Inserting a Record in a Relational Database

Database ေတြမာ မားေသာအားျဖင႔ table တစခထကပၿပး ပါေလ႔ရပါတယ။ အဒ table ေတြအားလးဟာ တစခန႔တစခ လး၀ independent ျဖစေနလ႔လညးျဖစပါတယ။ ဒါေပမယ႔ အဒါက ဘာန႔တလဆေတာ႔ သငဟာ ကားက ၀ယထားၿပး မေမာငးဘ ဂေထာငထ သမးထားတာန႔တပါတယ။ သာမနအားျဖင႔ database ထက table ေတြဟာ တစခခန႔ ဆကစပေနေလ႔ရပါတယ။ ဟးအရငတစခနတနးကေတာ႔ အခသးေနတ႔ relational database လ႔ေခၚတ႔ အမးအစားမးမရခ႔ပါဘး။ database ထက row တငးဟာ information အားလးက ထနးသမးရပါတယ။ ဥပမာ ေပါ႔.. ခ movie database ထက movie table ဆပါစ႔။ အဒ table ထမာ movie ေတြေရာ actor , director, movietype, အစရသျဖင႔ အကန ထညထားရမာပါ။ တကယလ႔ သငဟာ Mov-ie category တစခခက ျပငခငတယဆပါစ႔။ သင႔အေနန႔ row တငးက လကျပငဖ႔လပါတယ။ ဒါ ေရးေရးတနးကဟာ။ ခေခတ relational database management system (RDBMS) မာေတာ႔ ဒလ ျပငဖ႔ မလေတာ႔ပါဘး။ movietype table တစခ လပလကမယ။ ၿပးရင တစခခန႔ link လပလကမယ။ movietype_id လဟာမးေပါ႔။ movietype_id = 5 က drama ဆပါေတာ႔။

Page 174: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;174

rZÑdr pmay

တကယလ႔ အဒ drama က action လ႔ ေျပာငးခငတယဆရင movietype_id = 5 က action လ႔ေျပာငးလကရင ကနတ႔ movie ေတြအကနလး ( movietype_id =5 ျဖစတ႔ဟာေတြ) action ျဖစသြားမာပါ။ ဒါက relational database လ႔ေခၚပါတယ။ table တစခန႔တစခ link လပဖ႔က primary key / foreign key pair ဆတာန႔ လပရပါတယ။ primary key ဆတာက set value or value ျဖစၿပးေတာ႔ သ႔က Table ထက တစခထရတ႔ ဟာမးက သတမတပါတယ။ ဥပမာ movie id ဆပါစ႔။ သင႔ database ထမာ mov-ie ေတြအမားႀကးရပါမယ။ အဒထမာ နာမညတေတြလညး ရႏငတယေလ။ ဒါေၾကာင႔ movie name က primary သတမတရင မတကတာေတြရလာႏငတယ။ ဒါေပမယ႔ movie id ဆတာကေတာ႔ တစခတညးရတာ။ 1, 2, 3, 4 and so on သြားတာေလ။ movie နပါတ ၁ လ႔ ညႊနးလကတာန႔ အဒ movie နပါတ ၁ ကဘ တနးသြားတာ။ အဒေတာ႔ primary key ေတြက ခလမး uniquely ရတ႔ တနဖးေတြကဘ သတမတသင႔ပါတယ။ foreign key ဆတာကေတာ႔ တစျခားtable ထမာ ခနက pri-mary key က ျပနၿပး reference လပတာပါ။ ေအာကက exercise ကေတာ႔ PHP and SQL က သးၿပးေတာ႔ movie database ထက in-sert လပမာပါ။ သြငးမယ႔ movie type က known file type ျဖစပါတယ။ movietype table ထမာ ရေနတ႔ဟာေပါ႔။ <?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db));?><html> <head> <title>Add movie</title> </head> <body> <table> <form action="commit.php?action=add&type=movie" method="post"> <tr><td>Movie name:<input type="text" name="movie_name" /></td></tr>

Page 175: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

175udkausmf

rZÑdr pmay

<tr><td>Movie type:<select name="movie_type"> <?php $query = 'SELECT movietype_id, movietype_label FROM movietype ORDER BY movietype_label'; $result = mysql_query($query,$db); // Populate the select options with the result while ($row = mysql_fetch_assoc($result)){ foreach($row as $value){ echo '<option value="'.$row['movietype_id'].'">'; echo $row['movietype_label'].'</option>'; } } ?> </select> <tr> <td> Movie year: <select name="movie_year"> <?php for($yr=Date("Y"); $yr >=1970; $yr--){ echo '<option value="'.$yr.'">'.$yr.'</option>'; } ?> </select> </td> </tr> <tr><td>Movie actor:<select name="movie_leadactor"> <?php

Page 176: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;176

rZÑdr pmay

$query = 'SELECT people_id, people_fullname FROM people WHERE people_isactor=1 ORDER BY people_fullname'; $result = mysql_query($query,$db) or die(mysql_error($db)); // Populate while ($row = mysql_fetch_assoc($result)){ foreach ($row as $value){ echo '<option value="'. $row['people_id'] .'">'; echo $row['people_fullname'].'</option>'; } } ?> </select> <tr><td>Movie director:<select name="movie_di-rector"> <?php $query = 'SELECT people_id, people_fullname FROM people WHERE people_isdirector=1 ORDER BY people_fullname';

Page 177: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

177udkausmf

rZÑdr pmay

$result = mysql_query($query,$db) or die(mysql_error($db)); // Populate while ($row = mysql_fetch_assoc($result)){ foreach($row as $value){ echo '<option value="'.$row['people_id'].'">'; echo $row['people_fullname'].'</option>'; } } ?> </select> </td></tr> <tr colspan="2"> <td><input type="submit" name="submit" value="Add" /></td> </tr> </form> </table> </body></html>

ဒါက movie.php လ႔ နာမညေပးၿပးေတာ႔ browser ကေန ၾကညၾကညပါ။

Page 178: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;178

rZÑdr pmay

ဒလပစေလးျမငရမာပါ။ ခခနမာ Add လပလကရင commit.php မရေသးတ႔အတြက လပလ႔ရမာမဟတပါဘး။ ခ commit.php file ေလးက ထပေရးပါမယ။

<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db));?><html> <head> <title> Add Movie database</title> </head> <body> <?php switch($_GET['action']){ case 'add': switch ($_GET['type']){ case 'movie':

Page 179: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

179udkausmf

rZÑdr pmay

$query = 'INSERT INTO movie (movie_name, movie_year, movie_type, movie_leadactor, movie_director) VALUES ( "'.$_POST['movie_name'].'", '.$_POST['movie_year'].', '.$_POST['movie_type'].', '.$_POST['movie_leadactor'].', '.$_POST['movie_director'].' )'; break; } break; } if (isset($query)){ $result= mysql_query($query, $db) or die (mysql_error($db)); } ?> <p>Done!!!</p> </body></html>

Add လပလကရင ေအာကပါအတငးေပၚလာမာပါ။ data ေတြ insert လပတာ ၿပးသြားေၾကာငးေပၚလာမာပါ။

Page 180: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;180

rZÑdr pmay

ေရ႕သငခနးစာမာတနးက for loop ကရငးျပခ႔တယေနာ။ ခ year က တြကထတတ႔ေနရာမာလညး for loop ကသးပါတယ။ သ႔ရ႕ပစက ဒလေလးေလ for (initialize; condition; increment) { // code }ခက initialize အေနန႔ Current date က Date function သးၿပး ေခၚလကတယ။ ေနာကၿပးေတာ႔ con-dition အေနန႔ 1970 က သတမတလကတယ။ increment ကေတာ႔ decrement လပလကတယ။ တစႏစစေလာ႔သြားမာေပါ႔။ ကနတ႔ movie actor and movie director တ႔ကလညး movie type ရာတနးက အတငးဘလပလကပါတယ။ ခဆရင သငဟာ Add လပဖ႔ အဆငသင႔ျဖစေနပါၿပ။ Add လပလကတာန႔ action မာ ျပထားတ႔အတငး commit.php က ကးေျပာငးသြားၿပးေတာ႔ အဒထက ခငးေစထားတ႔အတငး ဆက run ပါတယ။ commit.php မာ ဘာေရးထားတာလဆေတာ႔ movie.php မာ ေရးထားခ႔တ႔ <form action="commit.php?action=add&type=movie" code ေတြက GET method န႔ လမးယပါတယ။ switch statement န႔ ယတာပါ။ ခက add တစခထျဖစတာျဖစတ႔အတြက switch statement က သပမလဘးလ႔ယဆလ႔ရပါတယ။ ဘာျဖစလ႔လဆေတာ႔ action=add တစခထျဖစတ႔အတြကျဖစပါတယ။ တကယလ႔ delete ေတြ edit ေတြပါလာမယဆရင action=edit, action=delete , type=movie ကလညး type=actor, type=director စသျဖင႔ေတြျဖစလာရင switch statement ရ႕ အသး၀ငပက ပသလာမာပါ။ ခကေတာ႔ Switch ကေန $_GET ['action'] ကယတယၿပးရင $_GET['type'] က ယတယ။ action က ယၿပးတာန႔ သရ႕ case ကၾကညတယ။ add လပမာလား delete လပမာလားေပါ႔။ အဒေတာ႔ case က ေလာေလာဆယ add ေပါ႔။ add လပမာကသၿပးတ႔ေနာကမာ ဘာက add မာလညးဆတာ ဆကၾကညဖ႔လပါတယ။ ဒေတာ႔ case add ေအာကမာေနာကထပ switch statement ထပတညေဆာကပါတယ။ type ကၾကညၿပးေတာ႔ add လပလ႔ရေအာငပါ။ ခသငခနးစာမာေတာ႔ type က movie တစခတညးျဖစတ႔အတြက case 'movie':

ေပါ႔။ ဟတၿပ အဒ movie ေအာကမာမ သ႔အတြက query တစခ တညေဆာကေပးလကတယ။ IN-SERT query ေပါ႔။ ခ ဒါက နားလည သြားၿပဆရင delete လပဖ႔အတြက ဆကေရးမယ။ movie.php က code ေတြ က ျပငေရးေပးရဥးမယ။ အေရးႀကးဆးကေတာ႔ commit.php က switch statement ဘ။

Page 181: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

181udkausmf

rZÑdr pmay

Deleting record

delete လပတာကေတာ႔ very easy ပါဘ။ delete လပမယဆရငေတာ႔ ေသခာဖ႔လပါတယ။ ဘာလ႔လဆေတာ႔ delete လပၿပးသြားရင data က ျပန မရႏငေတာ႔ပါဘး။ DELETE statement ကသးရတာ SELECT statement က သးရတာန႔ဆငပါတယ။ ေအာကပါအတငးေလးပါဘ။

SELECT * FROM movie where movie_id = 4;

delete statement က ေအာကပါအတငးျဖစပါတယ။

DELETE * FROM movie where movie_id = 4; ျဖစပါတယ။ ဒမာအေရးႀကးတာက where clause က ေသခာေအာင ေရြးေပးဖ႔လပါတယ ။ MySQL database က relational database type ဆတာ သထားခ႔ၿပးၿပေနာ။ ဒါေၾကာင႔ Table ေတာေတာမားမားဟာ တစခန႔တစခ ဆကစပေနေလ႔ရပါတယ။ table တစခထကဟာက delete လပလကရင ေနာက Table တစခက အဒ delete လပလကတာက reference လပဖ႔ လတယဆရင သငဟာ ေတာေတာမားမားက လကျပငရမာျဖစပါတယ။ MySQL မာ relation ျဖစတ႔ဟာေတြက auto delete လပမေပးပါဘး။ ဒေတာ႔ သင႔အေနန႔ delete လပေတာ႔မယဆရငေတာ႔ ေသခာစဥးစားေပးပါ။ ဒလမး ျပနာက ေကာလႊားႏငဖ႔အတြက cas-cade delete လပၿပးေကာလႊားႏငပါတယ။ ခ သငဟာ ဘယလ delete လပရမယဆတာ သၿပေနာ။ သၿပးၿပဆရင people table ထက actor တစေယာကက delete လပၾကညမယ။ ပထမဆး movie table က update လပဖ႔လပါတယ။ ဘာလ႔လဆေတာ႔ movie table ထမာ movie_leadactor ဆတာပါတယေလ။ သငက people ထက NayAung က ဖကယဘဖကလကမယဆရင movie table ထက movie_leadactor ထမာ NayAung ဆတ႔နာမညကနခ႔မယေလ။ ဒေတာ႔ အဒနာမညေနရာက တစခခ အစားထးေပးရမယ။ သည 0 ေပါ႔။ တကယလ႔ NayAung ဆတ႔နာမည တစျခား table မာပါေသးတယဆလညး update လပေပးဖ႔လပါတယ။ ခက ၂ ေနရာမာဘပါလ႔ပါ။ တကယလ႔ movie table ထကဟာက delete လပမယဆရငေတာ႔ တစျခားေနရာေတြမာ update လပဖ႔ မလအပပါဘး။

Page 182: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;182

rZÑdr pmay

ခ delete.phpက ေရးရေအာင။<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db));

switch($_GET['type']){ case('people'): $query = 'UPDATE movie SET movie_leadactor = 0 WHERE movie_leadactor ='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db)); $query = 'DELETE FROM people WHERE people_id='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db)); echo 'Your person has been deleted<br />'; echo '<a href="movie_index.php">Return to index</a>'; break; case('movie'): $query = 'DELETE FROM movie WHERE movie_id='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db)); echo ' Your movie has been deleted.<br />'; echo '<a href="movie_index.php">Return to index</a>'; break;}?>

ခ admin.php က browser ကေန run ၿပးေတာ႔ People ေအာကက Ron livingston က delete လပၾကညရေအာင။ Delete က click လကတာန႔ ခကျခငး delete ျဖစသြားၿပး ေအာကပါအတငး ေတြ႕ရမာပါ။

Page 183: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

183udkausmf

rZÑdr pmay

ေအာကပါအတငး ေရးလ႔ရပါတယ။ if - else ေလးသးၿပးေရးလ႔ရပါတယ။ if { //code no execute //return to index page }else{ //process delete query }ဒေတာ႔ ဒလေလးေရးၾကညမယ။

Page 184: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;184

rZÑdr pmay

if(!isset($_GET['do']) || ($_GET['do'] != 1)){ switch ($_GET['type']){ case ('movie'): echo 'Are you sure you want to delete this movie? <br />'; break; case('people'): echo'Are you sure you want to delete this people?<br />'; break; } echo '<a href="'.$_SERVER['REQUEST_URI'].'&do=1">Yes</a>'; echo ' Or <a href="admin.php">Return to index</a>';}else{// remaining code} ဒါက ဘာက ျပသလဆေတာ႔ တစခခက မဖကခငမာ confirm တစခ ေတာငးတာပါ။ !isset($_GET['do']) လ႔ေရးရတာက do လပရမယလ႔ မသတမတခ႔ရင လ႔ေရးတာပါ။ ေနာကတစခက do != 1 လ႔ သတမတခ႔ရငလ႔ေရးတာေပါ႔။ ဒ do ဆတာက ဘယကေန ရမလဆေတာ႔ ေအာကမာ ေရးထားတ႔ echo statement ကေန ျပနယတာပါ။ SERVER_REQUEST_URI ဆတာက လကရေရာကေနတ႔ ေနရာကေျပာတာပါ။ တကယလ႔ သငဟာ YES က ကလစလကမယဆရင do=1 ျဖစသြားၿပ။ ဒေနရာမာ စဥးစားစရာေလးတစခကေျပာျပမယေနာ။ if statement က အလပလပေနၿပဘ။ ဘာလ႔ ေအာကက else statement က အလပလပသြားတာလလ႔။ အမနကေတာ႔ အခ အေျခအေနမာ else statement က အလပက လပရမာ။ ဒါမ delete ျဖစမာေလ။ if statement မာက သ႔ရ႕ statement မာ (!isset($_GET['do']) || ($_GET['do'] != 1)) ဒလေရးခ႔တ႔အတြက do မလပရဘးလ႔ သတမတခ႔တာေပါ႔။ ဒါေပမယ႔ သ႔ရ႕ ေအာကက YES က ကလစလကမယဆရင do =1 ျဖစသြားၿပေလ။ ဒေတာ႔ အဒ statement က မားသြားၿပေလ။ ဒေတာ႔ else statement က ဆကၿပး အလပလပသြားတာေပါ႔။ ေသခာနားလညေအာင ၾကညေပးပါ။ တစခါတညးမရရင ရတ႔အထ နားလညေအာငႀကးစားေစခငပါတယ။ Programming ေရးတာ thinking အမားႀကးပါပါတယ။

Page 185: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

185udkausmf

rZÑdr pmay

အဒေတာ႔ သ႔ရ႕ အစအဆး code က ေအာကပါအတငးျဖစသြားမာေပါ႔။

<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db));

if(!isset($_GET['do']) || ($_GET['do'] != 1)){ switch ($_GET['type']){ case ('movie'): echo' Are you sure you want to delete this movie? <br />'; break; case('people'): echo' Are you sure you want to delete this people?<br />'; break; } echo '<a href="'.$_SERVER['REQUEST_URI'].'&do=1">Yes</a>'; echo ' Or <a href="admin.php">Return to index</a>'; }else{ switch($_GET['type']){ case('people'): $query = 'UPDATE movie SET movie_leadactor = 0 WHERE movie_leadactor ='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db)); $query = 'DELETE FROM people WHERE people_id='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db));

Page 186: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;186

rZÑdr pmay

echo 'Your person has been deleted<br />'; echo '<a href="movie_index.php">Return to index</a>'; break; case('movie'): $query = 'DELETE FROM movie WHERE movie_id='.$_GET['id']; $result = mysql_query($query,$db) or die (mysql_error($db)); echo ' Your movie has been deleted.<br />'; echo '<a href="movie_index.php">Return to index</a>'; break; } } ?> ခ people table ထမာ Ron livingston ဆတာ မရေတာ႔ပါဘး ။ သ သရပေဆာငထားတ႔ ရပရငျဖစတ႔ office space မာလညး movie_leadactor ေနရာမာလညး သည 0 က အစားထးသြားပါၿပ။ ခေလာကဆ delete လပတာက အေတာမားမား နားလည သေဘာေပါကေလာကၿပထငပါတယ။

Editing Data in a Record ဒ exercise မာေတာ႔ သင႔ အေနန႔ database က ျပငဆငခြင႔ရေအာင ျပလပသြားမာျဖစပါတယ။ ေရးၿပးသား movie.php ကဘ အနညးငယျပငေရးယပါဘ။

<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite',$db) or die(mysql_error($db));

Page 187: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

187udkausmf

rZÑdr pmay

if($_GET['action'] == 'edit'){ $query = 'SELECT movie_name, movie_type,movie_year, movie_lead-actor, movie_director FROM movie WHERE movie_id='.$_GET['id']; $result = mysql_query($query,$db); extract(mysql_fetch_assoc($result)); }else{ $movie_name=''; $movie_type=0; $movie_year=date('Y'); $movie_leadactor=0; $movie_director=0;

}?><html> <head> <title><?php echo ucfirst($_GET['action']); ?> movie</title> </head> <body> <table> <form action="commit.php?action=<?php echo $_GET['action'];?>&type=movie" method="post"> <tr><td>Movie name:<input type="text" name="movie_name" value="<?php echo $movie_name; ?>" /></td></tr> <tr><td>Movie type:<select name="movie_type"> <?php $query = 'SELECT movietype_id, movietype_label FROM movietype ORDER BY movietype_label'; $result = mysql_query($query,$db);

Page 188: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;188

rZÑdr pmay

// Populate while ($row = mysql_fetch_assoc($result)){ foreach($row as $value){ // NEED TO FIND ERROR with FOREACH if($row['movietype_id']==$movie_type){ echo '<option value="'.$row['movietype_id'].'" selected="selected">'; }else{ echo '<option value="'.$row['movietype_id'].'">'; } echo $row['movietype_label'].'</option>'; } } ?> </select> </td> </tr> <tr><td>Movie actor:<select name="movie_leadactor"> <?php $query = 'SELECT people_id, people_fullname FROM people WHERE people_isactor=1 ORDER BY people_fullname'; $result = mysql_query($query,$db) or die(mysql_error($db));

Page 189: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

189udkausmf

rZÑdr pmay

// Populate while ($row = mysql_fetch_assoc($result)){ foreach ($row as $value){ if($row['people_id']==$movie_leadactor){ echo'<option value="'.$row['people_id'].'" selected="selected">'; }else{ echo '<option val-ue="'. $row['people_id'] .'">'; } echo $row['people_fullname'].'</option>'; } } ?> </select> <tr><td>Movie director:<select name="movie_di-rector"> <?php $query = 'SELECT people_id, people_fullname FROM people WHERE people_isdirector=1 ORDER BY people_fullname'; $result = mysql_query($query,$db) or die(mysql_error($db)); // Populate while ($row = mysql_fetch_assoc($result)){ foreach($row as $value){ if($row['people_id']==$movie_director){ echo'<option value="'.$row['people_id'].'" selected="selected">';

Page 190: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;190

rZÑdr pmay

}else{ echo '<option value="'. $row['people_id'] .'">'; } echo $row['people_fullname'].'</option>'; } } ?> </select> </td></tr> <tr colspan="2"> <?php if($_GET['action']=='edit'){ echo '<input type="hidden" val-ue="'.$_GET['id'].'" name="movie_id" />'; } ?> <td><input type="submit" name="submit" value="<?php echo ucfirst($_GET['action']); ?>" /></td> </tr> </form> </table> </body></html>

ၿပးရင commit.php မာ edit အတြက ျပငေရးေပးဖ႔လပါေသးတယ။

Page 191: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

191udkausmf

rZÑdr pmay

case 'edit': switch ($_GET['type']){ case 'movie': $query = 'UPDATE movie SET movie_name="'.$_POST['movie_name'].'", movie_year='.$_POST['movie_year'].', movie_type='.$_POST['movie_type'].', movie_leadactor='.$_POST['movie_leadactor'].', movie_director='.$_POST['movie_director'].' WHERE movie_id='.$_POST['movie_id']; break; } break;ဒ code ေလးေတြ ထပေပါငးေပးရမာပါ။ အစအဆးဆရင ေအာကပါအတငး ျမငရမာျဖစပါတယ။<?php $db = mysql_connect('localhost','root','') or die ('Unable to connect, check your database parameters.'); mysql_select_db('moviesite1',$db) or die(mysql_error($db));?><html> <head> <title> Add Movie database</title> </head> <body>

Page 192: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;192

rZÑdr pmay

<?php switch($_GET['action']){ case 'add': switch ($_GET['type']){ case 'movie': $query = 'INSERT INTO movie (movie_name, movie_year, movie_type, movie_leadactor, movie_director) VALUES ( "'.$_POST['movie_name'].'", '.$_POST['movie_year'].', '.$_POST['movie_type'].', '.$_POST['movie_leadactor'].', '.$_POST['movie_director'].' )'; break; } break; case 'edit': switch ($_GET['type']){ case 'movie': $query = 'UPDATE movie SET movie_name="'.$_POST['movie_name'].'", movie_year='.$_POST['movie_year'].', movie_type='.$_POST['movie_type'].', movie_leadactor='.$_POST['movie_leadactor'].', movie_director='.$_POST['movie_director'].' WHERE movie_id='.$_POST['movie_id']; break; } break; }

Page 193: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

193udkausmf

rZÑdr pmay

if (isset($query)){ $result= mysql_query($query, $db) or die (mysql_error($db)); } ?> <p>Done!!!</p> </body></html>

How it workscommit.php ကေတာ႔ အကယတ၀န႔မရငးေတာ႔ပါဘး။ ေရ႕မာ ရငးခ႔တ႔ဟာက နားလညရင

ခထပေပါငး ေရးလကတာကလညး နားလညမာ ျဖစပါတယ။ ပထမဆး If statement က ၾကညပါ။ query string parameter name ျဖစတ႔ action က defi ned လပခ႔တယ။ action = edit ျဖစခ႔ရင corresponding database record န႔ပါတသတတ႔ id ေတြရ႕ query string parameter ေတြက ျမငေတြ႕ရမာျဖစပါတယ။ ၿပးေတာ႔ some variables ေတြကလညး set လပႏငမာျဖစပါတယ။

<td><input type="text" name="movie_name" value="< ?php echo $movie_name; ? > "/></td> ဒ ဥပမာေလးကတစခကၾကညၾကညပါ။ movie_name ဆတ႔ fi eld က $movie_name ဆတ႔ variable ထက content ေတြက default အေနန႔ယပါတယ။ ဒလလပျခငးအားျဖင႔ record က edit လပရန form က အဒ record data န႔ဘ reload ျဖစေစၿပး user က ျပနျပပါတယ။ ဒါေၾကာင႔ ThaGyanMoe က Edit လပလကရင Movie name ေနရာမာ ThaGyanMoe ဆတ႔ ရႏင႔ၿပးသား re-cord data က ျပတာပါ။ အထကကလမး text fi eld က ျပငရတာ ရငးလငးလြယကပါတယ။ list fi eld က ျပငရတာၾကေတာ႔ တစမးျဖစသြားၿပ။ သင႔အေနန႔ User က dropdown list ေလးဘထတျပလ႔မရဘး။ user အေနန႔ original value က မျပငဘ ထားရငေရာ ဘယလလပမလ။ သင႔အေနန႔ original value က default အေနန႔ ျပကျပထားရမယ။ ဒါမ user က မျပငျခငရင skip လပသြားႏငမာပါ။ ေအာကက code ေလးက ေလ႔လာၾကညပါ။

Page 194: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;194

rZÑdr pmay

<?php

$query = 'SELECT movietype_id, movietype_label

FROM movietype

ORDER BY movietype_label';

$result = mysql_query($query,$db);

// Populate

while ($row = mysql_fetch_assoc($result)){

foreach($row as $value){

if($row['movietype_id']==$movie_

type){

echo '<option value="'.$row['movietype_id'].'"

selected="selected">';

}else{

echo '<option value="'.$row['movietype_id'].'">';

}

echo $row['movietype_label'].'</option>';

}

}

?>

ဒ script မာဆရင list တစခလးက reload လပပါတယ။ ဒါ႔အျပင filed အတြငးက current val-ue န႔ default value က compare လပပါတယ။ တကယလ႔ identical ျဖစခ႔မယဆရင selected လပလကပါတယ။ ဆလတာက သင႔ အေနန႔ list ထကေန ဘာကဘေရြးေရြး identical ျဖစမာဘေလ။ သင႔အေနန႔ list ထမာ predefined လပထားတာေတြက default value ေတြျဖစသြားမာေပါ႔။ action တ႔ drama တ႔ ေပါ႔။ တျခား director တ႔ ဘာတ႔လညး ဒ concept ေတြခညးပါဘ။

Page 195: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

195udkausmf

rZÑdr pmay

ExerciseFor chapter (6)

1. Create the edit/delete code for the people table. Use the movie code as an example.

Page 196: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;196

rZÑdr pmay

Answers For Exercises For chapter (2)1. Ans<html> <head> <title> How many days in this month? </title> </head> <body> <?phpdate_default_timezone_set('Asia/Yangon'); $month_name = date('F');echo ' <p> The month is ' . $month_name . '. </p> ';echo ' <p> There are ';$month = date('n');if ($month == 1) { echo '31'; }if ($month == 2) { echo '28 (unless it\'s a leap year)'; }if ($month == 3) { echo '31'; }if ($month == 4) { echo '30'; }if ($month == 5) { echo '31'; }if ($month == 6) { echo '30'; }if ($month == 7) { echo '31'; }if ($month == 8) { echo '31'; }if ($month == 9) { echo '30'; }if ($month == 10) { echo '31'; }if ($month == 11) { echo '30'; }if ($month == 12) { echo '31'; }echo ' days in this month. </p> ';$months_left = 12 - $month;echo ' <p> There are ' . $months_left . ' months left in the year. </p> ';?> </body> </html>

Page 197: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

197udkausmf

rZÑdr pmay

2. Ans<?phpinclude 'footer.php';?>Then you need to create the fi le footer.php , which consists of these lines

<div style="text-align: center"> This site developed by: <a href="mailto:[email protected]"> Admin </a> </div>

3. Ans greeting_for_chap2.php<html> <head> <title> Greeting </title> </head> <body> <?phpdate_default_timezone_set('Yangon/Asia'); if (date('G') >= 5 && date('G') <= 11) { echo ' <h1> Good Morning! </h1> ';}else if (date('G') >= 12 && date('G') <= 18) { echo ' <h1> Good Afternoon! </h1> ';}else if (date('G') >= 19 && date('G') <= 4) { echo ' <h1> Good Evening! </h1> ';}?> </body> </html>

Page 198: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;198

rZÑdr pmay

4. Ans First you would display a form to your users, possibly on the login page, such as this: <table> <tr> <td> <label for="font"> Select Font: </label> </td>

<td> <select id="font" name="font"> <option value="Verdana"> Verdana </option> <option value="Arial"> Arial </option> <option value="Times New Roman"> Times New Roman </option> </select> </td> </tr> <tr> <td> <label for="size"> Select Size: </label> </td> <td> <select id="size" name="size"> <option value="10px"> 10px </option> <option value="12px"> 12px </option> <option value="16px"> 16px </option> <option value="20px"> 20px </option> </select> </td> </tr> <tr> <td> <label for="color"> Select Color: </label> </td> <td> <select id="size" name="size"> <option value="black"> black </option> <option value="green"> green </option> <option value="purple"> purple </option> <option value="red"> red </option> </select> </td> </tr> </form> Store the received values in your session variables. You would add something like

Page 199: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

199udkausmf

rZÑdr pmay

this to whatever the fi rst script is that processes the form

$_SESSION['font']=$_POST['font'];$_SESSION['size']=$_POST['size'];$_SESSION['color']=$_POST['color'];

Then, every time you had text that needed to be styled, you could output your session variables ' value, like this: <p <?php

echo ' style="font-family: ' . $_SESSION['font'] . '; ';echo 'font-size: ' . $_SESSION['size'] . '; ';echo 'color: ' . $_SESSION['color']. ';" ';?>> Text to display </p>

5. Ans You would add a line like this to the end of your font preference form:<input type="checkbox" id="save_prefs" name="save_prefs"/>

<label for="save_prefs"> Save these preferences for the next time you login. </label>

Then at the very beginning of the script that processes the incoming form data, you would add a statement that looks something like this:

if (isset($_POST['save_prefs'])) { setcookie('font', $_POST['font'], time() + 60); setcookie('size', $_POST['size'], time() + 60); setcookie('color', $_POST['color'], time () + 60);

}

Instead of accessing those variables through the session later when you need them, you would access them through the cookie like this: echo $_COOKIE['font'];

Page 200: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;200

rZÑdr pmay

6. Ans<?phpfunction display_times($num) { echo ' <h1> You have viewed this page ' . $num . ' time(s). </h1> ';} // get the cookie value and add 1 to it for this visit$num_times = 1;if (isset($_COOKIE['num_times'])) { $num_times = $_COOKIE['num_times'] + 1;} // set the value back to the cookie for the next timesetcookie('num_times', $num_times, time() + 60);?> <html> <head> <title> Viewed Times </title> </head> <body> <?php display_times($num_times); ?> </body> </html>

Page 201: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

201udkausmf

rZÑdr pmay

For chapter (3)

1. Ans<?phpfunction get_people_fullname($db, $people_id) { $query = 'SELECT people_fullname FROM people WHERE people_id = ' . $people_id; $result = mysql_query($query, $db) or die(mysql_error($db)); $row = mysql_fetch_assoc($result); return $row['people_fullname'];} $db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db));?> <html> <head> <title> Movie Info </title> </head> <body> <table border="1"> <tr> <th> Movie Name </th> <th> Lead Actor </th> <th> Director </th> </tr>

Page 202: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;202

rZÑdr pmay

<?php//get the movies$query = 'SELECT movie_name, movie_leadactor, movie_director FROM movie';$result = mysql_query($query, $db) or die(mysql_error($db)); while ($row = mysql_fetch_assoc($result)) { //call our functions to get specific info $actor_name = get_people_fullname($db, $row['movie_leadactor']); $director_name = get_people_fullname($db, $row['movie_director']); //show table row echo ' <tr> '; echo ' <td> ' . $row['movie_name'] . ' </td> '; echo ' <td> ' . $actor_name . ' </td> '; echo ' <td> ' . $director_name . ' </td> '; echo ' </tr> ';}?> </table> </body> </html>

2. Ans<?php$db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db));

?>

Page 203: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

203udkausmf

rZÑdr pmay

<html> <head> <title> Comedy Movies </title> </head> <body> <table border="1"> <tr> <th> Movie Name </th> <th> Year </th> </tr> <?php// get the movie_type for comedies$query = 'SELECT movietype_id FROM movietype WHERE movietype_label = "Comedy"';$result = mysql_query($query, $db) or die(mysql_error($db));$row = mysql_fetch_assoc($result); //get the movies$query = 'SELECT movie_name, movie_yearFROM movie WHERE movie_type = ' . $row['movietype_id'] . ' ORDER BY movie_name';$result = mysql_query($query, $db) or die(mysql_error($db));

while ($row = mysql_fetch_assoc($result)) {

Page 204: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;204

rZÑdr pmay

//show table row echo ' <tr> '; echo ' <td> ' . $row['movie_name'] . ' </td> '; echo ' <td> ' . $row['movie_year'] . ' </td> '; echo ' </tr> ';}?> </table > </body > </html>

3. Ans

<?php$db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); mysql_select_db('moviesite1', $db) or die(mysql_error($db)); //get our starting point for the query from the URLif (isset($_GET['offset'])) { $offset = $_GET['offset'];

} else { $offset = 0;}//get the movie$query = 'SELECT movie_name, movie_year FROM movie ORDER BY

Page 205: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

205udkausmf

rZÑdr pmay

movie_name LIMIT ' . $offset . ', 1';$result = mysql_query($query, $db) or die(mysql_error($db));$row = mysql_fetch_assoc($result);?> <html> <head> <title> <?php echo $row['movie_name']; ?> </title> </head> <body> <table border="1" > <tr> <th> Movie Name </th> <th> Year </th> </tr> <tr> <td> <?php echo $row['movie_name']; ?> </td> <td> <?php echo $row['movie_year']; ?> </td> </tr> </table> <p> <a href="page.php?offset=0" > Page 1 </a> , <a href="page.php?offset=1" > Page 2 </a> , <a href="page.php?offset=2" > Page 3 </a> </p> </body>

</html>

Page 206: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;206

rZÑdr pmay

For chapter (4)

1. Ans First you need to add the display in your movie_details.php file, as follows: // display the informationecho <<<ENDHTML <html> <head> <title> Details and Reviews for: $movie_name </title> </head> <body> <div style="text-align: center;"> <h2> $movie_name </h2> <h3> <em> Details </em> </h3> <table cellpadding="2" cellspacing="2" style="width: 70%; margin-left: auto; margin-right: auto;"> <tr> <td> <strong> Title </strong> </strong> </td> <td> $movie_name </td> <td> <strong> Release Year </strong> </strong> </td> <td> $movie_year </td> </tr> <tr> <td> <strong> Movie Director </strong> </td> <td> $movie_director </td> <td> <strong> Cost </strong> </td> <td> $$movie_cost < td/ > </tr> <tr> <td> <strong> Lead Actor </strong> </td> <td> $movie_leadactor </td> <td> <strong> Takings </strong> </td> <td> $$movie_takings < td/ > </tr> <tr>

Page 207: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

207udkausmf

rZÑdr pmay

<td> <strong> Running Time </strong> </td> <td> $movie_running_time </td> <td> <strong> Health </strong> </td> <td> $movie_health < td/ >

</tr> <tr> <td> </td> <td> </td> <td> <strong> Average Review </strong> </td> <td> $average_review < td/ > </tr> </table> ENDHTML; Then you can create a function to determine the number of total reviews and calculate the average. These lines would go near the top of your movie_details.php file where the rest of the functions are defined. function get_avg_review($db, $movie_id) { $query ='SELECT review_rating FROM reviews WHERE review_movie_id = ' . $movie_id; $result = mysql_query($query, $db); $total_reviews = mysql_num_rows($result); $current = 0; while ($row = mysql_fetch_assoc($result)) { $current = $current + $row['review_rating']; } return $current / $total_reviews;}

Page 208: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;208

rZÑdr pmay

Then call the function when you get the main information for the movie by adding the following lines to movie_details.php : $movie_health = calculate_differences($row['movie_takings'], $row['movie_cost']);$average_review = get_avg_review($db, $_GET['movie_id']);$average_review = round($average_review, 2);

2. Ans You need to change your movie_details.php file as follows: if (isset($_GET['sort'])) { $sort = $_GET['sort'];} else { $sort = 'review_date'; } // retrieve reviews for this movie$query = 'SELECT review_movie_id, review_date, reviewer_name, review_comment, review_rating FROM reviews WHERE review_movie_id = ' . $_GET['movie_id'] . ' ORDER BY ' . $sort . ' ASC'; $result = mysql_query($query, $db) or die(mysql_error($db));// display the reviews$mid = $_GET['movie_id'];echo <<<ENDHTML <h3> <em> Reviews </em> </h3> <table cellpadding="2" cellspacing="2" style="width: 90%; margin-left: auto; margin-

Page 209: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

209udkausmf

rZÑdr pmay

right: auto;" > <tr> <th style="width: 7em;"> <a href="movie_details.php?movie_id=$mid&ort=review_date"> Date </a> </th> <th style="width: 10em;"> <a href="movie_details.php?movie_id=$mid&sort=reviewer_name"> Reviewer</a> </th> <th> <a href="movie_details.php?movie_id=$mid&sort=review_comment">Comments</a> </th> <th style="width: 5em;"> <a href="movie_details.php?movie_id=$mid&sort=review_rating">Rating</a> </th> </tr> ENDHTML;3. AnsYour movie_details.php fi le will need these lines added in or changed: $odd = true;while ($row = mysql_fetch_assoc($result)){ $date = $row['review_date']; $name = $row['reviewer_name']; $comment = $row['review_comment']; $rating = generate_ratings($row['review_rating']); if ($odd) { echo '<tr style="background-color: #EEEEEE;">';} else {

Page 210: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;210

rZÑdr pmay

echo '<tr style="background-color: #FFFFFF;">'; } echo <<<ENDHTML <td style="vertical-align:top; text-align: center;">$date</td> <td style="vertical-align:top;"> $name </td> <td style="vertical-align:top;"> $comment </td> <td style="vertical-align:top;"> $rating </td> </tr> ENDHTML; $odd = !$odd;}

Page 211: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

211udkausmf

rZÑdr pmay

For chapter (5)

1. Ans<form method="post" action="showratings.php"> <table> <tr> <td> Movie title: </td> <td> <input type="text" name="movie"></td> </tr> <tr> <td> Rating: </td> <td> <?phpfor ($i = 1; $i<= 5; $i++) { echo '<input type="radio" name="rating" value="' . $i . '">'. $i .' <br/> ';}?> </td> </tr> <tr> <td> Comments: </td> <td> <textarea name="comments" cols="40" rows="10"> </textarea> </td> </tr> </table> </form>

Page 212: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;212

rZÑdr pmay

2. AnsThis exercise takes the form of two pages. The first provides the form to enter the options, and the latter shows the result. First, the form on the input page:

<form method="post" action="showratings.php"> <table> <tr> <td> Select options: </td> <td> <?phpfor ($i = 0; $i < 5; $i++) { echo ' <input type="text" name="sval[' . $i . ']" /> <br/> ';}?> </td> </tr> </table> </form>

And then, on the second page:<select> <?phpfor ($i = 0; $i < 5; $i++) { echo ' <option value="' . $_POST['sval'][$i] . '" > ' . $_POST['sval'][$i] . ' </option> ';}?> </select>

Page 213: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

213udkausmf

rZÑdr pmay

3.Ans This exercise is easily handled using a few form fi elds and some basic arithmetic:<?php$num1 = (isset($_POST['num1'])) ? $_POST['num1'] : null;$num2 = (isset($_POST['num2'])) ? $_POST['num2'] : null;$operator = (isset($_POST['operator'])) ? $_POST['operator'] : '+';?> <form method="post" action="#" > <div> <input type="text" name="num1" size="3" value=" <?php echo $num1; ?>" /> <select name="operator"> <option value="+" <?php if ($operator == '+') { echo 'selected="selected"'; } ?>>+ </option> <option value="-" <?php if ($operator == '-') { echo 'selected="selected"'; } ?>>- </option> <option value="*" <?php if ($operator == '*') { echo 'selected="selected"'; } ?>>& times; </option> <option value="/" <?php if ($operator == '/') { echo 'selected="selected"'; } ?>>& divide;</option> </select> <input type="text" name="num2" size="3" value=" <?php echo $num2; ?>" /> <input type="submit" value="=" /> <strong> <?phpif (!is_null($num1) && !is_null($num2)) { if ($operator == '+') { echo $num1 + $num2; } else if ($operator == '-') { echo $num1 - $num2;

Page 214: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;214

rZÑdr pmay

} else if ($operator == '*') { echo $num1 * $num2; } else if ($operator == '/') { echo $num1 / $num2; } else { echo 'UNKNOWN'; }}?> </strong> </div> </form>

Page 215: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

215udkausmf

rZÑdr pmay

For chapter (6)1.Ans One possible solution is as follows. Change commit.php as highlighted: <?php//connect to MySQL$db = mysql_connect('localhost', 'root', '') or die ('Unable to connect. Check your connection parameters.'); //make sure our recently created database is the active onemysql_select_db('moviesite1', $db) or die(mysql_error($db));?> <html> <head> <title> Commit </title> </head> <body> <?phpswitch ($_GET['action']) {case 'add': switch ($_GET['type']) { case 'movie': $query = 'INSERT INTO movie (movie_name, movie_year, movie_type, movie_leadactor, movie_director) VALUES ("' . $_POST['movie_name'] . '", ' . $_POST['movie_year'] . ', ' . $_POST['movie_type'] . ', ' . $_POST['movie_leadactor'] . ', ' . $_POST['movie_director'] . ')'; break;

Page 216: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;216

rZÑdr pmay

case 'people': $query = 'INSERT INTO people (people_fullname, people_isactor, people_isdirector) VALUES ("' . $_POST['people_name'] . '", ' . $_POST['people_isactor'] . ', ' . $_POST['people_isdirector'] . ')'; break; } break;case 'edit': switch ($_GET['type']) { case 'movie': $query = 'UPDATE movie SET movie_name = "' . $_POST['movie_name'] . '", movie_year = ' . $_POST['movie_year'] . ', movie_type = ' . $_POST['movie_type'] . ', movie_leadactor = ' . $_POST['movie_leadactor'] . ', movie_director = ' . $_POST['movie_director'] . ' WHERE movie_id = ' . $_POST['movie_id']; break; case 'people': $query = 'UPDATE people SET people_fullname = "' . $_POST['people_fullname'] . '", people_isactor = "' . $_POST['people_isactor'] . '", people_isdirector = "' . $_POST['people_isdirector'] . '" WHERE people_id = ' . $_GET['id']; break; } break;

Page 217: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

217udkausmf

rZÑdr pmay

} if (isset($query)) { $result = mysql_query($query, $db) or die(mysql_error($db));}?> <p> Done! </p> </body> </html>

Page 218: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;

rZÑdr pmay

မာတကာ

Chapter(1), Configure your installation Introduction . . . . . . . . . .1 Requirements . . . . . . . . . .2Starting with browser. . . . . . . . .6How to use notepad. . . . . . . . .8

Chapter (2), Creating PHP pages using PHPHow PHP fits with HTML. . . . . . . .9 The important of coding pratices . . . . . .10 Creating your first program. . . . . . . .12Integrating HTML with PHP . . . . . . .15Considerations with HTML inside PHP . . . . .15Using Constants and Variables to add Functionality . . . .17 Overview of constants. . . . . . . .17 Overview of variables. . . . . . . .19 Using variables. . . . . . . . .19Passing variables between pages . . . . . .22Passing variables through a URL . . . . . .22Special characters in URLs . . . . . . .25 Passing variables with SESSIONS . . . . . .26 Comparison operators. . . . . . . .31 Passing variables with cookies . . . . . .33

Page 219: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

udkausmf

rZÑdr pmay

Passing information with Forms . . . . . . .37Using forms to get information . . . . . . .37Using if / else arguments . . . . . . . .42Using if statements . . . . . . . . .42Using if and else together . . . . . . . .44 While and do-while . . . . . . . . .46do-while loop. . . . . . . . . .47FOR loop . . . . . . . . . .47FOREACH. . . . . . . . . . .48BREAK. . . . . . . . . . .50Switch . . . . . . . . . . .50Continue . . . . . . . . . . .52return . . . . . . . . . . .53Understanding ARRAYS . . . . . . . .53Incrementing / Decrementing operators . . . . . .55Logical operators . . . . . . . . .55Using INCLUDES for Efficient code . . . . . .57Using FUNCTIONS . . . . . . . . .59All about Arrays . . . . . . . . . .64Sorting Arrays . . . . . . . . . .67Concatenate . . . . . . . . . .79

Page 220: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

PHP avScg;xpfrsm;220

rZÑdr pmay

udkausmf

rZÑdr pmay

Chapter (3) , Using PHP with MySQLOverview of MySQL structure and Syntax . . . . .81MySQL structure . . . . . . . . .81Field types . . . . . . . . . . .82Choosing the right field type . . . . . . . .85null or not null . . . . . . . . . .86Indexes . . . . . . . . . . .87Auto-increment . . . . . . . . . .87Type of MySQL Tables and Storage Engine . . . . .88MySQL syntax and commands . . . . . . .89How PHP fits with MySQL . . . . . . . .90Connecting to the MySQL Server . . . . . . .91Looking at the ready-made Database . . . . . .92Querying the database . . . . . . . . .99WHERE . . . . . . . . . . .100Logical operators . . . . . . . . .101Working with PHP and arrays of Data(foreach) . . . . .104Using foreach to create table . . . . . . . .106Working with two tables . . . . . . . .107Referencing Two Tables . . . . . . . .107Referencing Individual Tables . . . . . . .108

Page 221: Phpmyanmaruploadedbylusoegyiprogrammerfacebook com-120719081831-phpapp02

221udkausmf

rZÑdr pmay

PHP avScg;xpfrsm;

rZÑdr pmay

Chapter (4), Using Tables to Display Data Creating a table . . . . . . . . . .113Using heredoc syntax . . . . . . . . .119Adding links to table . . . . . . . . .127Creating movie review table . . . . . . . .136

Chapter (5), FORM Elements: Letting the User Work with DataFirst Form . . . . . . . . . . .147Multiple submit buttons . . . . . . . .157Basic input testing . . . . . . . . .157Ternary operator . . . . . . . . . .158Linking forms together . . . . . . . . .159

Chapter(6), Letting the user Edit the Database Creating admin page . . . . . . . . .169Inserting a Record in a Relational Database . . . . .173Deleting record . . . . . . . . . .181Editing Data in a Record . . . . . . . .186