Web viewวิธีติดตั้งและใช้งาน Appserv Download ตัวโปรแกรม AppServ เมื่อ Download Serv

Post on 06-Feb-2018

235 Views

Category:

Documents

4 Downloads

Preview:

Click to see full reader

Transcript

วธตดตงและใชงาน Appserv

 Download ตวโปรแกรม AppServ 

เมอ Download Serv เรยบรอยขนตอนตอไปคอการตดตง

1.ตดตงโปรแกรม Appserv

จะพบกบหนาตาง Welcome ในแตละเวอรชน แตละรนของ AppServ กจะมหนาตางไมเหมอนกน ขนอยกบวาเราดาวนโหลดเวอรชนไหน

ยอมรบเงอนไขของ AppServ เราจงจะสามารถทำาการตดตง และไปยงขนตอนตอไปได

เลอกโฟลเดอรทเราจะทำาการตดตง AppServ ลงไป คาเรมตน จะตดตงไวท Dive C:/AppServe

เลอก Component ทตองการจะตดตง ในทนเลอกทงหมดเลย

กำาหนด ขอมลของเซฟเวอร ตรงนเราจะกำาหนดเปนอะไรกได เพราะมนอยในเครองของเราอยแลว เชน Server Name เปน http://pongpat.janthai.com E-Mail เปน pongpat@janthai.com เปนตน

กำาหนดรหสผานสำาหรบใชตดตอกบเซฟเวอรของเรา กำาหนดเปนรหสงายๆกได เชน 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

top related