วววววววววววววววววววว Appserv Download ตตตตตตตตตต AppServ ตตตตต Download Serv ตตตตตตตตตตตตตตตตตตตตตตตตตตต ตตตตตตต 1.ตตตตตตตตตตตตตต Appserv
วธตดตงและใชงาน Appserv
Download ตวโปรแกรม AppServ
เมอ Download Serv เรยบรอยขนตอนตอไปคอการตดตง
1.ตดตงโปรแกรม Appserv
จะพบกบหนาตาง Welcome ในแตละเวอรชน แตละรนของ AppServ กจะมหนาตางไมเหมอนกน ขนอยกบวาเราดาวนโหลดเวอรชนไหน
ยอมรบเงอนไขของ AppServ เราจงจะสามารถทำาการตดตง และไปยงขนตอนตอไปได
เลอกโฟลเดอรทเราจะทำาการตดตง AppServ ลงไป คาเรมตน จะตดตงไวท Dive C:/AppServe
เลอก Component ทตองการจะตดตง ในทนเลอกทงหมดเลย
กำาหนด ขอมลของเซฟเวอร ตรงนเราจะกำาหนดเปนอะไรกได เพราะมนอยในเครองของเราอยแลว เชน Server Name เปน http://pongpat.janthai.com E-Mail เปน [email protected] เปนตน
กำาหนดรหสผานสำาหรบใชตดตอกบเซฟเวอรของเรา กำาหนดเปนรหสงายๆกได เชน 12345 เพราะเวลาเราทดสอบโปรแกรมจะไดเขยนงายๆ ใสเขาไปทงสองชอง ใสใหเหมอนกนดวยหละ ชองอนกไมตองเปลยนแปลง
เมอคลก Install กจะเรมขนตอนการตดตง
ในบางครงอาจจะมการแจงเตอน Window Security Alert ขนมากไมตองตกใจ ใหเรา Unblock ไป
เทานกเปนอนวาทำาการตดตงเสรจเรยบรอย
พนฐาน HTML
HTML เปนภาษาหรอ code ทใชสราง เวบเพจ โดยแสดงผลผาน browser ซงจะแปลงหนาโคดน เปน ขอความ ภาพ และอนๆ ตามทสรางไว แมวาปจจบน จะมโปรแกรม เครองมอ ทชวยสราง Web Page เชน Microsoft Frontpage, Macromedia Dream Weaver, Edit Plus ซงอำานวยความสะดวกในการสรางหนา HTML ในลกษณะ WYSIWYG (What You See Is What You Get) แตหากเรามความเขาใจภาษา HTML กจะเปนประโยชนอยางมาก เพราะจะทำาใหเรา สามารถแกไข code HTML ไดโดยตรง ตดตอ แปะ script ทไดมาเพอสรางลกเลน สสนให web page หรอปรบแก code ท generate โดยโปรแกรมเหลาน ซงมก generate มากเกน สำาหรบเผอใช ทำาใหไฟล HTML มขนาดใหญ เกนความจำาเปน และแสดงผลชา
ในสวน Body ของหนาเวบเพจหนงๆ อาจประกอบดวยสวนประกอบหลกตางๆ ดงน Frame แบงโครงสรางของหนาเปนสวนๆ โดยแตละสวน ถอเปนไฟล HTML แตละไฟล Table แบงโครงสรางของหนาเปนตารางหลายเซลล หลายคอลมน แตละแถว อาจมจำานวนคอลมนไมเทากน หรอแตละคอลมน อาจมจำานวนแถวไมเทากนได Paragraph แสดงขอความเมอขนยอหนาใหม Font แสดงรปแบบตวอกษร อาจเตมส กำาหนด Font ทำาตวหนา ตวเอยง ได List แสดงขอมลเปนรายการ โดยอาจเปน Bullet
หรอเปนตวเลข (Order List) ได Image แทรกรปภาพ / Flash Object แทรกเปนภาพเคลอนไหวในรปแบบ Flash ได Link ใชสราง Link โดยอาจ Link จากขอความ หรอจากภาพ กได สามารถ Link แลวเปดเปน Window ใหม หรอ Window เดม ได อาจ Link ไปไฟลอนในไซต, Link เปน URL ใหมเลยกได หรอ Link เปนไฟล เชน Word, Power Point กได <HTML>?</HTML> เปนคำาสงสำาหรบเรมตน code สวนทเปนภาษา HTML <HEAD>?</HEAD> ใชกำาหนดรายละเอยดของหวเรอง และรายละเอยด ในสวน Head จะประกอบดวย Tag HTML คอ tag <TITLE>..</TITLE>, tag <SCRIPT>? </SCRIPT>
<META?> ใชกำาหนดรายละเอยด อนๆ ซงจะกลาวตอไป <BODY>? </BODY> เปนสวนแสดง รายละเอยด คอสวนทเนอหาทแสดงทางหนาจอทงหมด สวนประกอบ หลก ไดแก paragraph, image, font, link, table สำาหรบใชจดหนา
โครงสรางของหลกของ HTML<html>
<head>
คำาสงในหวขอขอ head
</head>
<body> คำาสงในหวขอของ body ในสวนนจะเปนสวนทใชแสดงผล
</body>
</html>
พนฐาน PHP
Personal Home Page(PHP) เกดขนในป 1994 โดยโปรแกรมเมอรชาวสหรฐอเมรกาชอ Resmus Lerdorf ไดพฒนาโปรแกรมสำาหรบเกบขอมลของผใชทเขามาเยยมชมเวบเพจสวนตว เรยกโปรแกรมทพฒนานวา PHP ยอมาจาก Personal Home Page Tools และไดมการพฒนาสวนทใชตดตอฐานขอมลทเรยกวา Form Interpreter และไดนำาทงสองสวนมารวมกน ซงมผคนมากมายตางตดตอของโคดโปรแกรมเพอนำาไปพฒนาในลกษณะทเรยกวา Open Source จงมผสนใจทจะนำามาพฒนาระบบจำานวนมาก สามารถดาวนโหลดโปรแกรม PHP และคมอการใชงาน (PHP Manual)
หลกในการทำางานของโปรแกรม PHP จะเรมทำางานกตอเมอในฝงของโคลเอนต มการรองขอเขามายงฝงของเซรฟเวอร ในสวนของเวบเซรฟเวอร ซงเปนโปรแกรมททำาหนาทจดการและควบคมการสงผานขอมลเวบเพจ และขอมลตางๆ ไปยงเครองไคลเอนตทรองขอเขามา และเมอโคดถกเรยกใหทำางานของเบราเซอรนน โปรแกรม PHP ในฝงของเซอรฟเวอรททำาหนาทเปนเวบเซรฟเวอรกจะทำาการประมวลผล แลวสงผลทไดกลบมายงฝงของไคลเอนตทรองขอเขามา เพอใหเบราเซอรแสดงและเวบเบราเซอรทมการใชกนแพรหลายในปจจบนคอ Internet Explorer PHP จดเปนภาษาสครปตทเขยนแทรกไวภายในไฟล HTML โดยเปดดวยแทก <?php หรอ <? และแทกปดดวย ?> หรอ </script> ดงน
รปแบแทก เปดแทก ปดแทกแบบมาตรฐาน <?php ?>แบบสน <? ?>แบบ ASP <% %>แบบ Script <script
language=“PHP”</script>
รปแบบคำาสง PHP
<HTML><BODY><?php
Echo “Happy New Year Good By!!” ;?></BODY></HTML>
ลกษณะเดนของ PHP 1) ความรวดเรวในการพฒนาโปรแกรม เนองจาก PHP เปนสครปตแบบ Embeded คอ สามารถแทรกรวมกบภาษา HTML ไดอยางอสระและหากพฒนาโคดไวในรปแบบของ Class ทเขยนเพยงครงเดยวแลวเรยกใชงานไดตลอด ทำาใหสะดวกและรวดเรวตอการพฒนาโปรแกรมตางๆ 2) PHP เปนโคดแบบเปดเผย (Open Source) จงมกลมของผใชงานอยเปนจำานวนมากทวโลกและมเวบไซตอยจำานวนมากทเปนแหลงรวบรวมซอสโคดโปรแกรมหรอจะเปนบทความตางๆ ทำาใหผใชมอใหมๆ หรอผทตองการศกษา สามารถคนหาซอสโคดมาเปนแนวทางในการพฒนาโปรแกรมไดงายขน 3) การบรหารหนวยความจำา (Memory Usage) มการใชงานหนวยความจำาทด เนองจาก PHP จะไมเรยกใชหนวยความจำาตลอดเวลาทำาใหเซรฟเวอรไมจำาเปนตองมทรพยากรมากนก 4) อสระตอระบบปฏบตการ เวบแอพพลเคชนทถกสรางขนมาสามารถทจะรนไดหลายระบบปฏบตการไมวาจะเปน Unix, Linux หรอ Windows เปนตน
การประกาศตวแปรกอนใชงานตวแปร เราตองประกาศ (Variable Declearation) ให
PHP engine เสยกอน โดยการประกาศตวแปรในภาษา PHP นนจะตองขนตนดวยเครองหมาย $ (Dollar sign) ตามดวยชอตวแปรและตามดวยคาของตวแปรรปแบบการประกาศตวแปร $ ชอตวแปร = คาของตวแปร ; ตวแปรในภาษา PHP ม 4 ตวแปรคอ string ขอมลชนดอกขระ
วธประกาศตวแปร string $strA = "I love You"; หรอ $strB="12,000 บาท"; boolean ขอมลชนดตรรกะ ขอมลชนดน ใชเกบขอมลทางตรรกศาสตร ซงจะแสดงคาตวแปรออกมาเปน true (จรง) หรอ false(เทจ) เทานน วธประกาศตวแปร Boolean $f = boolean; integer ขอมลชนดจำานวนเตม เปนตวเลขจำานวนเตม ทงจำานวนบวก,ลบ และศนย สามารถแสดงในรปแบบเลขฐานสบ, ฐานแปดและฐานสบหกได หากตองการใหแสดงเลขฐานแปดใหใส 0 นำาหนาตวเลขเพอบอกวาเปนเลขฐานแปด หรอ ตองการแสดงเปนเลขฐานสบหก ใหใส 0x นำาหนาตวเลขเปนเลขฐานสบหก
วธประกาศตวแปร integer $a = 12; $b = 012; => เลขฐานแปด $c = 0x12; => เลขฐานสบหก floating-point number ขอมลเลขทศนยมเปนเลขทศนยมหลกเดยวหรอ หลายหลกกได และเปนเลขจำานวนบวก,ลบ หรอรปแบบทางวทยาศาสตรกไดวธการประกาศตวแปร float
$a = 15.53; $b = -0.533; $c = 3.2e5;จะเหนวาการประกาศตวแปรในภาษา PHP แตกตางจากภาษา Java และ C ตรงทไมตองบอกชอตวแปรและชนดตวแปรนอยกวา เชน ถา Java หรอ C จะประกาศตวแปรตอง string strA = "I love you"; แตถาเปน PHP จะเปนแบบ $strA="I love you";
กฎการตงชอตวแปร - หามขนตนชอดวยตวเลข แตใชตวเลขประกอบไปในชอตวแปรได - สามารถใชตวอกษรภาษาองกฤษหรอภาษาไทยได - สามารถใชสญลกษณ _(underscore) ขนตน หรอ ผสมอยภายในชอตวแปรได - หามใชสญลกษณทางคณตศาสตรประกอบชอตวแปร - หามใชการเวนวรรคภายในชอตวแปรมขอพงจำากดวา การใชตวอกษรพมพใหญกบพมพเลก แมจะสอถงคำาๆ เดยวกน แตถอวาเปนตวแปรคนละตวกน Case-Sensitive เชนเดยวกบ Java และ C หากพมพตวแปรผดโปรแกรมจะไมแสดงขอผดพลาดใหเราเหน แตผลลพธของโปรแกรมจะไมถกตอง
วน/เวลา
date โดยจะม format การใชดงน date(format,[timestamp]); ฟงกชนนจะคนคาของวนทและเวลาตามทเรากำาหนดรปแบบใน format ถาเราละไมใส timestamp มนจะคน คาของวนเวลาปจจบน แตเราหากเราใส
timestamp มนจะเปนการระบวาตองการใหแสดงของวนไหน เดยวจะอธบายเรอง timestamp อกท ขอวกกลบมาเรอง format กอน โดยตวอยางการระบ format เชน date("d m Y"); กจะไดผลลพธเปน 20 1 2002 เปนตน(สมมตวนนคอ 20 มกรา 2002) โดยตวอยาง format คราวจะมดงน
"d" แสดงวนท 2 หลก เชน 02 คอวนท 2
"j" แสดงวนทโดยไมม 0 นำาหนา
"M" แสดงชอเดอนแบบเปนตวยอ 3 ตว เชน Jan
"m" แสดงเดอนเปนตวเลข
"H" แสดงชวโมงในรปแบบ 24 ชม.
"i" แสดงนาท
"s" แสดงวนาท
"y" แสดงป ค.ศ. 2 หลก
"Y" แสดงป ค.ศ. 4 หลก timestamp เปนตวเลขทเปนจำานวนวนาท เรมตนนบศนยจาก วนท 1 มกราคม 1970 เรามฟงกชนทสามารถหาคา timestamp ขนมาไดโดยไมตองคำานวณเอง โดยสามารถใชฟงกชน mktime ได โดยมรปแบบการใชดงน mktime(hour,minute,second,month,day,year); โดยฟงกชนนจะคนคาเปน timestamp มาให เชน
mktime(13,30,0,1,20,2002); หมายถงวนท 20 มกราคม 2002 เวลา 13:30:00 ประโยชนจากการใชฟงกชนทงสองนจะชวยใหเราสามารถคำานวณเวลาใน php ไดอยางงาย เชน สมมตเราอยาก ทราบวาวนพรงนคอวนอะไร กอาจใช code ไดดงน $tomorrow = mktime(date("H"),date("i"),date("s"),date("m"),date("d")+1,date("Y")); echo "tomorrow is ",date("d/m/Y",$tomorrow); หรอเราอาจคำานวณเองกไดจากความรทวา 1 วนม 24 ชม., 1 ชม.ม 60 นาท, 1 นาท ม 60 วนาท ดงนน 1 วนม 24*60*60 = 86400 วนาท code กจะเปน
$today = mktime(date("H"),date("i"),date("s"),date("m"),date("d"),date("Y")) ; echo "tomorrow is ",date("d/m/Y",$today+86400);อารเรย Array
อารเรย เปนตวแปรแบบพเศษ ใชสำาหรบเกบคาทมมากกวา 1 คาไวเปนชด ๆ โดยคาแตละคาใน Array จะเรยงตอกนไปเรอย ๆ ซงลำาดบนนเราเรยกวา อลเมนต (Element) โดยจะเรมจาก 0 เสมอ ไมใชเรมจาก 1 ดงนนหาก Array ตวหนงมจำานวนสมาชก 12 ตว กจะม Element เรมจาก 0 – 11
ใน PHP นนมขอไดเปรยบของ Array เมอเทยบกบภาษาอน ๆ ตรงท Array มความยดหยนสง เนองจากเราสามารถเปลยนแปลงจำานวนของ
สมาชกใน Array ไดตลอดเวลา และทสำาคญกคอสมาชกใน Array หนง ๆ ไมจำาเปนตองเปนประเภทเดยวกนกได
ยกตวอยาง Array เชน รายชอเดอนเปนภาษาไทย ตามตารางขางลางน
ลำาดบท Element คาทเกบ
1 0 มกราคม
2 1 กมภาพนธ
3 2 มนาคม
4 3 เมษายน
5 4 พฤษภาคม
6 5 มถนายน
7 6 กรกฎาคม
8 7 สงหาคม
9 8 กนยายน
10 9 ตลาคม
11 10 พฤศจกายน
12 11 ธนวาคม
เราสามารถสราง Array ได 2 วธ
แบบแรก
$vmonth = array ( "มกราคม", "กมภาพนธ", "มนาคม", "เมษายน", "พฤษภาคม", "มถนายน", "กรกฎาคม", "สงหาคม", "กนยายน", "ตลาคม", "พฤศจกายน", "ธนวาคม" );
แบบท 2
$vmonth[] = "มกราคม";$vmonth[] = "กมภาพนธ";$vmonth[] = "มนาคม";$vmonth[] = "เมษายน";$vmonth[] = "พฤษภาคม";$vmonth[] = "มถนายน";$vmonth[] = "กรกฎาคม";$vmonth[] = "สงหาคม";$vmonth[] = "กนยายน";$vmonth[] = "ตลาคม";$vmonth[] = "พฤศจกายน";$vmonth[] = "ธนวาคม";
สวนการนำาคาใน Array ออกมาใช กเพยงแตระบหมายเลข Element เทานน เชน
$month[5]
ผลทไดออกมากคอ "มถนายน" เปนตน
ตวอยาง
<html> <head> <title>ตวอยาง Array ท 1</title> </head>
<body> <?php $vmonth = array ( "มกราคม", "กมภาพนธ", "มนาคม", "เมษายน", "พฤษภาคม", "มถนายน", "กรกฎาคม", "สงหาคม", "กนยายน" ); //แสดงคาใน vmonth ลำาดบท 1 echo $vmonth[0] . "<br>\n"; // แสดงจำานวนสมาชกใน vmonth echo "vmonth มจำานวนสมาชก " . count($vmonth) . " ตว<br>\n"; // เพมสมาชก 3 ตว $vmonth[] = "ตลาคม"; $vmonth[] = "พฤศจกายน"; $vmonth[] = "ธนวาคม"; // แสดงจำานวนสมาชกใน vmonth echo "ตอนนvmonth มจำานวนสมาชก " . count($vmonth) . " ต
ว <br>\n"; ?> </body> </html>
เราสามารถลบ Array ดวย Function array_shift() โดยทฟงกชนนจะลบขอมลลำาดบแรกใน Array
<html> <head> <title>ใช array_shift() ลบสมาชกใน Array</title> </head>
<body> <?php $vmonth = array ( "มกราคม", "กมภาพนธ", "มนาคม", "เมษายน", "พฤษภาคม", "มถนายน", "กรกฎาคม", "สงหาคม", "กนยายน", "ตลาคม", "พฤศจกายน", "ธนวาคม" ); //วนลปแสดงคาใน Array ทงหมด
foreach ( $vmonth as $vmonth1 ) { echo $vmonth1 . " <br>\n"; } // แสดงจำานวนสมาชกใน Array echo "<br>เรมตนมสมาชก = " . count( $vmonth ) . "<hr>\n"; //ลบสมาชกใน Array ดวย array_shift $delarr = array_shift ( $vmonth ); //วนลปแสดงคาใน Array ทงหมดอกครง foreach ( $vmonth as $vmonth1 ) { echo $vmonth1 . " <br>\n"; } // แสดงจำานวนสมาชกใน Array หลงจากใช array_shift echo "<br>ตอนนมสมาชก = " . count( $vmonth ) . "<br>\n"; //แสดงตวทหายไป echo "ตวทหายไปคอ " . $delarr; ?> </body> </html>จากตวอยางฟงกชน array_shift จะคนคาตวทถกลบมาใหดงนนเมอเราเอาตวแปร $delarr ไปรบจะสามารถรไดวาคาทถกลบคออะไร
ฟงกชน array_merge() ใชในการรวม Array 2 ตว ใหกลายเปน Array ใหม
<html> <head> <title>ใช array_shift() ลบสมาชกใน Array</title> </head>
<body> <?php $vmonth1 = array ( "มกราคม", "กมภาพนธ", "มนาคม", "เมษายน", "พฤษภาคม", "มถนายน" ); $vmonth2 = array ( "กรกฎาคม", "สงหาคม", "กนยายน", "ตลาคม", "พฤศจกายน", "ธนวาคม" ); //รวม Array vmonth1 และ vmonth2 เขาดวยกนใน Array ตวใหมชอ nmonth $nmonth = array_merge( $vmonth1, $vmonth2 ); //วนลปแสดงคาใน Array ทงหมด foreach ( $nmonth as $nmonth1 ) { echo $nmonth1 . " <br>\n"; } // แสดงจำานวนสมาชกใน Array echo "<br>มสมาชก = " . count( $nmonth ) . "<hr>\n"; ?>
</body> </html>เราสามารถจดเรยงคาใน Array ดวยฟงกชน sort()
<html> <head> <title>ใช array_shift() ลบสมาชกใน Array</title> </head>
<body> <?php $arr1 = array ( "G", "B", "C", "H", "V", "Z", "A" ); //วนลปแสดงคาใน Array ทงหมดกอนการจดเรยง foreach ( $arr1 as $arrn ) { echo $arrn . " <br>\n"; } echo "<hr>"; //จดเรยง Array ใหม sort( $arr1); //วนลปแสดงคาใน Array ทงหมดหลงการจดเรยง foreach ( $arr1 as $arrn ) { echo $arrn . " <br>\n"; } ?>
</body> </html>ฟงกชนใน PHP
ฟงกชนในโปรแกรมสวนใหญไดรบการเรยกคำาสงเพอทำางานอยางเดยว สงนทำาใหคำาสงอานไดงายและยอมใหใชคำาสงใหมแตละครงเมอตองการทำางานเดยวกน
ฟงกชนเปนโมดลเกบคำาสงทกำาหนดการเรยกอนเตอรเฟซ ทำางานเดยวกน และตวเลอกสงออกคาจากการเรยกฟงกชน คำาสงตอไปเปนการเรยกฟงกชนอยางงายmy_function ();คำาสงเรยกฟงกชนชอ my_function ทไมตองการพารามเตอร และไมสนใจคาทอาจจะสงออกโดยฟงกชนน
ฟงกชนจำานวนมากไดรบการเรยกดวยวธน เชน ฟงกชน phpinfo () สำาหรบแสดงเวอรชนตดตงของ PHP สารสนเทศเกยวกบ PHP การตงคาแมขายเวบ คาตางๆ ของ PHP และตวแปร ฟงกชนนไมใชพารามเตอรและโดยทวไปไมสนใจคาสงออก ดงนนการเรยก phpinfo () จะประกอบขนดงน
phpinfo ();การกำาหนดฟงกชนและการเรยกฟงกชน
การประกาศฟงกชนเรมตนดวยคยเวรด function กำาหนดชอฟงกชน พารามเตอรทตองการ และเกบคำาสงทจะประมวลผลแตละครงเมอเรยกฟงกชนน
<?phpfunction function_name(parameter1,…) {ชดคำาสง …
} ?>ชดคำาสงตองเรมตนและสนสดในวงเลบปกกา ({ }) ตวอยางฟงกชน my_function<?php function my_function() {$mystring =<<<BODYSTRING my function ไดรบการเรยก
BODYSTRING; echo $mystring;} ?>
การประกาศฟงกชนน เรมตนดวย function ดงนนผอานและตวกระจาย PHP ทราบวาตอไปเปนฟงกชนกำาหนดเอง ชอฟงกชนคอ
my_function การเรยกฟงกชนนใชประโยคคำาสงน my_function ();การเรยกฟงกชนนจะใหผลลพธเปนขอความ "my function ไดรบการเรยก " บน browser
การตงชอฟงกชน
สงสำาคญมากในการพจารณาเมอตงชอฟงกชนคอชอตองสนแตมความหมาย ถาฟงกชนสรางสวนตวของเพจควรตงชอเปน pageheader () หรอ page_header ()
ขอจำากดในการตงชอคอ
ฟงกชนไมสามารถมชอเดยวกบฟงกชนทมอย
ชอฟงกชนสามารถมไดเพยงตวอกษรตวเลข และ underscore
ชอฟงกชนไมสามารถเรมตนดวยตวเลข
หลายภาษายอมใหใชชอฟงกชนไดอก สวนการทำางานนเรยกวา function overload อยางไรกตาม PHP ไมสนบสนน function overload ดงนนฟงกชนไมสามารถมชอเดยวกนกบฟงกชนภายใน หรอฟงกชนกำาหนดเองทมอย
หมายเหต ถงแมวาทกสครปต PHP รจกฟงกชนภายในทงหมด ฟงกชนกำาหนดเองอยเฉพาะในสครปตทประกาศสงนหมายความวา ชอฟงกชนสามารถใชในคนละไฟลแตอาจจะไปสความสบสน และควรหลกเลยง
ชอฟงกชนตอไปนถกตอง name ()name2 ()name_three ()_namefour ()ชอไมถกตอง 5name ()Name-six ()fopen ()การเรยกฟงกชนไมมผลจากชนดตวพมพ ดงนนการเรยก function_name (), Function_Name() หรอ FUNCTION_NAME() สามารถทำาไดและมผลลพธเหมอนกน แตแบบแผนการกำาหนดชอฟงกชนใน PHP ใหใชตวพมพเลก
ชอฟงกชนแตกตางจากชอตวแปร โดยชอตวแปรเปนชนดตวพมพมผล ดงนน $Name และ $name เปน 2 ตวแปร แต Name () และ name () เปนฟงกชนเดยวกน
การหยดประมวลผลภายในฟงกชน
คยเวรด return หยดการประมวลผลฟงกชน ฟงกชนสนสดไดเพราะประโยคคำาสงทงหมดไดรบการประมวลผล หรอ ใชคยเวรด return การประมวลผลกลบไปยงประโยคคำาสงตอจากการเรยกฟงกชน
<?phpfunction division($x, $y) {
if ($y == 0 || !isset($y)) {echo " ตวหาร y ตองไมเปนศนยหรอไมมคา" ; return;}$result = $x / $y; echo $result;} ?>
ถาประโยคคำาสง return ไดรบการประมวลผล บรรทดคำาสงตอไปในฟงกชนจะถกขามไป และกลบไปยงผเรยกฟงกชนน ในฟงกชนน ถา y เปน 0 จะหยดการประมวลผล ถา y ไมเทากบ 0 จะคำานวณผลหาร
สมมตปอนคาเปน x = 4, y = 0x = 4x = 4, y = 2ผลลพธของคำาสง คอx = 4, y = 0 ผลลพธ ตวหาร y ตองไมเปนศนยหรอไมมคาx = 4, y = ผลลพธ ตวหาร y ตองไมเปนศนยหรอไมมคาx = 4, y = 2 ผลลพธ 2
การเรยกฟงกชน
เมอฟงกชนไดรบการประกาศหรอสรางขนแลว การเรยกฟงกชนสามารถเรยกมาจากทใดๆ ภายในสครปต หรอ จากไฟลทมการรวมดวยประโยคคำาสง include() หรอ require()
ตวอยาง ฟงกชน show_message() เกบอยในไฟล fn_ 03 _keeper.php สวนผเรยกอยในสครปต fn_ 03 _caller.php
<?phpinclude("fn_ 03 _keeper.php"); show_message();?>
พารามเตอร
ตามปกตฟงกชนสวนใหญตองการรบสารสนเทศจากผเรยกสำาหรบการประมวลผล โดยทวไปเรยกวา พารามเตอร
ไวยากรณพนฐาน
การกำาหนดฟงกใหรบพารามเตอรสงผานโดยการวางขอมล ชอตวแปรทเกบขอมลภายในวงเลบหลงชอฟงกชน การเรยกฟงกชนทประกอบดวยพารามเตอรเขยนดงน
<?phpfunction show_parameter($param1, $param2, $param3) {
echo <<<PARAMรายการพารามเตอร <br/> param1: $param1 <br/>param2: $param2 <br/>param3: $param3 <br/>PARAM;} ?>
พารามเตอรทสงไปยงฟงกชนแยกกนเครองหมายจลภาคภายในวงเลบ โดยสามารถสงเปนนพจนสำาหรบแตละพารามเตอรดวย ตวแปร คาคงท ผลลพธจากการคำานวณ รวมถงการเรยกฟงกชน
scope ของพารามเตอรจำากดภายในฟงกชน ถาชอตวแปรเหมอนกบตวแปรใน scope ระดบอน พารามเตอรน "ระบ" เปนตวแปรภายในทไมมผลกบตวแปรภายนอกฟงกชน
การสงผานโดยคา(By Value)
ตามปกตการสงผานพารามเตอรไปยงฟงกชนเปนการสงผานคา การเปลยนแปลงจะจำากดภายในเฉพาะภายในฟงกชน
ตวอยางฟงกชน new_value () ทยอมใหเพมคา อาจจะเขยนคำาสงดงน
<?phpfunction new_value($value, $increment= 1) {$value = $value + $increment;
}$value = 10 ;new_value($value); echo "$value<br/>\n";?>คำาสงนใชไมได ผลลพธจะเปน "10" คาใหมของ $value ไมมการเปลยนแปลง
สงนเปนเพราะกฎ scope คำาสงนสรางตวแปรเรยกวา $value เปน 10 เมอเรยกฟงกชน new_value () ตวแปร $value ในฟงกชนไดรบการสรางเมอเรยกฟงกชน คา 1 ไดรบการเพมใหกบตวแปร ดงนนคาของ $value คอ 11 ภายในฟงกชน จนกระทงสนสดฟงกชน แลวกลบไปยงคำาสงทเรยกภายในคำาสงน ตวแปร $value เปนอกตวแปร global scope และไมมการเปลยนแปลง
การสงผานโดยการอางอง (By Reference)
ตามตวอยางฟงกชน new_value ถาตองการใหฟงกชนเปลยนแปลงคาได มวธหนงในการแกไขคอ ประกาศ $value ในฟงกชนเปน global แตหมายความวาในการใชฟงกชนน ตวแปรทตองการเพมคาตองตงชอเปน $value แตมวธดกวาคอ ใชการสงผานโดยการอางอง
การอางองไปตวแปรตนทางแทนทมคาของตวเอง การปรบปรงไปยงการอางองจะมผลกบตวแปรตนทางดวย
การระบพารามเตอรทใชการสงผานโดยการอางองใหวาง ampersand (&) หนาชอพารามเตอรในขอกำาหนดฟงกชน
ตวอยาง new_value () ไดรบปรบปรงใหม 1 พารามเตอรสงผานโดยการอางองและทำางานไดอยางถกตอง
<?phpfunction new_value(&$value, $increment=1) {$value = $value + $increment;}?>คำาสงทดสอบฟงกชน ใหพมพ 10 กอนการเรยก increment () และ 11 ภายหลง
ในการสงคาโดยการอางองตองสงเปนตวแปรไมสามารถกำาหนดคาคงทโดยตรง
จำานวนตวแปรของพารามเตอร
การสงผานพารามเตอรไปยงฟงกชนนน การควบคมของ PHP ไดกำาหนดฟงกชนจำานวนหนงใหยอมรบจำานวนตวแปรของพารามเตอร ไดแก func_num_args, func_get_arg และ func_get_args
func_num_args() บอกจำานวนพารามเตอรไปยงฟงกชนทเรยก func_get_arg() แสดงคาของพารามเตอรตามดชน และ func_get_args() สงออก array ของพารามเตอร
<?phpfunction show_pass_value() {$idx = count(func_get_args());echo " จำานวนพารามเตอร $idx <br/>\n";
if ($idx > 0) echo ">> ใชฟงกชน func_get_arg<br/>\n";
for ($i = 0 ; $i < $idx; $i++) {echo " พารามเตอรท $i คา: ". func_get_arg($i)."<br/>\n";
}if ($idx > 0) echo ">> ใชฟงกชน func_get_args<br/>\n";
$params = func_get_args();foreach ($params as $index => $val) {echo " พารามเตอรท $index คา: $val<br/>\n";
}
echo " *********<br/>\n";}$x = 4 ; show_pass_value("one", "two", 3 , $x, " หา" , " หก") ;show_pass_value();?>ผลลพธ จำานวนพารามเตอร 6>> ใชฟงกชน func_get_arg พารามเตอรท 0 คา: oneพารามเตอรท 1 คา: twoพารามเตอรท 2 คา: 3พารามเตอรท 3 คา: 4พารามเตอรท 4 คา: หาพารามเตอรท 5 คา: หก
>> ใชฟงกชน func_get_args พารามเตอรท 0 คา: oneพารามเตอรท 1 คา: twoพารามเตอรท 2 คา: 3พารามเตอรท 3 คา: 4พารามเตอรท 4 คา: หาพารามเตอรท 5 คา: หก
********* จำานวนพารามเตอร 0
*********Scope
เมอตองการใชตวแปรภายในไฟลทรวม ตองมการประกาศตวแปรเหลานนกอนประโยคคำาสง require () หรอ include () แตเมอใชฟงกชนจะเปนการสงผานตวแปรเชงประจกษเหลานนไปยงฟงกชน บางสวนเปนเพราะไมมกลไกสงผานตวแปรเชงประจกษไปยงไฟลทรวม และบางสวนเปนเพราะ scope ของตวแปรของฟงกชนแตกตางกน
การควบคม scope ของตวแปรเปนการทำาใหตวแปรมองเหนได ใน PHP มกฎตงคา scope ดงน
การประกาศตวแปรภายในฟงกชนอยใน scope จากประโยคคำาสงซงตวแปรใหรบการประกาศภายในวงเลบปกกา สงนเรยกวา function scope ตวแปรเรยกวา local variable
การประกาศตวแปรภายนอกฟงกชนอยใน scope จากประโยคคำาสงซงตวแปรไดรบการประกาศทสนสดแตไมใชภายในฟงกชน สงนเรยกวา global scope ตวแปรเรยกวา global variable
การใชประโยคคำาสง require () และ include () ไมมผลกบ scope ถาประโยคคำาสงไดรบการใชภายในฟงกชน ประยกตดวย function scope ถาไมไดอยภายในฟงกชน ประยกตดวย global scope
คยเวรด global สามารถระบไดเองเพอกำาหนดหรอใชตวแปรภายในฟงกชนใหม scope เปน global
ตวแปร สามารถลบโดยการเรยก unset ($variable_name) และตวแปรท unset จะไมม scope
ตวแปรระดบ superglobal สามารถเขาถงไดทกสวนในสครปต
ตวแปรระดบฟงกชน
ตวแปรระดบฟงกชนหรอ local variable เปนการประกาศเพอใชเฉพาะภายในฟงกชน ไมสามารถเรยกจากภายนอกฟงกชนได
<?php$newline = <<<NLSTRING <br/>\nNLSTRING;$var_global = 10 ;function show_value() {global $newline;$var_local= 75 ;echo "\$var_local 1: $var_local";echo $newline;}show_value(); echo "\$var_global : $var_global";
echo $newline;echo "\$var_local 2: $var_local";echo $newline;?>ผลลพธ$var_global 1 :$var_local 1: 75$var_global 2: 10$var_local 2:
ตามตวอยางน ตวแปรระดบฟงกชน $var_local ไมสามารถแสดงผลในการพมพภายนอกฟงกชน show_value() และ $var_global ทเปนตวแปรระดบ global ไมสามารถแสดงผลภายใน show_value() เพราะม scope ตางกน
ตวแปรระดบ global
ถาตองการนำาตวแปรระดบ global มาใชภายในฟงกชนตองประกาศดวยคยเวรด global กอนประโยคคำาสงทใชตวแปรนน ตวอยาง ฟงกชน show_value() ใช $newline จากภายนอกฟงกชน
global $newline;ตวแปรสถตย
การประกาศตวแปรสถตยใช คยเวรด static เมอมการเรยกใชฟงกชน โปรแกรมจะกำาหนดคาตวแปรตามทระบเพยงครงเดยว ถาเรยกซำาอยางตอเนองคานจะเปลยนแปลงตามการคำานวณ
<?phpfunction increment() {static $increase = 5 ;$increase++;echo $increase."<br/>\n";}$end = 5 ;for ($i = 1 ; $i < $end; $i++) increment();?>ผลลพธ 6789คาของตวแปรสถตยไดรบการตงทกครงเมอเรยกใชในครงตอไป
การสงออกคาจากฟงกชน
การสงคาออกจากฟงกชนใชคยเวรด return เชนเดยวกบการออกจากฟงกชนได ถาไมมการระบสงออกฟงกชนจะสงคา NULL
ตวอยาง ฟงกชน get_larger () สาธตการสงออกคา
<?
function get_larger($x=NULL, $y=NULL) {if (!isset($x) || !isset($y)) return " ไมมการสงคา" ;
if ($x > $y) return $x;else if ($x < $y) return $y;else return " คาเทากน" ;
}$sends = array(); $sends[0] = array('x' =>5);$sends[1] = array('x' =>9, 'y'=>3);$sends[2] = array('x' =>5, 'y'=>8);$sends[3] = array('x' =>4, 'y'=>4);foreach ($sends as $send){echo "x = ".$send['x']." y = ".$send['y']." : คา - > ".get_larger($send['x'], $send['y']); echo "<br/>\n";}?>
ผลลพธ x = 5 y = : คา - > ไมมการสงคาx = 9 y = 3 : คา - > 9x = 5 y = 8 : คา - > 8x = 4 y = 4 : คา - > คาเทากน
ฟงกชนททำางานอาจเดยว แตไมจำาเปนตองสงออกคา มกจะสงออก TRUE หรอ FALSE เพอระบความสำาเรจหรอลมเหลว คา TRUE หรอ FALSE สามารถไดรบการแสดงแทนดวย 1 หรอ 0
Recursion
recursion ไดรบการสนบสนนใน PHP ฟงกชนชนดนเปนการเรยกตวเองและเปนประโยชนกบการบงคบโครงสรางขอมลไดนามคส เชน รายการเชอมโยงและโครงสรางตนไม (tree)
โปรแกรมประยกตเวบจำานวนไมมากตองการโครงสรางขอมลซบซอนมากและจำากดการใช เนองจาก recursion ชากวาและใชหนวยความจำามากกวาการทำางานวนรอบ ดงนนควรเลอกการทำางานแบบวนรอบปกต ถาเปนไปได
ตวอยางการประยกตแบบยอนกลบตวอกษร
<?phpfunction word_reverse_r($str){
if (strlen($str)>0) word_reverse_r(substr($str, 1));echo substr($str, 0, 1); return;}function word_reverse_i($str) {for ($i=1; $i<=strlen($str); $i++) {echo substr($str, -$i, 1);}return;} ?>
รายการคำาสงของ 2 ฟงกชนนจะพมพขอความยอนกลบ ฟงกชน word_reverse_r เปน recursion ฟงกชน word_reverse_i เปนการวนรอบ
ฟงกชน word_reverse_r ใชขอความเปนพารามเตอร เมอมการเรยกฟงกชนน จะเกดการเรยกตวเองแตละครงสงผานตวอกษรท 2 ไปถงตวอกษรสดทาย
การเรยกฟงกชนแตละครงจะทำาสำาเนาใหมของคำาสงในหนวยความจำาของแมขาย แตดวยพารามเตอรตางกน ดงนนจงเหมอนกบการเรยกคนละฟงกชน
การสรางฟอรม
ขนตอนการสรางฟอรม:
1. เปดโปรแกรม Dreamweaver MX คลกเมน File > New จะปรากฏไดอะลอก New Document ขนมา ใหคลกแทบ General เลอก Dynamic Page > PHP หลงจากนนคลกปม Create บนทกเปนไฟล form.php
2. ทหนาจอของเวบเพจ ใหคลกเพอวางเคอรเซอรในตำาแหนงทตองการสรางฟอรม หลงจากนนคลกทเมนInsert > Form > Form ฟอรมจะถกแทรกลงในเวบเพจ หากอยใน Design View จะเหนขอบเขตของฟอรมแสดงเปนเสนประสแดง (หากไมมเสนประสแสดงขนมา ใหคลกทเมน View > Visual Aids > Invisible Elements)
รปแสดงเวบเพจทแทรกฟอรม
3. คลกวางตำาแหนงเคอรเซอรลงภายในขอบเขตของฟอรม หลงจากนนใหคลกเลอกแทก <form> จาก Tag Selector บรเวณขอบลางซายของเวบเพจ เมอปรากฏไดอะลอก Properties ชอง Form Name ใหกำาหนดชอของฟอรม เทากบ fmProcess ชอของฟอรมนจะถกใชเพออางองในสครปต PHP
รปแสดง Property ของฟอรม
4. ไดอะลอก Properties ชอง Action ใหกำาหนดชอไฟล หรอ URL ของสครปตทจะใชในการประมวลผลฟอรม เทากบ formprocess.php (หากตองการระบเปน URL ใหพมพเปน http://localhost/phpweb/formprocess.php) 5. ไดอะลอก Properties ชอง Method ใหเลอกรปแบบการสงขอมลจากฟอรมไปทเวบเซรฟเวอร ซงมใหเลอก 3 รปแบบ คอการทำางานของ METHOD:· POST สงขอมลโดยสงขอมลสงไปกบ HTTP Request· GET สงขอมลโดยการแปะคาเปน URL Parameter (Query String) ไปกบ URL (ขอมลทสงจะแสดงอยบน URL ของเวบเบ
ราเซอร)· DEFAULT สงขอมลโดยขนอยกบคา default ของเวบเบราเซอร โดยปกตจะเปนแบบ GET
NOTE: วธการสงขอมลแบบ GET ไมควรใชกบฟอรมทมการสงขอมลจำานวนมาก รวมทงไมควรใช ในการสงขอมลทเปนความลบ เชน username, password หรอเลขทบตรเครดต เปนตน เนองจากวธการสงแบบ GET น ขอมลทเราสงจะถกแสดงบน URL เชน http://localhost/phpweb/detail.php?empid=01020489
6. ไดอะลอก Properties ชอง Enctype ใหระบชนดของการเขารหสขอมล โดยคา default ของ Enctype จะเปน application/x-www-form-urlencode ซงจะถกใชรวมกบ method แบบ POST หากใชฟอรมในการอปโหลดไฟล ใหเลอก Enctype เปนแบบ multipart/form-data7. ไดอะลอก Properties ชอง Target ใหพมพชอหนาจอของเวบเบราเซอรทตองการแสดงผลลพธของฟอรมหรอเลอกจากรายการทกำาหนดไวให หากเวบเบราเซอรยงไมมชอหนาจอทระบ เวบเบราเซอรจะสรางหนาจอชอทระบขนมาใหม ตวเลอกทกำาหนดไวใหในชอง Targetการทำางานของ TARGET:· _blank ผลลพธของฟอรมจะแสดงทหนาจอเวบเบราเซอรทสรางขนมาใหม· _parent ผลลพธของฟอรมจะแสดงทหนาจอหลก (parent) ของหนาจอเวบเบราเซอรขณะนน· _self ผลลพธจะแสดงทหนาจอเวบเบราเซอรเดยวกบ
ฟอรม· _top ผลลพธของฟอรมจะแสดงทหนาจอหลก ในกรณทหนาจอเวบเบราเซอรแบงเปนหลายเฟรม8. คลกปม Code View เพอเขยนโคด HTML ดงรปดานลาง หลงจากนนบนทกไฟล
form.php<html>
<body><form action="formprocess.php" method="POST"
name="fmProcess">ชอ: <input name="firstname" type="text" size="32"
maxlength="30"> <br>นามสกล: <input name="lastname" type="text"
size="32" maxlength="30"> <br><input name="btnSubmit" type="submit"
value="บนทก">
<input name="btnReset" type="reset" value="ยกเลก">
</form>
</body></html>
9. เปดโปรแกรม Dreamweaver MX คลกเมน File > New จะปรากฏไดอะลอก New Document ขนมา ใหคลกแทบ General เลอก Dynamic Page > PHP คลกปม Create หลงจากนนใหเพอเขยนโคด PHP ดงรปดานลาง บนทกเปนไฟล
formprocess.php<?php
echo "ชอ: " . $_POST['firstname'] . "<br>";
echo "นามสกล: " . $_POST['lastname'] . "<br>";
?>10. ทดสอบการทำางานของฟอรม โดยเปด Dreamweaver MX ไปทหนาจอไฟล form.php หลงจากนนกดปม F12 จะปรากฏหนาจอ Internet Explorer เปนแบบฟอรมกรอกขอมล ใหกรอกขอมล แลวคลกปม "บนทก" ใหสงเกตผลลพธการทำางานของเวบเพจ
11. เปลยน METHOD ของฟอรมในไฟล form.php จาก METHOD="POST" เปน METHOD="GET"
12. เปลยนชอตวแปรในไฟล formprocess.php จาก $_POST['firstname’] เปน $_GET['firstname'] และ $_POST['lastname'] เปน $_GET['lastname']
13. ทดสอบการทำางานของฟอรมใหมอกครง ใหสงเกตผลลพธการทำางานของเวบเพจ
การสงคาฟอรม
การสงขอมลแบบ GET
การสงขอมลแบบ GET จะสงคาผาน URL โดยตรง โดยทจะระบชอตวแปรแยกเปนตว ๆ คนดวยเครองหมาย & ตามรปแบบขางลางน
http://<ชอ Domain>/<ชอ Folder>/<ชอไฟลทจะเอาคาไปประมวลผล.php>?<ชอตวแปรท 1=คา>&<ชอตวแปรท 2=คา>
ตวอยางเชน
http://www.nachiengmai.net/test.php?id=123&name=wacharapongสวนการรบกใชรปแบบ $_REQUEST["<ชอตวแปรทสงมา>"]
ตวอยาง
โปรแกรมตดเกรด
คะแนน 0-49 ไดเกรด Fคะแนน 50-59 ไดเกรด Dคะแนน 60-69 ไดเกรด Cคะแนน 70-79 ไดเกรด Bคะแนน 80-100 ไดเกรด A
<html> <head> <title>สงคาแบบ GET ไปตดเกรด</title> <meta http-equiv="Content-Type" content="text/html; charset=tis-620"> </head>
<body> <?php
$point = $_REQUEST["point "]; if ( $point >= 80 ) echo "สอบได $point คะแนน ไดเกรด A"; elseif ( $point >= 70 ) echo "สอบได $point คะแนน ไดเกรด B"; elseif ( $point >= 60 ) echo "สอบได $point คะแนน ไดเกรด C"; elseif ( $point >= 50 ) echo "สอบได $point คะแนน ไดเกรด D"; else echo "สอบได $point คะแนน ไดเกรด F"; ?> </body> </html>
จะเหนวาเราใชตวแปรชอ $point มาตรวจสอบคา นนแสดงวาเวลาเราสงคาไปจะตองสงไปในชอ point ดวย
การสงขอมลแบบ POST
POST เปนการสงรปแบบผานฟอรม ดงนในวธนเราจงตองสรางไฟล 2 ไฟล
- ไฟลแรกเปนไฟลทสรางฟอรมขนมา เพอสงไปประมวลผลทไฟลท 2- ไฟลท 2 เปนไฟลทนำาคาทไดมาจากฟอรมในไฟลท 1 มาประมวลผล
ตวอยาง
โดยจะสรางฟอรมมา 1 ฟอรมใหผใชระบวาจะพมพเลข 1 ถงเลขอะไร ตาม Code ขางลางน
<html> <head> <title>แบบฟอรม การสงคาดวย POST ไปวนรอบ</title> <meta http-equiv="Content-Type" content="text/html; charset=tis-620"> </head>
<body> <form name="form1" method="post" action="getloop.php"> ตองการพมพเลข 1 - <input name="printto" type="text" id="printto"> <input type="submit" name="Submit" value="พมพ"> </form> </body> </html>
สงเกตใน FORM TAG ในสวนของ method เราสามารถเลอกไดวาจะสงขอมลแบบ POST หรอแบบ GET ... และในสวนของ Action กจะเปนชอไฟลทเราจะสงคาจากฟอรมนไปประมวลผล
ภายในฟอรมประกอบดวยเครองมอ 2 ตวครบเปน Text 1 ตวชอ printto และปมประเภท Submit 1 ตว
จากนนกมาสรางไฟลทสอง
<html> <head> <title>วนรอบตามจำานวนทสงคามาแบบ POST</title> <meta http-equiv="Content-Type" content="text/html; charset=tis-620"> </head>
<body> <?php for ( $i=1;$i<=$_REQUEST["printto"];$i++) { echo $i . "<br>"; } ?> </body> </html>
สรปกคอไมวาจะสงมาขอมาแบบ GET หรอ POST PHP กใชวธการรบคาเหมอนกน คอรบมาตรง ๆ ตวเลย สงมาโดยใชชอตวแปรวาอะไรกเตมเครองหมาย $ ขางหนา แลวกใชไดเลย
การรบคาฟอรม
เวลาเราสรางฟอรมเราจะเลอก method ในการสงม 2 ลกษณะคอ POST และ GET ขอแตกตางคอ
POST สงขอมลโดยทเราไมเหนขอมลทสง สามารถสงไฟลได
GET สงขอมลแลวเราจะเหนขอมลของเราท URL ไมสามารถสงไฟลได
ดงนนการสงขอมลผานฟอรมเราตองเลอกใหเหมาะกบการใชงานของเรา ซงถาเรารบขอมลเรากใชวธการรบตางกนดงน เชน หากตองการรบคา username ใหทำาดงน
POST : $username=$_POST['username'];GET : $username=$_GET['username'];ซงตองเขยนการรบคาลกษณะนเพราะไมเชนนนเราจะไมสามารถรบคาผานฟอรมได
การทำางานกบฐานขอมล MySQL
กอนอนเรามาสรางฐานขอมลกนกอน ดวย phpMyadmin
ขนแรก เรามาสรางฐานขอมลกนกอนนะครบ ในทนผมสรางชอวา Database หลงจากนนกดปม สราง“ ”
หลงจากนนจะปรากฏดงรปขางลางน ขนตอมาเรามาสรางตารางเกบขอมลกน ในทนผมสรางชอวา User ใชเกบขอมลสมาชก ในชองชอ ผมใสชอตารางวา user และจำานวนฟลดของการเกบขอมล จะมทงหมด 4 ฟลด จะ
เกบขอมล ชอ นามสกล และอเมล อกฟลดนงจะเกบเปน id ของขอมลครบ จากนนกด ลงมอ“ ”
หลงจากกด ลงมอ จะปรากฏหนาตาดงรปขางลาง หนานเปนกำาหนด“ ”คณสมบต ประเภท ของขอมล ในตาราง user
id ชนดเปน INT เกบความยาว 3 ตวอกขระ และใหเปน Primary key หรอ คยหลก กำาหนดใหมน Autokey ดวยครบuser ชนดเปน Varchar เกบความยาว 15 ตวอกขระsurname ชนดเปน varchar เกบความยาว 20 ตวอกขระemail ชนดเปน varchar เกบความยาว 30 ตวอกขระเมอกำาหนดคาตางๆเสรจใหกดปม บนทก“ ”
มนจะบอกวาตาราง USER ไดสรางเสรจแลว ดงรปขางลาง
หลงจากนนเรามาทำาการเพมขอมลลงฐานขอมล กน ใหดทเมนดานบนของ phpMyadmin หา คำาวา แทรก ใหคลก ทนน จะปรากฏหนาตาดงรป“ ”ขางลาง แลวดทคอลม คา ใหกรอกคาลงไป ในทนผมกรอกขอมลผมลงไป “ ”โดยทไมตองกรอกใน ฟลด id เพราะวา ฟลด id นนเรากำาหนดคาไวเปน
primarykey และ autokey ดวย มนจะบนทก id ใหเราอตโนมต เมอกรอกเสรจแลวใหกดปม ลงมอ“ ”
ระบบจะรายงานวา ขอมลใหถกแทรกลงตารางเรยบรอยแลว ดงปรากฏดงรปขางลาง
SQL ทใชกบตวอยางน คอ
CREATE TABLE `user` (`id` int(3) NOT NULL auto_increment,`name` varchar(15) NOT NULL default ”,`surname` varchar(20) NOT NULL default ”,`email` varchar(30) NOT NULL default ”,
PRIMARY KEY (`id`)) TYPE=MyISAM AUTO_INCREMENT=1 ;
ขนตอมา เราเขยนโคด php ดงตวอยาง และเขยน comment ตวอยางโคดดงรปขางลางน
หลงจากนนเราลองรนไฟลโปรแกรมด จะปรากฏหนาตาโปรแกรมททำาการดงขอมลจาก MySQL มาดงรปขางลางนครบ
การจดการฐานขอมลใน Phpmyadmin
ขนตอนการจดการฐานขอมล MySQL ดวย phpmyadmin มขนตอนดงน
1. เขาส phpmyadmin หากใช wmservertools ใหเลอกตามภาพดานลาง
หรอหากใชเครองมอในการจำาลองแมขายอนๆ ใหเลอกเขาส http://localhost จากนน เขาส phpmyadmin ซงจะปรากฏหนาจอดงภาพดานลางน
2. หากตองการสรางฐานขอมล (Database) ใหม ใหใสชอฐานขอมลทตองการสรางในชอง "สรางฐานขอมลใหม" จากนนคลกปม "สราง"
หากสรางสำาเรจ ระบบ จะรายงานผลดงภาพดานลาง
3. หากตองการสรางตารางลงในฐานขอมลน ใหพมพชอตาราง และ จำานวนฟลด ทตองการ จากนนคลกปม "ลงมอ"
จะปรากฏชองใหกรอกคณสมบตของฟลดตางๆ ตามตองการ
4. ใหใสคณสมบตของฟลดตางๆ ตามความตองการ รวมถงการกำาหนดคยหลก และอนๆ ตามตวอยางดานลาง หากใสเรยบรอยแลวใหคลก "บนทก"
หากไมมขอผดพลาด ระบบจะรายงานผลการสรางตารางใหลกษณะดงภาพดานลางน
การตดตอฐานขอมล
เราจะสามารถดงขอมลมาไดกตอเมอเราทำาการ query ไปยงฐานขอมล และมนคนคากลบมาเปน resource โดยใชฟงกชน mysql_query() ทผมไดกลาวไวในบทความทแลว ซงฟงกชนในการดงขอมลจาก resource มหลายตวดงน
mysql_fetch_row() จะคนคา row แบบ enumerated array (หรอแบบ [storng]index)
mysql_fetch_object() จะคนคา row แบบ object
mysql_fetch_array() จะคนคา row เปน array ทงแบบ associative และแบบ index(หรอแบบ enumerated)
mysql_fetch_assoc() จะคนคา row เปน array แบบ associative เทานน
mysql_result() จะคนคาเพยง cell เดยวเทานน
ความแตกตางระหวาง function ในการดงขอมลใน 4 วธแรกนนแตกตางกนเพยงนดเดยวเทานน ซงผมจะยกตวอยางใหผอานไดเขาใจทละวธ
วธการดงขอมลแบบ mysql_fetch_row()
1. <?php2 .$query = "SELECT person_id, name, surname FROM tbl_person";3. $rs = mysql_query($query);4. while($row = mysql_fetch_row($rs)) {5. echo "$row[0] $row[1] $row[2]<br />\n";6. }7. ?>
จากตวอยางดานบนนน เราจะสามารถเขาถงแตละ column (หรอ field) ไดโดยกำาหนด key แบบ index เทานน (โดย index แตละตวจะเรยงตาม field ทถกเลอกดวยคำาสง query ดงนน index ท 0 จะแทน person_id, index ท 1 จะแทน name และ index ท 2 จะแทน surname)วธการดงขอมลแบบ mysql_fetch_assoc()
1. <?php2. $query = "SELECT person_id, name, surname FROM tbl_person";
3. $rs = mysql_query($query);4. while($row = mysql_fetch_assoc($rs)) {5. echo $row['person_id'] . " " . $row["name"] . " " . $row['surname'] . "<br />\n";6. }7. ?>
ในการดงขอมลโดยวธนนน เราสามารถเขาถงขอมลแตละ field แบบ associative เทานน ซง key ของ array จะสรางตามชอ field ทเราไดเลอกไวในคำาสง query
วธการดงขอมลแบบ mysql_fetch_array()
1. <?php2. $query = "SELECT person_id, name, surname FROM tbl_person";3. $rs = mysql_query($query);4. while($row = mysql_fetch_array($rs)) {5. echo $row[0] . " " . $row['name'] . " " .$row[2]<br />\n";6. }7. ?>
ในการดงขอมลโดยวธน มนจะคนคากลบมาเปน array ทงแบบ associative และแบบ index เลย ดงนนเราสามารถเขาถงขอมลแตละ field ไดโดยการอาง key หรอกำาหนด index ใหมนกได
วธสดทายทแตกตางจากวธอน ๆ กคอ mysql_result() โดยมนจะคนคาเพยง 1 cell เทานน ดงนนเราจะตองกำาหนดแถวเรคอรด และ field ทตองการดงมาดวย ดงน
1. <?php2. $query = "SELECT count(*) FROM tbl_person";3. $rs = mysql_query($query);4. $count_person = mysql_result($rs, 0, 0);5. ?>
จากตวอยางจะเหนวา parameter ตวแรกนนจะตองกำาหนดเปน resource ทไดจากการ query สวน parameter ตวท 2 จะตองกำาหนดแถวทตองการดงมา และ parameter ตวท 3 จะตองกำาหนด field ทตองการดง โดยอาจจะกำาหนดเปน associative กได
การเพมขอมล
ขนตอนการทำา1. เรมจากสรางฐานขอมลขนมากอน
2. คำาสง SQL ทใชในการสรางฐานขอมล
SQL-query: CREATE TABLE student (id INT not null AUTO_INCREMENT, name CHAR (30) not null , surname CHAR (30) not null , grade CHAR (1) not null , PRIMARY KEY (id))
3. หลงจากนนสราง Form ขนมา
4. โคดทใชสำาหรบสรางฟอรม
<html><head><title>Untitled Document</title><meta http-equiv="Content-Type" content="text/html;
charset=windows-874"></head><body><form name="form1" method="post" action="add.php"> //ตำาแหนงไฟลทเราสงขอมลจากฟอรมไปให Name : <input name="name" type="text" id="name">Surname : <input name="surname" type="text" id="surname"><br>Grade : <input name="grade" type="text" id="grade"><input type="submit" name="Submit" value="เพมขอมล"><input type="reset" name="Submit2" value="Reset"></form></body></html>
5. หลงจากนนเราเขยนโคดเพอเพมขอมลใน add.php ดงน
<?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช
$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "student"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมลmysql_select_db($dbname) or die("เลอกฐานขอมลไมได");// คำาสง SQL และสงใหทำางาน$sql = "insert into $tblname (name, surname, grade) values ('$name', '$surname', '$grade')"; // กำาหนดคำาสง SQL เพอเพมขอมลแบบคยในคำาสง SQL$dbquery = mysql_db_query($dbname, $sql);// ปดการตดตอฐานขอมลmysql_close();echo "<Font Size=4><B>เพมขอมลลงฐานขอมลเรยบรอยแลว</B>";?>
6. หลงจากนนลองทดสอบการเพมขอมล
7. เพยงเทานเรากสามารถเพมขอมลลงฐานขอมลได
การลบขอมล
การลบขอมลใน Mysql ในฐานขอมล การทเราจะลบขอมลเรากควรทจะมฐานขอมลกอน และขอมลทอยในฐานขอมลนนๆ แตขอสำาคญในฐานขอมลนนจะตองม Primary Key ดวย
ขนตอนการทำา1. สรางฐานขอมลขนมา โดยใชคำาสง SqlCREATE TABLE admin (id int(11) NOT NULL auto_increment,user_admin char(15) NOT NULL,pass_admin char(8) DEFAULT '0' NOT NULL,PRIMARY KEY (id));2. หลงจากทเราสรางฐานขอมลขนมาแลวใหเราใชคำาสงแสดงผลขอมลนนขนมา แตเราจะใสปม Delete ลงไปดวยเราใหไฟลนชอวา show_del.php <?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "admin"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมล
mysql_select_db($dbname) or die("เลอกฐานขอมลไมได");// คำาสง SQL และสงใหทำางาน$sql = "select * from $tblname";$dbquery = mysql_db_query($dbname, $sql);// หาจำานวนเรกคอรดขอมลในตาราง$num_rows = mysql_num_rows($dbquery);// เรมวนรอบแสดงขอมล$i=0;while ($i < $num_rows){$result = mysql_fetch_array($dbquery);$id = $result[id];$user_admin = $result[user_admin];$pass_admin = $result[pass_admin];echo "($id) $user_admin $pass_admin <A HREF=\"del.php?id=$id\">ลบขอมล</A><BR>"; //สำาคญอยตรงน กำาหนดคาตวแปลเพอใหรวาเราจะลบขอมล Record$i++;}// ปดการตดตอฐานขอมลmysql_close();?>
4. หลงจากนนเราเขยนคำาสงทใชในการลบขอมลไวทไฟลทเรากำาหนด Link ไวผมใหชอไฟล del.php<?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "admin"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมลmysql_select_db($dbname) or die("เลอกฐานขอมลไมได");// คำาสง SQL และสงใหทำางาน$sql = "delete from admin where id='$id'"; // กำาหนดคำาสง
3. เราจะไดผลดงน
SQL เพอลบขอมล กำาหนดใหลบตาม ID ทเรากำาหนด$dbquery = mysql_db_query($dbname, $sql);echo "ลบขอมล Record : $id";?>5. หลงจากนนลองลบขอมล จะไดผลดงน
การแกไขขอมล
การแกไขขอมลใน Mysql ในการแกไขนนเราจะตองสราง Form เพออำานวยความสะดวกใหกบผใชเวลาทลกคากรอกขอมล ขนตอยการทำามดงน
ขนตอนการทำา1. ใหเราสรางตารางขนมากอน ดวยคำาสง SQL โดยสรางลงใน Database : testCREATE TABLE customer (id int(11) NOT NULL auto_increment,name char(30) NOT NULL,surname char(30) NOT NULL,address char(150) NOT NULL,tel char(20) NOT NULL,PRIMARY KEY (id)
);INSERT INTO customer VALUES ( '1', 'aaaa', 'sur aa', 'test/1', '01-1111111');INSERT INTO customer VALUES ( '2', 'bbbb', 'sur bb', 'test/2', '01-2222222');INSERT INTO customer VALUES ( '3', 'cccc', 'sur cc', 'test/3', '01-3333333');INSERT INTO customer VALUES ( '4', 'dddd', 'sur dd', 'test/4', '01-4444444');INSERT INTO customer VALUES ( '5', 'eeee', 'sur ee', 'test/5', '01-5555555');2. หลงจากทเราสรางฐานขอมลแลวใหเราสรางไฟลแสดงผลขอมลจากฐานขอมล show.php<?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "customer"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมลmysql_select_db($dbname) or die("เลอกฐานขอมลไมได");
// คำาสง SQL และสงใหทำางาน$sql = "select * from $tblname";$dbquery = mysql_db_query($dbname, $sql);// หาจำานวนเรกคอรดขอมลในตาราง$num_rows = mysql_num_rows($dbquery);// เรมวนรอบแสดงขอมล$i=0;while ($i < $num_rows){$result = mysql_fetch_array($dbquery);$id = $result[id];$name = $result[name];echo "($id) คณ <font color=\"#FF0000\">$name</FONT> <A HREF=\"edit.php?id=$id\">แกไขขอมล</A><BR>"; //กำาหนด Link ไปทไฟลทเราจะแกไข$i++;}// ปดการตดตอฐานขอมลmysql_close();?>3. หลงจากนนเราสราง Form ขนมาตงชอไฟลใหตรงกบไฟลทเรา link มาใรทนผมใหชอไฟลวา edit.php
4. หลงจากนนเขยนโคดแทรกเขาไปในไฟล edit.php ดงน<?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "customer"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมลmysql_select_db($dbname) or die("เลอกฐานขอมลไมได");// คำาสง SQL และสงใหทำางาน$sql = "select * from $tblname where id=$id"; //ตรงนจะเปนขอกำาหนดใหดงขอมลตามทเรากำาหนด$dbquery = mysql_db_query($dbname, $sql);$result = mysql_fetch_array($dbquery);$id = $result[id];$name = $result[name];$surname = $result[surname];$address = $result[address];$tel = $result[tel];// ปดการตดตอฐานขอมลmysql_close();?><html><head><title>Un title page</title><meta http-equiv="Content-Type" content="text/html; charset=windows-874"><style type="text/css">
5. หลงจากนนเขยนโคด Update เพอนำาขอมลทผใชกรอกมาแกไขผมาจะเขยนไวทไฟล update.php <?php//กำาหนดตวแปรเพอนำาไปใชงาน$hostname = "localhost"; //ชอโฮสต$user = ""; //ชอผใช$password = ""; //รหสผาน$dbname = "test"; //ชอฐานขอมล$tblname = "customer"; //ชอตาราง// เรมตดตอฐานขอมลmysql_connect($hostname, $user, $password) or die("ตดตอฐานขอมลไมได");// เลอกฐานขอมลmysql_select_db($dbname) or die("เลอกฐานขอมลไมได");// คำาสง SQL และสงใหทำางาน$sql = "update $tblname set id=id, name='$name', surname='$surname', address='$address', tel='$tel' where id=$id"; // กำาหนดคำาสง SQL เพอแสดงขอมล$dbquery = mysql_db_query($dbname, $sql);echo "<Font Size=4><B>แกไขขอมลเรยบรอยแลว</B>";echo "<Br><A Href=\"show.php\"> ดผลการเปลยนแปลง</A>"; // เครองหมาย \ หนา " ทำาใหไมเกด error เมอรน?>
6. หลงจากนนเราลองทดสอบดโดยเปดไฟล show.php ขนมากอน
การคนหาขอมล
เรมตนโดยการสราง form คนหา ไวดานบนของตารางแสดงขอมลทไฟล show.php ตามรปภาพตวอยางท 1 form คนหา แลวบนทกไวท XXX:\AppServ\www\lesson9\search.php
รปภาพท 1 form คนหา<?// เชอมตอฐานขอมล$host="localhost"; // กำาหนด host$username="root"; // กำาหนด username$pass_word="nuiii"; // กำาหนด Password$db="test_create_database"; // กำาหนดชอฐานขอมล$Conn = mysql_connect( $host,$username,$pass_word) or die ("ตดตอฐานขอมลไมได");// ตดตอฐานขอมลmysql_query("SET NAMES utf8",$Conn); // set กำาหนดมาตรา
ฐานmysql_select_db($db) or die("เลอกฐานขอมลไมได"); // เลอกฐานขอมล //---> ?><form id="form1" name="form1" method="post" action="search.php">คนหา <input name="txt_search" type="text" value="<?=$_POST['txt_search']?>" /> <input name="Search" type="submit" value="คนหา" /></form><table width="600" border="1" cellspacing="2" cellpadding="2"><tr><td><div align="center">รหส</div></td><td><div align="center">ชอ</div></td><td><div align="center">นามสกล</div></td><td><div align="center">ทอย</div></td><td><div align="center">โทรศพท</div></td><td><div align="center">แกไข</div></td></tr><?$sql_show = "select * from customer";$result_show = mysql_query($sql_show) or die(mysql_error());while($row_show = mysql_fetch_array($result_show)){
?><tr><td><?=$row_show['id']?></td><td><?=$row_show['name']?></td><td><?=$row_show['surname']?></td><td><?=$row_show['address']?></td><td><?=$row_show['phone']?></td><td><div align="center"><a href="edit.php?edit_id=<?=$row_show[id]?>">แกไข</a></div></td></tr><?}?></table>จากนน สราง code คนหา ใหเพมไปใน $sql ในกรณทมการกดปม "คนหา" ตามตวอยางรปภาพท 2 คนหา
รปภาพท 2 คนหา<?// เชอมตอฐานขอมล$host="localhost"; // กำาหนด host
$username="root"; // กำาหนด username$pass_word="nuiii"; // กำาหนด Password$db="test_create_database"; // กำาหนดชอฐานขอมล$Conn = mysql_connect( $host,$username,$pass_word) or die ("ตดตอฐานขอมลไมได");// ตดตอฐานขอมลmysql_query("SET NAMES utf8",$Conn); // set กำาหนดมาตราฐานmysql_select_db($db) or die("เลอกฐานขอมลไมได"); // เลอกฐานขอมล //---> ?><form id="form1" name="form1" method="post" action="search.php">คนหา <input name="txt_search" type="text" value="<?=$_POST['txt_search']?>" /> <input name="Search" type="submit" value="คนหา" /></form><table width="600" border="1" cellspacing="2" cellpadding="2"><tr><td><div align="center">รหส</div></td><td><div align="center">ชอ</div></td><td><div align="center">นามสกล</div></td><td><div align="center">ทอย</div></td><td><div align="center">โทรศพท</div></td>
<td><div align="center">แกไข</div></td></tr><?$sql_show = "select * from customer";if($_POST['Search']){$txt_search = $_POST['txt_search'];$sql_show.=" where name like '%$txt_search%' or surname like '%$txt_search%' ";}$result_show = mysql_query($sql_show) or die(mysql_error());while($row_show = mysql_fetch_array($result_show)){?><tr><td><?=$row_show['id']?></td><td><?=$row_show['name']?></td><td><?=$row_show['surname']?></td><td><?=$row_show['address']?></td><td><?=$row_show['phone']?></td><td><div align="center"><a href="edit.php?edit_id=<?=$row_show[id]?>">แกไข</a></div></td></tr><?}?></table>
คำานำา
เรอง หนา
รายงาน
เรอง การเขยนโปรแกรมภาษา PHP
จดทำาโดย
นางสาวปวณนช สธรรม
นกเรยนชนมธยมศกษาปท 5/6 เลขท 18
เสนอ
อาจารยสมชาต แผอำานาจ
รายงานเลมนเปนสวนหนงของกลมสาระการเรยนรการงานอาชพและเทคโนโลย
โรงเรยนแมสะเรยง บรพตรศกษา“ ”
สำานกเขตพนทการศกษามธยมศกษา เขต 34