บทท่ี 5 คาสัง่ ควบคมุ (Control Statement) | 83 ตวั อย่ำง 5.8 <?php for ($counter = 10; $counter >= 1; --$counter ) { echo $counter . \"<br />\"; } ?> ผลกำรรันโปรแกรม 10 9 8 7 6 5 4 3 2 1 ตัวอยำ่ ง 5.9 <?php for ($counter = 10; $counter >= 1; $counter -=2 ) { echo $counter . \"<br />\"; } ?> การพฒั นาเว็บไซต์ทางธุรกิจชนั้ สงู
84 | บทท่ี 5 คาสงั่ ควบคุม (Control Statement) ผลกำรรนั โปรแกรม 10 8 6 4 2 จากตัวอย่าง 5.9 ทดลองเปล่ียนการลดค่าตัวแปร $counter เป็น $counter -=2 ซ่ึงเป็นการลดค่าลงมาท่ีละ 2 ทาให้ผลการรนั โปรแกรมแสดงเฉพาะ เลขคู่ 5.3.2 คำส่ัง while เป็นการวนลูปท่ีมีการตรวจสอบเง่ือนไขก่อนการวนลูป โดยจะทาการวนลูป ก็ต่อเม่ือเงื่อนไข (condition) เป็นจริง ถา้ เงื่อนไขเป็นเท็จจะออกจากการวนลูปทันที หรือถ้าการตรวจสอบเง่ือนไขการวนลูปในคร้ังแรกเป็นเท็จก็จะไม่มีการทางานในลูป while เลย ซง่ึ มีรปู แบบดังน้ี รูปแบบ while (condition) { // จะทำงำนทน่ี เี้ ม่ือ condition เปน็ จริง update; } condition เง่ือนไขการวนลปู โดยจะทาการวนลปู เมื่อเง่ือนไขเปน็ จรงิ update; การเปลี่ยนแปลงคา่ ตัวอยำ่ ง 5.10 <?php $counter = 1; while ($counter <= 10) { echo $counter . \"<br/>\"; การพัฒนาเว็บไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 5 คาสงั่ ควบคมุ (Control Statement) | 85 $counter ++; } ?> ผลกำรรันโปรแกรม 10 9 8 7 6 5 4 3 2 1 5.3.3 คำสั่ง do...while คาส่ัง do...while จะทาการวนลูป อย่างนอ้ ย 1 รอบ แล้วคอ่ ยทาการ ตรวจสอบเงอ่ื นไข โดยจะทาการวนลูปในรอบที่ 2 เปน็ ตน้ ไปก็ต่อเมอ่ื เง่ือนไข (condition) เปน็ จรงิ ถา้ เงื่อนไขเป็นเทจ็ กจ็ ะออกจากการวนลูปทันที มีรปู แบบดงั นี้ รูปแบบ do { // จะทางานที่น้เี มือ่ condition เปน็ จริง update; } while (condition); condition เง่อื นไขการวนลปู โดยจะทาการวนลูปเมือ่ เงือ่ นไขเป็นจริง update; การเปลย่ี นแปลงคา่ ตัวอย่ำง 5.11 <?php การพฒั นาเว็บไซตท์ างธุรกิจชนั้ สงู
86 | บทท่ี 5 คาสงั่ ควบคมุ (Control Statement) $counter = 0; do{ echo ++$counter . \"<br/>\"; } while ($counter < 10); ?> ผลกำรรันโปรแกรม 1 2 3 4 5 6 7 8 9 10 ตัวอยำ่ ง 5.12 <?php $counter = 99; do{ echo $counter . \"<br/>\"; ++$counter; } while ($counter < 10); ?> ผลกำรรันโปรแกรม 99 รอบแรกยงั ไม่ตรวจสอบเงอื่ นไข จึงแสดงขอ้ มลู ตวั แปร $counter แลว้ ทาการเปรียบเทยี บ ค่าตวั แปร $counter วา่ น้อยกว่า 10 หรือไม่ ซึ่งเป็นเท็จ จงึ แสดงแค่ 99 เทา่ นั้น การพัฒนาเว็บไซตท์ างธุรกิจชนั้ สงู
บทท่ี 5 คาสงั่ ควบคมุ (Control Statement) | 87 5.3.4 คำส่งั foreach คาสัง่ foreach เป็นคาสั่งทใ่ี ช้สาหรับการวนลูปข้อมูลในตวั แปรชนิดอาร์เรย์ โดยจะทา การวนลปู ตง้ั แตต่ าแหน่งอนิ เด็กซ์ 0 ถึงตาแหนง่ อินเดก็ ซส์ ดุ ท้ายของอารเ์ รย์ โดยไม่จาเป็น ตอ้ งกาหนดเงอื่ นไขใดๆ ซง่ึ มีรูปแบบดงั น้ี รปู แบบ foreach (array_expression as $value){ // วนลูปต้งั แตต่ ำแหน่งอนิ เดก็ ซ์ 0 ถงึ ตำแหน่งอนิ เด็กซ์สุดทำ้ ยของ อำรเ์ รย์ } ตัวอย่ำง 5.13 <?php $arr = array(\"หนง่ึ \", \"สอง\", \"สาม\", \"สี่\", \"หา้ \"); foreach ($arr as $value) { echo $value; echo \"<br />\"; } ?> ผลกำรรันโปรแกรม หนงึ่ สอง สาม ส่ี หา้ การพฒั นาเวบ็ ไซตท์ างธุรกิจชนั้ สูง
88 | บทท่ี 5 คาสงั่ ควบคุม (Control Statement) ตวั อย่ำง 5.14 <?php $arr = array(\"เรา\", \"รกั \", \"มหาวิทยาลัยราชภฏั อุดราน\"ี ); foreach ($arr as $value) { echo $value; } ?> ผลกำรรันโปรแกรม เรารกั มหาวิทยาลัยราชภัฏอุดรานี 5.4 คำสง่ั break; คาส่ัง break เป็นคาสั่งทีส่ ่ังให้หยุดและออกจากการวนลปู โดยคาสง่ั ที่อย่หู ลังคาสง่ั break จะไม่ทางาน ตัวอยำ่ ง 5.15 <?php $counter = 1; do{ echo $counter . \"<br />\"; $counter ++; if($counter == 5){ break; } //ถา้ $counter เทา่ กับ 5 ใหเ้ รยี กใชค้ าสงั่ break; } while ($counter <= 20) ?> ผลกำรรันโปรแกรม 1 2 3 4 การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 5 คาสัง่ ควบคมุ (Control Statement) | 89 5.5 คำส่งั continue; คาส่ัง continue เป็นคาส่ังที่กาหนดให้ข้ามการทาการวนลูปในรอบน้ัน ๆ ซ่ึงต่างจากคาสั่ง break ท่ีออกจากการวนลูปวนลปู ในรอบน้ัน ๆ เลย ตัวอย่ำง 5.16 <?php $counter = 0; do{ if(++$counter == 5){ continue; } echo $counter . \"<br />\"; } while ($counter < 10); ?> ผลกำรรันโปรแกรม 1 2 3 4 6 7 8 9 ผลการรันโปรแกรมจะพบว่าไม่แสดงเลข 5 เน่ืองจากข้ามการวนลูปในรอบท่ี $counter เทา่ กบั 5 5.6 คำสั่ง include คาสงั่ include เปน็ คาส่ังท่ีแทรกไฟล์จากภายนอก ถา้ ไม่มกี ารพบไฟลด์ งั กลา่ วโปรแกรมจะ ยังคงสามารถทางานตอ่ ไปได้ ไฟล์ config.php <?php การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
90 | บทท่ี 5 คาสงั่ ควบคุม (Control Statement) $user = 'earn'; $password = 'ammy'; $province =\"บงึ กาฬ\"; ?> จังหวดั อดุ รธานี <br/> ไฟล์ test.php <?php include ('config1.php'); echo \"สวัสดคี ุณ : $user คุณมีรหสั : $password\"; // A ?> <hr/> 5.7 คำสง่ั require() คาสั่ง require() เป็นคาส่ังที่แทรกไฟล์จากภายนอก เหมือนกันกับคาส่ัง include แต่ถ้า ไม่พบไฟล์ท่รี ะบุในฟงั ก์ชัน โปรแกรมจะหยุดการทางานทันที ไฟล์ config.php <?php $user = 'earn'; $password = 'ammy'; $province =\"บงึ กาฬ\"; การพฒั นาเว็บไซตท์ างธุรกิจชนั้ สงู
บทท่ี 5 คาสงั่ ควบคมุ (Control Statement) | 91 ?> จังหวัดอุดรธานี <br/> ไฟล์ test.php <?php require ('config.php'); echo \"สวสั ดคี ุณ : $user คุณมีรหัส : $password\"; // A ?> <hr/> 5.8 คำสัง่ require_once คาส่ัง require_once เป็นคาส่ังที่ใช้ในการเรียกไฟล์จากภายนอก โดยท่ี require_one จะ มกี ารนาเขา้ ไฟลด์ งั กล่าวเพียงครัง้ เดียว ถงึ แม้จะมีการ require_once เขา้ มาหลายครงั้ กต็ าม 5.9 คำส่ัง include_once คาส่ัง include_once เป็นคาส่ังท่ีใช้ในการเรียกไฟล์จากภายนอก โดยทาการเรียกค่า โปรแกรมหรือข้อความในไฟล์ปลายทาง คาสั่ง include() เมื่อโปรแกรมไม่พบไฟล์ดังกล่าวโปรแกรม จะแสดงข้อความเตือน Warning เท่าน้ัน include กับ include_once ต่างกันตรงที่ include_one จะมกี ารนาเขา้ ไฟลด์ งั กล่าวเพียงคร้งั เดียว ถงึ แมจ้ ะมกี าร include_once เข้ามาหลายครัง้ ก็ตาม 5.10 สรุป คาส่ังควบคุมมีความสาคัญต่อการเขียนโปรแกรมมาก เนื่องจากคาส่ังควบคุมเป็นส่วนที่ กาหนดเส้นทางการทางานของโปรแกรม ว่าจะต้องการมีขน้ั ตอนการทางานอย่างไร โดยแบ่งออกเป็น 2 รปู แบบ ดังน้ี รูปแบบ 1. คาส่ังตัดสินใจเลือกทา (Decision) จะทางานตามเงื่อนไข เป็นจริง (True) หรอื เป็นเทจ็ (False) ได้แก่ การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สูง
92 | บทท่ี 5 คาสงั่ ควบคุม (Control Statement) 1. คาส่ัง if เงือ่ นไขเป็นจริงจะทางานคาสัง่ หลงั if เทา่ นน้ั 2. คาสั่ง if-else เงื่อนไขเป็นจริงจะทางานคาสั่งหลัง if ถ้าเป็นเท็จจะทางาน คาสั่งหลงั else 3. คาส่ัง switch ถ้าการเปรยี บเทียบคา่ เงื่อนไขตรงกับเงอ่ื นไข case ใดๆกจ็ ะ ทางานใน case นัน้ ๆ รูปแบบ 2. คาส่ังวนซ้า (Loop) เพื่อทาการวนรอบการทางานมากกว่า 1 รอบ เช่น ทาการวนรอบการแสดงผลขอ้ มลู คาสั่งสบื ค้นขอ้ มลู (select) มาจากฐานขอ้ มูล ได้แก่ 1. คาส่ัง for เป็นการวนลูปท่ีมีการกาหนดค่าเร่ิมต้น และจะทาการลูปเมื่อ เงื่อนไขเป็นจรงิ 2. คาส่ัง while มีการตรวจสอบเง่ือนไขการวนลูปก่อน โดยจะทาการวนลูป กต็ ่อเมอ่ื เงอ่ื นไขเป็นจริง 3. คาส่งั do while วนลูปอย่างนอ้ ย 1 รอบแล้วค่อยทาการตรวจสอบเง่ือนไข จะทาการวนลปู รอบตอ่ ไปกต็ อ่ เม่อื เง่ือนไขหลงั while(เปน็ จรงิ ) 4. คาส่งั foreach คาสั่งทใ่ี ชส้ าหรับการวนลปู ขอ้ มลู ในตัวแปรชนิดอาร์เรย์ คาสั่ง break เป็นคาส่งั ทสี่ ง่ั ใหอ้ อกจากการคาสง่ั ควบคุมทนั ที คาส่ัง continue เปน็ คาส่ังที่กาหนดให้ข้ามการทางานวนลปู ในรอบนัน้ ๆ การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 5 คาสัง่ ควบคมุ (Control Statement) | 93 คำถำมท้ำยบท 1. กาหนดตัวแปร $grade สาหรับเก็บคะแนน แล้วทาการเปรียบเทียบผลการเรียน ตามเกณฑค์ ะแนน ($grade) ดังต่อไปน้ี ถ้าคะแนน 0-49 ใหแ้ สดงข้อความ “คุณไดเ้ กรด F” ออกทางจอภาพ ถา้ คะแนน 50-59 ให้แสดงข้อความ “คณุ ได้เกรด D” ออกทางจอภาพ ถ้าคะแนน 60-69 ใหแ้ สดงขอ้ ความ “คณุ ได้เกรด C” ออกทางจอภาพ ถา้ คะแนน 70-79 ใหแ้ สดงขอ้ ความ “คุณได้เกรด B” ออกทางจอภาพ ถ้าคะแนน 80-100 ให้แสดงข้อความ“คุณไดเ้ กรด A” ออกทางจอภาพ 2. คาสัง่ switch ในการแสดงข้อมูลระดับความพึงพอใจการให้บริการ ถา้ เปน็ A แสดงขอ้ ความ \"พึงพอใจมากทส่ี ุด\" ถ้าเป็น B แสดงขอ้ ความ \"พงึ พอใจมาก\" ถา้ เปน็ C แสดงขอ้ ความ \"พงึ พอใจปานกลาง\" ถา้ เป็น D แสดงข้อความ \"พงึ พอใจน้อย\" ถ้าเปน็ E แสดงข้อความ \"พงึ พอใจนอ้ ยท่สี ุด\" ถา้ เปน็ ตวั อักษรอื่น ๆ แสดงข้อความ \"กรุณากรอกขอ้ มลู ใหม\"่ 3. จากอาร์เรย์ score ให้ใช้คาสั่ง foreach ในการนาหมายเลขในอาร์เรย์มาแสดงออกทาง จอภาพ 1 หมายเลขต่อ 1 บรรทดั 100 120 140 150 250 260 275 180 280 270 265 190 4. ให้แสดงสตู รคณู แม่ 2 โดยใช้คาสั่ง for 2x1 = 2 2x2 = 4 2x3 = 6 2x4 = 8 2x5 = 10 2x6 = 12 2x7 = 14 2x8 = 16 2x9 = 18 การพฒั นาเวบ็ ไซตท์ างธุรกจิ ชนั้ สูง
94 | บทท่ี 5 คาสงั่ ควบคมุ (Control Statement) 2x10 = 20 2x11 = 22 2x12 = 24 5. คาสัง่ while และคาสง่ั do...while แตกต่างกนั อย่างไร 6. ให้เขียนโค้ดภาษา PHP กาหนดตัวแปรแสดงตัวเลขต้ังแต่ตัวแปร $start ถึงตัวแปร $stop โดยใหท้ าการวนลปู แสดงตัวเลขตัง้ แต่ $start ถงึ $stop ตัวอย่างเชน่ $start = 10; $stop = 20; แสดง 10 11 12 13 14 15 16 17 18 19 20 $start = 25; $stop = 15; แสดง 25 24 23 22 21 20 19 18 17 16 15 7. คาส่งั Break และคาส่ัง Continue แตกต่างกันอยา่ งไร 8. ให้เขียนโค้ดภาษา PHP วนรอบแสดงตัวเลขตั้งแต่ 1 ถึง 100 โดยมีเงื่อนไข คือ ไม่แสดงตวั เลขทหี่ ารด้วย 5 ลงตวั การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สูง
บทท่ี 6 ฟงั ก์ชนั และการใช้งานฟังกช์ ัน ในการเขียนโปรแกรมบางครั้งจะมีการใช้งานค้าส่ังท่ีซ้า ๆ เพื่อให้การเขียนโปรแกรมน้ัน สะดวกรวดเร็ว และรูปแบบโครงสร้างโปรแกรมดูง่ายขึ้น ภาษาคอมพิวเตอร์ส่วนมากจึงออกแบบโดย การน้ากลุ่มค้าส่ังทที่ ้างานอย่างใดอย่างหนึ่งมาจัดรวมกนั เรยี กว่า ฟังก์ชัน (function) ในภาษา PHP ก็มีฟังก์ชันใช้งานเช่นกันโดยผู้พัฒนาได้สร้าง ฟังก์ชันมาตรฐานเอาไว้ให้โปรแกรมเมอร์เรียกใช้งานได้ เลย และนอกจากนีใ้ นบางคร้ังฟังก์ชันมาตรฐาน ทมี่ าพร้อมกับภาษา PHP ยงั ไมค่ รอบคลุมการท้างาน โปรแกรมเมอร์ยังสามารถสร้างฟังก์ช่ันขึ้นมาใช้งานเองได้ ในบทนี้จะกล่าวถึงฟังก์ช่ันมาตรฐาน และ การสร้างฟงั ก์ชันขึ้นมาเอง เพื่อเป็นการอา้ นวยความสะดวกให้กบั โปรแกรมเมอรใ์ นการพฒั นาเวบ็ ไซต์ ดว้ ยภาษา PHP ต่อไป 6.1 ฟังกช์ ัน (Function) ฟังก์ชัน (function) หมายถึงกลุ่มค้าสั่งที่ท้างานอย่างใดอย่างหนึ่ง สามารถเรียกใช้งานได้ หลายคร้ัง ท้าให้การพัฒนาโปรแกรมสะดวกรวดเร็ว และรูปแบบโปรแกรมดูง่ายขึ้น โดยฟังก์ช่ันแบ่ง ออกเปน็ 2 กลุม่ หลักดงั น้ี 1) ฟังก์ชันมาตรฐานที่มาพร้อมกับภาษา PHP ซ่ึงทางผู้พัฒนาภาษา PHP สร้างขึ้นมา ให้โปรแกรมเมอร์สามารถเรียกใช้ฟังก์ชันน้ัน ๆ ได้เลย โดยทางผู้พัฒนาได้เตรียมฟังก์ชันมาตรฐานไว้ ให้ใชง้ านจา้ นวนมาก เช่น echo(), trim(), gettype(), min(), pow() เปน็ ต้น 2) ฟังก์ชันท่ีโปรแกรมเมอร์ออกแบบและสร้างขึ้นมาเอง เพ่ือตอบสนองต่อความ ต้องการตามข้ันตอนวิธีท่ีโปรแกรมเมอร์ต้องการ ซ่ึงจะขออธิบายในหัวข้อ 6.6. การสร้างฟังก์ชัน ข้ึนมาเอง 6.2 การเรยี กใช้ฟงั กช์ นั การเรียกใช้งานฟังก์ชัน จะต้องดูลักษณะของฟังก์ชันว่ามีลักษณะอย่างไร โดยหลัก ๆ พิจารณาดงั ต่อไปนี้ 1) อาร์กิวเมนตข์ องฟังกช์ ันมจี า้ นวนเทา่ ไหรเ่ ปน็ ข้อมูลชนดิ อะไร 2) ฟังกช์ ันท่มี กี ารสง่ คนื ค่าหรอื ไม่ การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง นริ ันดร ผานิจ
96 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ ตัวอยา่ ง 6.1 รปู แบบฟงั กช์ ัน pow number pow ( number $base , number $exp ) จากรปู แบบของฟังกช์ ัน pow พบวา่ มี 4 สว่ นคือ รูปแบบการ Return ค่า เปน็ ชนดิ ตัวเลข (number) ช่ือฟงั ก์ชัน อาร์กิวเมนต์ 1 เปน็ ชนิดตัวเลข (number) อาร์กวิ เมนต์ 2 เปน็ ชนิดตัวเลข (number) ซ่ึงเวลาเรียกใช้งานจะต้องก้าหนดชนิดข้อมูล ให้ตรงกับโครงสร้างท่ีฟังก์ชันก้าหนด เอาไว้ $cal = pow(2, 3); // ไดค้ า่ 8 $cal = pow(2, z); // มขี อ้ ผดิ พลาดเนอื่ งจาก z ไมใ่ ชต่ วั เลข $cal = pow(y, 2); // มขี อ้ ผดิ พลาดเนอ่ื งจาก y ไมใ่ ชต่ วั เลข $cal = pow(y, z); // มขี อ้ ผดิ พลาดเนอื่ งจาก y,z ไมใ่ ชต่ วั เลข ฟังก์ชันมาตรฐานท่ีมาพรอ้ มกับภาษา PHP แบ่งออกได้หลายชุดค้าสงั่ ฟังก์ชนั เช่น 1. ฟังกช์ ันด้านตัวเลขทางคณติ ศาสตร์ 2. ฟงั ก์ชันเกย่ี วกับตัวอกั ษร 3. ฟงั กช์ นั เกี่ยวกบั วันท่ี/เวลา 4. ฟงั ก์ชันเกี่ยวกับไฟลแ์ ละไดเรค็ ทอร่ี 5. ฟังก์ชนั เกยี่ วกบั ฐานขอ้ มูล 6. ฟังกช์ ันเก่ยี วกับการรบั ส่ง Email แต่ในต้าราเล่มนข้ี อน้าเสนอเฉพาะฟงั กช์ นั บางกลุ่มเท่านั้น ดงั นี้ 6.3 ฟังก์ชนั ด้านตัวเลขทางคณติ ศาสตร์ (Math Function) เป็นชุดค้าสั่งด้านการค้านวณทางด้านตัวเลขและคณิตศาสตร์ เช่น การหาค่าเฉลี่ย คา่ สูงสดุ ค่าต่า้ สดุ เป็นตน้ การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 97 ตาราง 6.1 ฟงั ก์ชันด้านตัวเลขทางคณิตศาสตร์ (Math Function) ฟังกช์ ัน่ คาอธบิ าย abs(number) หาคา่ สมั บูรณ์ของตัวเลข คา่ สัมบรู ณ์ของตวั เลข คือ ตัว pow(base, exponent) เลขท่ไี ม่มีเคร่ืองหมาย ceil(number) ค้านวณเลขยกก้าลัง base ยกก้าลัง exponent floor(number) ปัดเศษ number ขน้ึ round(number, precision) ปัดเศษ number ลง abs(number) ปัดเศษทศนยิ ม โดยพิจารณาการปดั จากจ้านวนหน่วย is_nan(number) ทศนยิ ม (precision) ค้านวณหาค่าสมั บรู ณ์ min(array) ตรวจสอบว่า number ไม่ใช่ข้อมลู ชนิดตวั เลขหรือไม่ จะ max(array) คนื คา่ เป็นจริง (True) หรอื 1 ถ้า number ไม่ใชช่ นดิ ตวั เลข หาคา่ ต่า้ สดุ ใน array หาค่าสูงสุดใน array log(number) หาคา่ log ฐานธรรมชาติ rand(min, max) สมุ่ ตัวเลขระหวา่ งค่า min และ max cos(number) หาคา่ ของ Cosine sin(number) หาค่าของ Sine mt_rand(min, max) สุ่มตวั เลขระหว่างคา่ min และ max 6.4 ฟังกช์ นั เก่ียวกบั ตัวอกั ษร เป็นฟังก์ชันที่ใช้ด้าเนินการเก่ียวกับตัวอักษรหรือข้อความต่าง ๆ เช่น นับจ้านวนตัวอักษร, ตดั ตา้ แหนง่ ตัวอกั ษรที่ต้องการ เป็นต้น ตาราง 6.2 ฟังก์ชันเกีย่ วกับตัวอกั ษร ฟังกช์ ัน คาอธิบาย strlen(string) นบั จ้านวนความยาวของขอ้ ความ addslahes(string) เพ่มิ เครื่องหมาย \\ (Back Slashes) ด้านหนา้ อักขระ bin2hex(string) พเิ ศษ chr(string) แปลงข้อมูลไบนารีเปน็ ตวั แทนเลขฐานสิบหก count_chars(string, mode) แปลงค่าตัวเลข ASCII กลับมาเป็นตัวอกั ษร นับจา้ นวนตวั อกั ษรในสตริง การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
98 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ ฟงั ก์ชัน คาอธบิ าย explode(separator, string) แยกสตริงออกเปน็ สตรงิ ย่อย separator คือ สตริงที่ใช้แบง่ ส่วน เชน่ “ ” string คือ สตรงิ ทต่ี ้องการแบ่ง htmlspecialchars(string) แปลงโคด้ html ทผี่ ู้ใชป้ ้อนเข้ามาให้อยู่ในรปู ของสตริง implode(separator, array) เชื่อม array ดว้ ย separator lcfirst(string) เปลี่ยนตวั อักษรตัวแรกด้านซ้ายเป็นตัวพมิ พ์ใหญ่ ltrim(string,charlist) ตัดชอ่ งวา่ งดา้ นซ้ายของสตริงออก nl2br(string) เปลย่ี น \\n เปน็ <br/> number_format(string) เปลยี่ นรปู แบบของตัวเลขให้มี , print(string) แสดงสตริงออกทางจอภาพ str_repeat(string,repeat) สร้างข้อความซ้า ๆ ดว้ ยค้าท่ีตอ้ งการ string คอื ตวั อักษรหรือค้าท่ีตอ้ งการ repeat คือ ความยาวของสตรงิ ทต่ี อ้ งการ str_replace(find,replace,string) คน้ หาและแทนท่ีค่าข้อความ find คอื ค้าท่ีตอ้ งการเปลยี่ นคา่ replace คอื ค้าท่ีตอ้ งการแทนค่า string คือ ขอ้ ความทีค่ ้นหาและแทนที่ค่าข้อความ str_split(string , length=1) แยกข้อความเกบ็ ใน array string คอื สตรงิ ที่ต้องการแยกข้อความ length คอื ความยาวของแต่ละ element ใน array strtr(string , array) เปล่ียนข้อความ ด้วยคา้ ทต่ี ้องการ substr(string, start, length) ตัดเลอื กสตรงิ ทต่ี ้องการ string สตริงที่ต้องการ start ตา้ แหนง่ ท่ีเรม่ิ ต้นท่ีต้องการตดั ปกติ =0 length ความยาวทตี่ ัดเลอื ก strtoupper(string) เปลีย่ นตวั อกั ษรเปน็ ตัวพิมพ์ใหญ่ strtolower(string) เปลี่ยนตวั อกั ษรเปน็ ตวั พมิ พ์เล็ก ตัวอย่าง 6.2 ฟงั ก์ชนั strlen() นับจา้ นวนความยาวของข้อความ <?php $name = \"Nirundorn Panit\"; echo strlen($name); ?> การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 99 ผลการรันโปรแกรม 15 ตวั อย่าง 6.3 ฟังก์ชัน strtr() แทนทข่ี ้อความตามที่ก้าหนด <?php $str = \"ยามสไิ ด้ บนิ มาคอื นกเจา่ ยามสิบไ่ ด้ บนิ เจ้ยเจิดหนี \"; echo str_replace(\"ยาม\",\"คาด\", $str); ?> ผลการรนั โปรแกรม คาดสิได้ บนิ มาคือนกเจ่า คาดสิบ่ได้ บินเจย้ เจดิ หนี ตัวอย่าง 6.4 ฟงั ก์ชัน str_replace() แทนท่ีขอ้ ความตามท่ีกา้ หนด <?php $txt = strtr(\"Hilla Warld\",\"ia\",\"eo\"); echo $txt; ?> ผลการรนั โปรแกรม Hello World ตวั อยา่ ง 6.5 ฟังก์ชัน str_replace() แทนที่ข้อความตามที่ก้าหนด <?php $txt = substr(\"Thailand\", 0, 4) ; echo $txt; ?> การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
100 | บทท่ี 6 ฟังก์ชนั่ และใช้งานฟังกช์ นั่ ผลการรนั โปรแกรม Thai 6.5 ฟงั ก์ชันเกย่ี วกับวันท/่ี เวลา (DateTime Function) เป็นฟังกช์ ันท่ีใชด้ ้าเนินการเกี่ยวกับข้อมูลประเภทวนั ที่และเวลา เชน่ ก้าหนดรูปแบบวันท่ี, หาระยะห่างระหวา่ งวนั เวลา หรอื แปลงสตริงให้อยู่ในรูปแบบวันเวลา ตาราง 6.3 ฟังกช์ ันเก่ียวกับวันที่/เวลา (DateTime Function) ฟงั กช์ ัน่ คาอธิบาย date(\"format\") ก้าหนดวนั ทป่ี จั จุบันโดยสามารถกา้ หนดรปู แบบ (format) ทต่ี ้องการแสดงได้ โดยมรี ปู แบบท่ีใชใ้ นฟังกช์ ันมีดังน้ี d – วนั ท่ี 01 ถงึ 31 j – วนั ทไ่ี ม่มี 0 น้าหนา้ 1 ถงึ 31 D – วันโดยใช้ 3 ตวั อักษรหน้าสดุ Mon ถึง Sun N – เลขวนั ในสปั ดาห์ 1 จันทร์ ถึง 7อาทิตย)์ w – เลขประจา้ วนั (0 อาทิตย์ – 6 เสาร)์ S – อกั ษรสองตัวลงท้ายวนั ที่ st, nd, rd, th z – วันทีใ่ น 1 ปี (0 -365) W – เลขสปั ดาห์ทใ่ี น 1 ปี F – January ถึง December m – เดอื น 01 ถึง 12 M – ชือ่ เดอื นแบบสนั้ 3 ตัวอักษร Jan ถงึ Dec n – เดอื นที่ (ไม่มี 0 นา้ หนา้ ) 1 ถึง 12 t – จา้ นวนวันในเดือน o – The ISO-8601 year number Y – ปี ค.ศ. 4 ตัวอกั ษร เช่น 2018 y – ปี ค.ศ. 2 ตัวอักษร เชน่ 18 a – am , pm แบบตวั เล็ก A – AM , PM แบบตัวใหญ่ g – เวลา 12 ชว่ั โมง (1 ถงึ 12) G – เวลา 24 ชวั่ โมง (0 ถงึ 23) การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 101 ฟังกช์ ่ัน คาอธิบาย checkdate() h – เวลา 12 ช่ัวโมง (01 ถึง 12) date_add() H – เวลา 24 ชว่ั โมง (00 ถึง 23) date_create() i – นาที (00 ถงึ 59) date_format() s – วนิ าที (00 ถึง 59) date_diff() c – วนั แบบ ISO 8601 date_parse(date_string) กา้ หนดวนั ที่แลว้ ส่งคา่ ค้านวณใหก้ บั ตัวแปร $today getdate() เพ่มิ จ้านวนวันเวลา localtime() สร้างวนั เวลา strtotime(todate) กา้ หนดรูปแบบวัน หาระยะห่างระหวา่ งวนั แปลง date_string ใหอ้ ย่ใู นรูปแบบ array รบั ข้อมลู วันและเวลาในรปู แบบ array รับขอ้ มลู วนั และเวลาในรูปแบบ array หาคา่ timestamp ของวนั เวลา todate ตวั อยา่ ง 6.6 ฟงั ก์ชนั date() กา้ หนดวนั ทีป่ ัจจุบัน <?php echo date(\"Y-m-d H:i:s\"); ?> ผลการรนั โปรแกรม 2017-06-23 07:29:59 ตวั อย่าง 6.7 ฟังก์ชัน date_diff() หาระยะหา่ งระหว่างวัน <?php $date1=date_create(\"2017-01-02\"); $date2=date_create(\"2017-01-16\"); $diff=date_diff($date1, $date2); echo $diff->format(\"%a\"); //14 ?> การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สูง
102 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ ผลการรันโปรแกรม 14 ตัวอย่าง 6.8 ฟังก์ชัน strtotime() แปลงสตริงให้อยูใ่ นรูปแบบวนั เวลา <?php $tm=strtotime('now'); echo $tm; // 1529715917 echo \"<br/>\"; echo date('Y-m-d', $tm); // 2018-06-23 ?> ผลการรนั โปรแกรม 1529715917 2018-06-23 6.6 ฟงั ก์ชนั เกี่ยวกับไฟล์ และไดเรค็ ทอร่ี (File System Function) เป็นฟังก์ชั่นที่ใช้ด้าเนินการเกี่ยวกับแฟ้มข้อมูลและไดเร็คทอร่ีต่าง ๆ เช่น สร้างเท็กไฟล์, อา่ นขอ้ มลู จากเทก็ ไฟล์, สรา้ งไดเร็คทอรี่ เปน็ ตน้ ตาราง 6.4 ฟงั ก์ชันเกยี่ วกับไฟล์ และไดเร็คทอรี่ (File System Function) ฟังกช์ นั คาอธิบาย basename(path,suffix) หาชอื่ ไฟล์ หรือหาช่อื ไดเร็กทอรี่ copy(file, to_file) คดั ลอกไฟลจ์ ากไฟล์ file ไปเปน็ ไฟล์ to_file ถ้ามีไฟล์อยู่ แลว้ ก็จะเป็นการเขยี นทับ move_uploaded_file(file, ยา้ ยไฟลจ์ ากไฟล์ file ไปเปน็ ยังไดเร็คทอร่ใี หม่ newloc newloc) unlink(file) ลบไฟล์ file จะคืนค่า true ถ้าลบส้าเรจ็ dirname(path) หาขอ้ มูลเฉพาะเสน้ ทาง path ไมร่ วมช่อื file การพฒั นาเวบ็ ไซตท์ างธุรกิจชนั้ สูง
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ | 103 ฟังกช์ ัน คาอธบิ าย fclose(file) ปดิ ไฟล์ file ทเ่ี คยเปดิ ด้วยฟังกช์ นั fopen() fopen(filename,mode) เปิดไฟลโ์ ดยมี filename เส้นทางและชอ่ื ไฟลท์ ีต่ อ้ งการเปิด is_file(file) mode ลกั ษณะทจี่ ะทา้ งานกับไฟล์มีโหมด ดงั น้ี filesize(filename) r อา่ นอยา่ งเดียว เรมิ่ ต้นที่ต้นไฟล์ is_dir(file) r+ อา่ นและเขียน เรม่ิ ต้นทต่ี ้นไฟล์ file_exists(path) w เขยี นอยา่ งเดียว โดยจะลบข้อมูลเก่าทิ้งถา้ ไมม่ ีไฟล์จะ fwrite(file,string) fread(file, length) สรา้ งไฟลใ์ หม่ rename(old,new) w+ อา่ นและเขยี น เป็นการเขียนทับไฟลเ์ ดมิ is_uploaded_file(file) ถ้าไมม่ ีไฟล์จะสรา้ งไฟล์ a เขยี นเพม่ิ ต่อท้ายไฟล์ ถ้าไม่มีไฟลจ์ ะสรา้ งไฟล์ a+ อ่านและเขียนต่อทา้ ยไฟล์ ถา้ ไมม่ ีไฟลจ์ ะสรา้ งไฟล์ x เขยี นอย่างเดยี วโดยสร้างไฟลใ์ หม่ ถา้ มีไฟล์แล้วจะ error x+ อ่านและเขียนโดยสรา้ งไฟล์ใหม่ ถา้ มไี ฟล์แล้วจะ error ตรวจสอบว่าเป็นไฟลข์ ้อมูลหรอื ไม่ หาคา่ ขนาดของไฟล์ ตรวจสอบวา่ เปน็ ไดเร็คทอร่หี รอื ไม่ ตรวจสอบวา่ ไมไ่ ฟล์ตามท่อี ยู่ใน path หรอื ไม่ ถ้ามจี ะคนื คา่ เป็นจรงิ ถ้ามไี ฟล์ตาม path เขยี นขอ้ มูล string ลงไฟล์ file ทเ่ี ปิดด้วย fopen() อ่านข้อมลู จาก file ท่ีเปิด โดยอา่ นมาขนาด length เปลี่ยนชื่อไฟลห์ รือชื่อไดเร็กทอรีจ่ าก old เปน็ new ตรวจสอบว่า upload ไฟล์ได้สา้ เรจ็ หรือไม่ ถ้าสา้ เรจ็ จะคนื ค่าเป็นจรงิ ตวั อย่าง 6.9 ฟงั ก์ชัน is_dir() ตรวจสอบวา่ เปน็ ไฟล์หรอื ไม่ <?php $file = \"images\"; if(is_dir($file)) { echo (\"$file เปน็ ไดเร็คทอรี\"่ ); การพัฒนาเว็บไซต์ทางธุรกจิ ชนั้ สงู
104 | บทท่ี 6 ฟังก์ชนั่ และใช้งานฟังกช์ นั่ }else{ echo (\"$file ไมไ่ ด้เปน็ ไดเร็คทอรี่\"); } ?> ผลการรนั โปรแกรม images เป็นไดเร็คทอรี่ ตวั อยา่ ง 6.10 ฟงั ก์ชนั filesize สอบถามขนาดของไฟล์ <?php echo filesize(\"udru.txt\"); ?> เป็นการตรวจสอบขนาดของไฟล์ udru.txt ผลการรนั โปรแกรม images เปน็ ไดเรค็ ทอร่ี ตวั อย่าง 6.11 ฟังก์ชันสร้างและเขียนขอ้ มลู ใสใ่ นไฟล์ <?php = fopen(\"newfile.txt\", \"w\") or die(\"ไมส่ ามารถเปดิ ไฟล์ได้!\"); $myfile $txt1 = \"Buengkan Province\\n\"; fwrite($myfile, $txt1); $txt2 = \"Udon Thani Province\\n\"; fwrite($myfile, $txt2); การพัฒนาเวบ็ ไซตท์ างธุรกิจชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 105 fclose($myfile); ?> ผลการรนั โปรแกรม Buengkan Province Udon Thani Province fopen(\"newfile.txt\", \"w\") เปิดไฟล์ newfile.txt กา้ หนดข้อความ \"Buengkan Province\" ใช่เขยี นลงไฟล์ เขยี น $txt1 ลงไฟล์ $myfile ก้าหนดข้อความ \"Udon Thani Province\" ใช่เขียนลงไฟล์ เขียน $txt2 ลงไฟล์ $myfile ปิด $myfile 6.7 การสร้างฟงั ก์ช่ันขน้ึ มาเอง ฟังก์ชันมาตรฐาน ท่ีภาษา PHP เตรียมมาให้อาจยังไม่เพียงพอหรือเหมาะสมกับงาน ท่ีโปรแกรมเมอร์ต้องการ เช่น ฟังก์ชันการแปลงค่าตัวเลขเป็นข้อความข้อความภาษาไทย ซง่ึ ฟงั ก์ชนั มาตราฐานยังไมม่ ี ดังนั้นภาษา PHP จึงได้ออกแบบให้โปรแกรมเมอร์สามารถสร้างฟังก์ชันข้ึนมาเองได้ เพ่ือตอบสนองต่อความต้องการตามข้ันตอนวิธีท่ีโปรแกรมเมอร์ต้องการ โดยมีกฏการก้าหนดช่ือ ฟังก์ชนั ดงั น้ี 1. ชื่อฟังก์ชนั ชอ่ื ห้ามซ้ากบั ฟงั กช์ นั ทมี่ อี ยู่ 2. ช่ือฟังกช์ นั ชอื่ หา้ มซ้ากับค้าสงวน เช่น if, continue 3. ช่อื ฟงั ก์ชนั สามารถมีได้ 1. ตวั อักษร 2. ตัวเลข 3. Underscore _ 4. ชือ่ ฟังก์ชันห้ามเริ่มตน้ ด้วยตวั เลข ตาราง 6.5 ทดลองวเิ คราะห์ดวู ่าการก้าหนดชอื่ ฟังก์ชนั ดงั ต่อไปนี้ถูกต้องหรือไม่ ช่อื ฟังกช์ ัน ถูกตอ้ ง/ไม่ถกู ตอ้ ง สาเหตทุ ีไ่ มถ่ ูกต้อง 123(); _city2561(); การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
106 | บทท่ี 6 ฟังก์ชนั่ และใช้งานฟังก์ชนั่ grade2(); check_status(); shop-discount(); email@php(); pow(); $show(); 1abc(); continue() 6.7.1 สรา้ งฟงั ก์ชัน รูปแบบในการสรา้ งฟังกช์ ั่นขึ้นมาเอง มรี ปู แบบดงั นี้ รปู แบบ function ชอ่ื ฟงั ก์ชนั () { // พนื้ ทกี่ ารทางานของฟงั กช์ ัน } โดยมีรายละเอียดของแต่ละส่วนดังนี้ ระบคุ ้าว่า function เพื่อระบุการสรา้ งฟังก์ชนั ชื่อฟงั ก์ชนั () สา้ หรับระบอุ าร์กเู มนตใ์ นการส่งข้อมูลให้กับฟังกช์ ัน { ก้าหนดพ้นื ทเี่ ริ่มตน้ ของฟงั ก์ชนั } ก้าหนดพืน้ ที่สุดทา้ ยของฟังกช์ ัน การพฒั นาเว็บไซตท์ างธุรกจิ ชนั้ สูง
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ | 107 ตวั อยา่ ง 6.12 <?php // สร้างฟงั ก์ชนั ชอ่ื show function show() { echo \"ฉนั สรา้ งฟงั ก์ชนั ชื่อ show\"; } ?> 6.7.2 การเรียกใช้งาน การเรยี กใชง้ านฟงั ก์ชันสามารถเรยี กใชง้ านดงั น้ี ชอ่ื ฟังกช์ นั (); โดยระบุช่ือ ฟังก์ชันและตามดว้ ยวงเล็บ () ตวั อย่าง 6.13 <?php // สรา้ งฟังกช์ นั ชอื่ show function show() { echo \"ฉันสร้างฟังก์ชนั ช่ือ show\"; } show(); // การเรยี กใชง้ าน ?> ผลการรันโปรแกรม ฉันสรา้ งฟังกช์ ันช่ือ show การพัฒนาเว็บไซตท์ างธุรกจิ ชนั้ สงู
108 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ 6.8 สร้างฟงั ก์ชันที่มกี ารรบั อาร์กวิ เมนต์ การท้างานของหลาย ๆ ฟังก์ชัน จะต้องมีการส่งข้อมูลให้กับฟังก์ชันเพ่ือให้ฟังก์ชันน้า ข้อมูลดังกล่าวไปประมวลผลตามท่ีโปรแกรมเมอร์ต้องการ ซ่ึงการส่งข้อมูลตัวแปรต้นให้กับฟังก์ชัน เรียกว่า อาร์กิวเมนต์ มีรปู แบบดงั น้ี รูปแบบ function ชื่อฟงั กช์ นั ($argument1, $argument2,….) { // พนื้ ท่กี ารทางานของฟงั ก์ชัน } ระบคุ ้าว่า function เพื่อระบุการสรา้ งฟังก์ชนั ชอื่ ฟงั กช์ นั ($argument1, $argument2) ส้าหรบั ระบุอาร์กเู มนต์ในการส่ง ขอ้ มูลให้กบั ฟังก์ชนั โดยอาร์กูเมนต์ สามารถระบไุ ด้หลายอารก์ เู มนต์ ซ่ึงคน่ั ด้วยเคร่ืองหมาย , { กา้ หนดพืน้ ทีเ่ ริ่มต้นของฟงั ก์ชนั } กา้ หนดพนื้ ทส่ี ุดท้ายของฟังก์ชัน การเรียกใชง้ าน การเรยี กใชง้ านฟังก์ชันสามารถเรียกใช้งาน ดังน้ี ชอื่ ฟงั กช์ ัน($argument1, $argument2); โดยระบุช่ือฟังก์ชันและตามด้วยวงเล็บ และระบุอาร์กิวเมนต์ (argument) ให้กับ ฟังก์ชัน อาร์กิวเมนต์ สามารถมีได้มากกว่า 1 ตัว โดยแต่ละ อาร์กิวเมนต์ จะค้ันด้วย เครอ่ื งหมาย , ตัวอย่าง 6.14 ฟังก์ชัน plus() รับค่าอาร์กิวเมนต์ $num1 และ $num2 แล้ว แสดงผลการบวกเลข 2 จ้านวน <?php การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ | 109 // สรา้ งฟังกช์ น่ั ชอื่ plus() function plus($num1, $num2) { $total =$num1+$num2; echo $num1.\" + \". $num2 .\" = \".$total; } plus(10,25); // การเรยี กใชง้ านฟังกช์ น่ั plus() ?> ผลการรันโปรแกรม 10 + 22 = 35 ตัวอย่าง 6.15 ฟงั ก์ชนั vat() รบั คา่ อาร์กิวเมนต์ $money แล้วแสดงสนิ คา้ มลู ค่าเพม่ิ 7% <?php function vat($num1) { $total =$num1*7/100; echo \"สนิ ค้าราคา $num1 บาทตอ้ งชา้ ระภาษมี ลู ค่าเพิ่ม $total บาท\"; } vat(200); ?> ผลการรันโปรแกรม สินคา้ ราคา 200 บาทต้องชา้ ระภาษีมลู คา่ เพ่มิ 14 บาท 6.9 การกาหนดค่าดฟี อลตข์ องอารก์ ิวเมนต์ การพฒั นาเว็บไซต์ทางธุรกิจชนั้ สงู
110 | บทท่ี 6 ฟังก์ชนั่ และใช้งานฟังก์ชนั่ การก้าหนดค่าเร่ิมต้นให้กับอาร์กิวเมนต์ ซ่ึงค่าเริ่มต้นปกตินิยมก้าหนดค่าท่ีมีการใช้เป็น ประจ้า ตัวอย่างเช่น อัตราภาษีมูลค่าเพ่ิม Vat คือ7% เวลาเรียกใช้งานฟังก์ชั่นถ้าหากไม่ใส่ข้อมูล ให้กบั อารก์ วิ เมนตน์ ้นั ๆ อารก์ วิ เมนต์ จะใชค้ า่ ดฟี อลตแ์ ทนโดยอัตโนมตั ิ ตวั อย่าง 6.16 ฟังก์ชั่น vat รบั ค่าอาร์กิวเมนต์ $money ราคาสนิ คา้ และ อาร์กิวเมนต์ $vat อตั ราภาษีมลู ค่าเพิ่ม แลว้ แสดงราคาสินค้าและสนิ ค้ามูลค่าเพมิ่ <?php function vat($money, $vat=7) { $total =$money*($vat/100); echo \"สินคา้ $num1 บาทต้องช้าระภาษมี ลู ค่าเพิ่ม $total บาท <br/>\"; } vat(100); // $vat เทา่ กบั 7 vat(100, 7); // $vat เทา่ กบั 7 vat(200, 10); // $vat เทา่ กับ 10 ?> ผลการรนั โปรแกรม สินค้า 100 บาทต้องช้าระภาษีมลู คา่ เพ่มิ 7 บาท สินคา้ 100 บาทต้องช้าระภาษมี ูลคา่ เพมิ่ 7 บาท สนิ ค้า 200 บาทต้องช้าระภาษมี ูลคา่ เพิ่ม 20 บาท ตวั อยา่ ง 6.17 ฟังก์ชัน office() แสดงหน่วยงานทีส่ ังกดั ถ้าไม่ก้าหนดจะ หมายถงึ มหาวิทยาลัยราชภัฏอดุ รธานี <?php // สรา้ งฟังกช์ นั ชอื่ office สาหรบั แสดงหน่วยงานทส่ี งั กดั function office($name=\"มหาวทิ ยาลัยราชภัฏอดุ รธานี\") { echo \"<br/>เรารัก\".$name; } การพฒั นาเว็บไซต์ทางธุรกิจชนั้ สูง
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 111 $university =\"มหาวทิ ยาลยั ราชภัฏ\"; office(); // เรารักมหาวทิ ยาลัยราชภฏั อดุ รธานี office(\"มหาวิทยาลยั ราชภัฏอดุ รธานี\"); // เรารกั มหาวทิ ยาลยั ราชภัฏอดุ รธานี office(\"ມະຫາວິ ທະຍາໄລແຫ່ງຊາດ\"); // เรารักມະຫາວິ ທະຍາໄລແຫ່ງຊາດ office($university); // เรารักมหาวทิ ยาลัยราชภฏั ?> ผลการรนั โปรแกรม เรารักมหาวิทยาลัยราชภัฏอุดรธานี เรารกั มหาวิทยาลัยราชภัฏอดุ รธานี เรารกั ມະຫາວິ ທະຍາໄລແຫ່ງຊາດ เรารักมหาวทิ ยาลัยราชภัฏ 6.10 ฟงั กช์ ันท่ีมีการสง่ คนื คา่ ฟังก์ชันบางฟังก์ชันเมื่อท้างานเสร็จได้ข้อมูลผลลัพธ์ตามที่ต้องการแล้ว สามารถส่งค่า ดังกล่าวออกจากฟังก์ชั่น เพ่ือให้สามารถน้าผลลัพธ์จากการประมวลผลของฟังก์ชันไปใช้ในการ ประมวลผลอื่น ๆ ต่อได้ ด้วยการใช้ค้าว่า return ซึ่งเม่ือมีค้าว่า return จะเป็นการออกจากฟังก์ช่ัน โดยคา้ ส่งั ท่ีอยู่ต่อจากคา้ สง่ั return จะไม่มกี ารประมวลผล รปู แบบ function function_name($argument1, $argument2,….){ // พนื้ ทีก่ ารทางานของฟังก์ช่นั return ค่าท่ีต้องการส่งคนื คา่ ของฟังกช์ น่ั ; } ระบุค้าว่า return ดา้ นหนา้ ค่าทต่ี ้องการส่งคืนคา่ ตวั อย่าง 6.18 ฟังกช์ ่ัน grade() ส้าหรับหาคา่ เกรดผลการเรียนของนักเรียน การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
112 | บทท่ี 6 ฟังก์ชนั่ และใช้งานฟังกช์ นั่ <?php function plus($num1,$num2) { $total = $num1+$num2; return $total; echo \"ค้าสั่งหลงั return จะไมถ่ ูกใชง้ าน\"; } $result = plus(10, 20); echo $result; // 30 ?> ผลการรนั โปรแกรม 30 ตัวอยา่ ง 6.19 ฟงั กช์ ัน grade() ส้าหรับหาค่าเกรดผลการเรียนของนักเรียน <?php function grade ($score){ if($score >= 80) { return \"A\"; }elseif($score >= 70) { return \"B\"; }elseif($score >= 60) { return \"C\"; }elseif($score >= 50){ return \"D\"; }else{ return \"F\"; } // end if การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 113 } // end function $result = grade(68); echo $result; // C echo grade (78); // B echo \"คุณได้เกรด : \". grade (78); //คณุ ไดเ้ กรด : B ?> ผลการรนั โปรแกรม C B คุณได้เกรด : B ตวั อยา่ ง 6.20 ฟงั กช์ ัน vat() ค้านวณภาษีมลู คา่ เพิ่มของสินคา้ โดยรับขอ้ มูลราคา สินค้าแลว้ ฟงั กช์ ันจะค้านวณราคาสินคา้ ที่เพมิ่ ภาษมี ูลคา้ เพิ่ม แลว้ ส่งผลการค้านวณออกจาก ฟงั ก์ชนั <?php function vat($price, $tax = 0.07){ $price += $price * $tax; return $price; } $total = 250; $laka[\"gold\"] = 15200; $product1 = vat(520); // $product1 = 556.4 $product2 = vat(100, 0.08); // $product2 = 108 $product3 = vat(1000,0.07); // $product3 = 1070 $product4 = vat($total); // $product4 = 267.5 การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
114 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ $product5 = vat($laka[\"gold\"]); // $product5 = 16264 echo $product1 .\"<br/>\"; echo $product2 .\"<br/>\"; echo $product3 .\"<br/>\"; echo $product4 .\"<br/>\"; echo $product5 .\"<br/>\"; ?> ผลการรนั โปรแกรม 556.4 108 1070 267.5 16264 ตัวอย่าง 6.21 ฟังก์ชัน discount()ค้านวณส่วนลดหนังสือ โดยรับค่าราคา หนังสือและชนิดหนังสือ แล้วฟังก์ช่ันท้าการค้านวณหา 1. ส่วนลดหนังสือ ($discountTotal) 2. ราคาหนังสือท่ีลดราคาแล้ว ($discountPrice) แล้ว ส่งออก ข้อมูล 1. และ 2. คืนค่าจากฟังก์ชัน โดยมีประเภทหนังสือ ($booktype) และ ส่วนลด ดังน้ี เง่ือนไข 1. หนงั สือเรียนภาษาไทย ลด 30% 2. หนังสือเรียนตา่ งประเทศ ลด 20% 3. หนงั สอื อ่ืนๆท่ีไม่ใช่หนังสอื เรยี น ลด 15% <?php function discountFn($price, $booktype){ // คา่ เรมิ่ ตน้ เป็ น 0 $discountPrice = 0; การพัฒนาเว็บไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ | 115 $discountTotal = 0; $discountRate = 0; // ตรวจสอบดวู า่ เป็ นหนังสอื ประเภทไหน และสว่ นลด if($booktype == 1) { $discountRate = 30; }elseif($booktype == 2) { $discountRate = 20; }elseif($booktype == 3) { $discountRate = 15; } // end if // คานวณหาสว่ นลด โดยเก็บในตวั แปรชนดิ อารเ์ รย์ $discountBook[] $discountBook['discount'] = $price*$discountRate/100 ; // คานวณราคาขายทลี่ ดราคาแลว้ $discountBook['price'] = $price - $discountBook['discount']; // ฟังกช์ นั่ สง่ คนื คา่ ตัวแปร $discountBook ออกจากฟังกช์ นั return $discountBook; } // end function // เรยี กใชฟ้ ังกช์ นั discountFn() $discountShow = discountFn(100, 2); echo \"หนงั สือเรยี นตา่ งประเทศราคา 100 บาท\"; echo \"จะได้รบั ส่วนลด \". $discountShow['discount'] .\" บาท <br/>\"; echo \"จา่ ยคา่ หนังสือแค่ \". $discountShow['price'] .\" บาท\"; ?> ผลการรันโปรแกรม หนังสอื เรยี นตา่ งประเทศราคา 100 บาท จะได้รบั ส่วนลด 20 บาท จา่ ยคา่ หนังสอื แค่ 80 บาท การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สูง
116 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ 6.11 สรุป ฟังก์ชัน หมายถึง ค้าส่ังกลุ่มท่ีท้างานอย่างใดอย่างหน่ึง สามารถเรียกใช้งานได้หลายคร้ัง ท้าให้การพัฒนาโปรแกรมสะดวกรวดเร็ว และรูปแบบโปรแกรมดูง่ายขึ้น โดยแบ่งออกเป็น 2 กลุ่ม หลกั ดังน้ี 1. ฟังก์ชันมาตรฐานท่ีมาพร้อมกับภาษา PHP ซึ่งทางผู้พัฒนาภาษา PHP สร้าง ขึ้นมาให้โปรแกรมเมอร์สามารถเรียกใช้ฟังก์ชันนั้น ๆ ได้เลย โดยมีหลากหลาย กลุ่มฟังก์ชัน เช่น 1. ฟังก์ช่ันด้านตัวเลขทางคณิตศาสตร์ 2. ฟังก์ชันเก่ียวกับ ตัวอกั ษร 3. ฟังกช์ ันเก่ยี วกับวนั ที่/เวลา 4. ฟงั ก์ชันเกีย่ วกับไฟล์และไดเร็คทอร่ี 5. ฟังก์ชนั เกี่ยวกบั ฐานขอ้ มลู 6. ฟงั กช์ ันเกี่ยวกบั การรบั ส่ง Email 2. ฟังก์ชันที่โปรแกรมเมอร์ออกแบบและสร้างขึ้นมาเอง เพ่ือตอบสนองต่อความ ตอ้ งการตามขั้นตอนวิธีทโ่ี ปรแกรมเมอรต์ อ้ งการ โดยมกี ฎการก้าหนดชือ่ ฟังกช์ ัน ดงั นี้ 1. ชอื่ ฟังกช์ นั ชอ่ื ห้ามซ้ากับฟงั ก์ชนั ท่มี อี ยู่ 2. ชอ่ื ฟงั กช์ ันช่ือห้ามซ้ากบั คา้ สงวน เชน่ if, continue 3. ชื่อฟงั กช์ นั สามารถมไี ด้ 1. ตัวอักษร 2. ตัวเลข 3. Underscore _ 4. ชอ่ื ฟังกช์ นั หา้ มเริม่ ตน้ ดว้ ยตวั เลข การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สูง
บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังก์ชนั่ | 117 คาถามท้ายบท 1. ฟงั ก์ชนั หมายถึงอะไร 2. ใหอ้ ธิบายประโยชนข์ องฟังก์ชัน 3. จากฟังก์ชันทีม่ าพรอ้ มกับภาษา PHP ให้ศึกษาฟังกช์ ั่นดงั น้ี 1. ฟงั กช์ ันเก่ียวกบั ตวั เลข 2. ฟงั ก์ชันเกย่ี วกับข้อความ 3. ฟงั ก์ชนั เกย่ี วกับวนั เวลา ให้หาฟงั ก์ชนั แต่ละกลุม่ ๆ ละ 10 ฟังกช์ นั โดยท้าเปน็ ตารางดังตวั อยา่ งด้านลา่ ง ฟงั กช์ ันเกย่ี วกับตัวเลข ลาดับ ฟงั ก์ชนั คาอธิบาย ผลลัพธ์ 1 $po = pow(2,8) ฟงั กช์ ัน่ หาค่า 28 256 2 4. ให้สรา้ งฟังก์ชนั grade($mid, $fanal) โดยมีการรับอาร์กิวเมนต์ 2 คอื $mid รบั ค่า คะแนนระหว่างภาค และ $fanal รบั คา่ คะแนนปลายภาค ท้าการบวกคะแนนรวม แล้วแสดงคา่ ผลการเรยี น ดงั น้ี ถ้าคะแนนรวม 0-49 ใหแ้ สดงขอ้ ความ “คุณได้เกรด F” ออกทางจอภาพ ถ้าคะแนนรวม 50-59 ให้แสดงข้อความ “คุณไดเ้ กรด D” ออกทางจอภาพ ถา้ คะแนนรวม 60-69 ให้แสดงข้อความ “คณุ ได้เกรด C” ออกทางจอภาพ ถ้าคะแนนรวม 70-79 ใหแ้ สดงข้อความ “คณุ ได้เกรด B” ออกทางจอภาพ ถา้ คะแนนรวม 80-100 ให้แสดงขอ้ ความ“คุณไดเ้ กรด A” ออกทางจอภาพ 5. จากข้อ 4. ใหเ้ ขยี นโปรแกรมตัวอยา่ งการเรยี กใช้ฟังกช์ นั grade() 6. บริษทั ขนส่งแห่งหนึ่งต้องการสร้างฟงั ก์ชนั weightPrice() เพ่อื คา้ นวณคา่ ขนส่งในการ ขนส่งสนิ ค้าตามน้าหนักสินคา้ โดยมีกฎของการช้าระค่าขนส่ง ดงั ต่อไปนี้ สินค้าน้าหนกั นอ้ ยกว่า 10 กโิ ลกรมั คา่ ขนสง่ 79 บาท สินค้านา้ หนัก 10-20 กโิ ลกรัม ค่าขนสง่ 99 บาท สินคา้ นา้ หนัก 21-30 กิโลกรมั คา่ ขนสง่ 119 บาท สนิ ค้าน้าหนักมากกวา่ 31 กโิ ลกรัม ค่าขนส่งกิโลกรมั ละ 5 บาท การพฒั นาเวบ็ ไซตท์ างธุรกิจชนั้ สูง
118 | บทท่ี 6 ฟังกช์ นั่ และใช้งานฟังกช์ นั่ โดยฟังก์ชันรับค่าน้าหนักสินค้า แล้วคืนค่าขนส่งออกจากฟังก์ชัน ให้สร้างฟังก์ชัน คา้ นวณค่าขนสง่ สนิ คา้ ตามน้าหนกั สนิ ค้าตามท่ีก้าหนด ให้สร้างฟังก์ชัน price() ค้านวณราคาขายสินค้า โดยรับค่าอาร์กิวเมนต์ 1. ราคาต่อช้ิน 2. จ้านวนชิ้น ฟังก์ชันท้าการค้านวณราคาขายสินคา้ แล้วคืนค่าราคาขายสนิ ค้าออกจาก ฟังก์ชัน การพฒั นาเว็บไซตท์ างธุรกจิ ชนั้ สูง
บทที่ 7 ระบบจัดการฐานขอ้ มลู MySQL เน่ืองจากข้อมูลมีจานวนมากมายมหาศาล ในการบริหารจัดการข้อมูลจานวนมาก จึงจาเป็นต้องมีซอฟต์แวร์ที่ทาหน้าที่บริหารจัดการข้อมูล ท่ีเรียกว่าระบบจัดการฐานข้อมูล หรือ DBMS ซึ่งในบทน้ีจะพูดถึงซอฟต์แวร์ระบบจัดการฐานข้อมูลมายเอสคิวแอล (MySQL) ซึ่งเป็น โปรแกรมระบบจัดการฐานข้อมูลท่ีมีประสิทธิภาพ เป็นระบบจัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) มีโครงสร้างการจัดเก็บข้อมูลในรูปแบบของตาราง 2 มิติ คือ แบบแถว และแบบคอลัมน์ ท้ังน้ี จะขอกล่าวถึงตั้งแต่การบริหารจัดการผู้ใช้งาน การสรา้ งฐานข้อมูล การสรา้ งตาราง การใช้เพิ่มข้อมูล ลงในตาราง การปรับปรุงข้อมูล การลบข้อมูล และการสืบค้นข้อมูล เพ่ือให้ผู้อ่านสามารถ สร้าง และออกแบบฐานขอ้ มูลได้ 7.1 ระบบจดั การฐานขอ้ มลู MySQL มายเอสควิ แอล (MySQL) เป็นโปรแกรมระบบจดั การฐานขอ้ มลู ท่มี ีประสทิ ธภิ าพ เป็นระบบ จัดการฐานข้อมูลเชิงสัมพันธ์ (RDBMS) มีโครงสร้างการจัดเก็บข้อมูลในรูปแบบของตาราง 2 มิติ คือ แบบแถว และแบบคอลัมน์ มีการเชอ่ื มโยงขอ้ มูลกันระหวา่ งตาราง มายเอสคิวแอลถูกสร้างขึ้นในปี พ.ศ. 2538 โดยชาวสวีเดนคือ Michael Widenius (Monty), David Axmark และชาวฟินแลนด์ Allan Larsson ได้ร่วมกันจัดตั้งในนามบริษัท MySQL AB มายเอสคิวแอล เป็นระบบจัดการฐานข้อมูลที่มีการเก็บข้อมูลอย่างเป็นระบบ รองรับคาส่ัง SQL สามารถใชร้ ่วมกบั ภาษาที่ทางานฝ่ังเซิร์ฟเวอร์ เช่น ภาษา php, asp.net, asp หรือ jsp หรือสามารถ ทางานร่วมกับภาษาท่ีทางานฝั่งไคลเอนต์ได้ เช่น Java, C#, VB.net ได้เป็นอย่างดี โดยมายเอสคิว แอลสามารถทางานได้บนระบบปฏิบัติการท่ีหลากหลาย เช่น Linux, FreeBSD, Mac OS รวมท้ัง Microsoft Windows ปัจจุบันนิยมติดตั้งเป็นฐานข้อมูลสาหรับเว็บแอพลิเคช่ัน โดยเฉพาะเว็บท่ี พฒั นาดว้ ยภาษา PHP ในปี พ.ศ. 2551 บริษัทซันไมโครซิสเต็มส์ ได้เขา้ ซ้อื กจิ การบรษิ ัท MySQL AB ทาใหม้ ายเอสคิว แอลเป็นของสิทธิ์ของบรษิ ัทซันไมโครซิสเต็มส์ ต่อมาในปี พ.ศ. 2553 มายเอสคิวแอลถูกซ้ือโดยบริษัท ออราเคิล ซ่ึงเปน็ บริษทั ทีพ่ ัฒนาระบบจัดการฐานข้อมูลออราเคิลท่ีมชี อ่ื เสียง บริษัทออราเคิลได้พัฒนา MySQL Enterprise Edition เพื่อจาหน่าย โดยมีเครื่องมือสนับสนุนสาหรับบริหารจัดการฐานข้อมูล เพ่ือให้ง่ายต่อการใช้งาน และยังมี MySQL Community Edition ซ่ึงเป็นซอฟต์แวร์เสรี (GPL) สาหรบั ให้ผใู้ ช้งานสามารถดาวนโ์ หลดมาใช้งานได้ฟรี แต่ไม่มีบริการหรือเครอ่ื งมือสนับสนุน ปัจจุบันน้ี ยังคงมีผ้ใู ชฐ้ านข้อมูลมายเอสคิวแอลที่มีชอ่ื เสียง เช่น Facebook, Google, NASA, Netflix, Twitter, Yahoo, YouTube, Wikipedia เป็นต้น การพัฒนาเว็บไซตท์ างธุรกิจชนั้ สงู นริ นั ดร ผานิจ
120 | บทท่ี 7 ระบบจัดการฐานขอ้ มูล MySQL ภาพท่ี 7.1 ตราสัญลักษณ์มายเอสควิ แอล ท่ีมา : https://www.mysql.com/common/logos/logo-mysql-170x115.png ภาพท่ี 7.2 David Axmark และ Michael \"Monty\" Widenius ทีม่ า : http://download.nust.na/pub6/mysql/img/monty_david_uc.jpg 7.2 การเชื่อมตอ่ กับฐานข้อมูล MySQL Server ฐานข้อมูลมายเอสคิวแอล เป็นฐานข้อมูลฝั่งเซริ ์ฟเวอร์ ในการพัฒนาโปรแกรมเพ่ือให้ สามารถเช่ือมต่อกับฐานข้อมูลมายเอสคิวแอลได้นั้น ในการเข้าระบบก่อนใช้งานฐานข้อมูล เพ่ือความปลอดภัยของข้อมูลต้องระบุข้อมูล 1. ผู้ใช้งาน (user) 2. รหัสผ่าน (password) โดยเครื่องคอมพิวเตอร์ทั้งลูกข่ายและแม่ข่ายสามารถติดต่อส่ือสารกันได้ผ่านระบ บแลน (LAN) หรอื อนิ เทอร์เน็ต (Internet) โดยเครือ่ ง MySQL Database Server ปกติจะใชพ้ อร์ต 3306 ในตาราเล่มน้ีจะอธิบายการเชื่อมต่อกับฐานข้อมูล MySQL Server ที่ติดตั้งมากับ โปรแกรม Xampp เพ่ือให้สามารถใช้งานฐานข้อมูลมายเอสคิวแอลได้นั้น จะต้องทาการ Start MySQL Server ผ่าน Xampp Control Panel ก่อนดงั ภาพท่ี 7.3 การพฒั นาเวบ็ ไซต์ทางธุรกิจชนั้ สงู
บทท่ี 7 ระบบจัดการฐานขอ้ มูล MySQL | 121 ภาพที่ 7.3 การ Start MySQL ท่มี า : ผู้เขยี น 1. การเช่อื มต่อมายเอสคิวแอลเซริ ์ฟเวอร์ ด้วยคาส่งั mysql -u ช่อื ผูใ้ ช้งาน –p รหสั ผ่าน เชน่ mysql -u root –p ภาพท่ี 7.4 การเชอื่ มตอ่ มายเอสควิ แอลเซริ ์ฟเวอร์ ทมี่ า : ผู้เขยี น 2. แสดงขอ้ มลู การเช่อื มต่อ เม่ือทาการเชื่อมตอ่ ฐานขอ้ มูล MySQL จะปรากฏข้อความ ต้อนรบั การเช่ือมต่อสาเรจ็ ภาพท่ี 7.5 แสดงผลการเช่อื มต่อสาเร็จ ท่มี า : ผู้เขยี น ถ้าหากเช่ือมต่อสาเร็จจะแสดงข้อความแนะนาการใช้งานเบอื้ งตน้ การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
122 | บทท่ี 7 ระบบจดั การฐานข้อมูล MySQL Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer. โดยสามารถพิมพ์ help; หรอื \\h สาหรับขอความชว่ ยเหลอื ในการใช้งาน พมิ พ์ \\c สาหรบั เคลยี รห์ นา้ จอ ภาพที่ 7.6 คาส่ัง exit สาหรับออกจากฐานขอ้ มูล ที่มา : ผู้เขยี น 3. เมื่อต้องการยกเลิกการเช่อื มต่อใหพ้ ิมพ์คาว่า exit เพื่อออกจากการเชอ่ื มตอ่ mysql> exit Bye 7.3 การสร้างบัญชีผใู้ ช้ฐานขอ้ มูล MySQL ในการสรา้ งบัญชผี ้ใู ชฐ้ านข้อมูล MySQL หรอื user ใช้คาสงั่ CREATE USER ซึ่งมรี บู แบบ ของคาสง่ั ดงั นี้ รปู แบบของคาส่งั CREATE USER 'userName'@'localhost' IDENTIFIED BY 'password' [PASSWORD EXPIRE INTERVAL day DAY]; userName หมายถึง ชอ่ื ของผใู้ ช้งานฐานขอ้ มลู password หมายถึง รหัสผา่ นของ userName นัน้ ๆ PASSWORD EXPIRE INTERVAL day DAY สาหรบั กาหนดวันหมดอายุของ รหัสผ่าน day วัน การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
บทท่ี 7 ระบบจัดการฐานข้อมูล MySQL | 123 ตวั อย่าง 7.1 การสรา้ งบัญชีผใู้ ช้ CREATE USER 'nirun'@'localhost' IDENTIFIED BY '12345'; ภาพที่ 7.7 การสรา้ ง user ใหมช่ อื่ nirun ทีม่ า : ผู้เขยี น เปน็ การสร้างบัญชผี ใู้ ช้ใหมช่ ่อื nirun และกาหนดรหสั ผ่านคือ '12345' ในการสรา้ ง บัญชผี ู้ใชส้ ามารถสรา้ งได้พร้อมกนั หลาย ๆ บญั ชีผูใ้ ช้ดว้ ยคาสง่ั เพียงคาส่งั เดียวดงั ตวั อย่าง ด้านล่าง ตวั อย่าง 7.2 การสร้างบัญชีผู้ใชพ้ ร้อมกนั หลาย ๆ user CREATE USER 'user1'@'localhost' IDENTIFIED BY 'passwordUser1', 'user2'@'localhost' IDENTIFIED BY 'passwordUser2', 'user3'@'localhost' IDENTIFIED BY 'passwordUser3'; 7.4 การลบบญั ชผี ู้ใช้ MySQL ในฐานขอ้ มูล MySQL สามารถลบบัญชีผู้ใชโ้ ดยใชค้ าสัง่ DROP USER รปู แบบ DROP USER userName; userName บญั ชผี ู้ใชท้ ต่ี อ้ งการลบ ตวั อย่าง 7.3 การลบบญั ชีผ้ใู ช้ MySQL การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
124 | บทท่ี 7 ระบบจดั การฐานขอ้ มูล MySQL DROP USER 'nirun'@'localhost'; ภาพที่ 7.8 ลบบัญชผี ใู้ ช้ nirun ออกจากฐานข้อมูล ทมี่ า : ผู้เขยี น เปน็ การลบบัญชีผ้ใู ชช้ ือ่ nirun ออกจากฐานข้อมูล การลบบญั ชีผู้ใชส้ ามารถลบไดม้ ากกว่า 1 บัญชีผใู้ ช้ ดว้ ยคาส่ังเพยี งคาส่งั เดยี ว ดงั ตวั อย่าง ด้านล่าง ตัวอยา่ ง 7.4 การลบบญั ชผี ใู้ ชม้ ากกวา่ 1 บัญชผี ใู้ ช้ DROP USER 'user1'@'localhost', 'user2'@'localhost'; จากตัวอยา่ งเป็นการลบบญั ชีผูใ้ ช้ user1 และ user2 พรอ้ มกัน 7.5 การกาหนดสทิ ธิให้แกบ่ ัญชีผใู้ ช้ ฐานข้อมูล MySQL สามารถกาหนดสิทธิในการเข้าถึงข้อมูลในฐานข้อมูล ทาให้ข้อมูล มีความปลอดภัย (security) และเป็นการป้องกันผู้ใช้ที่ไม่มีสิทธิในการเรียกใช้ข้อมูลนาข้อมูล จากฐานข้อมูลมาใช้ อันอาจจะเกิดผลเสียกับระบบฐานข้อมูลได้ การกาหนดสิทธิในการเข้าถึง ข้อมูลเป็นหน้าท่ีของผู้ดูแลระบบฐานข้อมูล (Database Administrator) ในการกาหนดให้สิทธิ หรือบัญชีผู้ใช้ที่ได้รับมอบสิทธิ (Authorization) คาส่ังที่เก่ียวกับสิทธิในการใช้ข้อมูลมี 2 คาส่ัง หลัก ๆ ได้แก่ 1. คาสัง่ GRANT กาหนดสิทธผิ ใู้ ช้งานระบบฐานข้อมูล 2. คาสงั่ REVOKE ยกเลิกสทิ ธิผู้ใช้ฐานข้อมูล โดยผู้ใช้งานสามารถแสดงข้อมลู สิทธผิ ู้ใชฐ้ านข้อมูลด้วยคาสั่ง SHOW GRANTS การกาหนด สิทธิ สามารถกาหนดใหก้ ับระดบั ตา่ ง ๆ ได้ดังต่อไปน้ี 1. Global Privileges เป็นสทิ ธทิ ี่ผู้ใช้ฐานขอ้ มลู สามารถใชไ้ ด้กับทุก ๆ ฐานข้อมลู การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 7 ระบบจดั การฐานข้อมูล MySQL | 125 2. Database Privileges เป็นสทิ ธิทผี่ ู้ใช้ฐานข้อมูลสามารถใช้ได้กับฐานข้อมูลที่ระบุ เทา่ นน้ั 3. Table Privileges เปน็ สทิ ธิทผี่ ใู้ ชฐ้ านขอ้ มูลสามารถใชไ้ ด้กับตารางที่ระบเุ ท่านั้น 4. Column Privileges เป็นสิทธิที่ผู้ใช้ฐานข้อมูลสามารถใช้ได้กับคอลัมน์ท่ีระบุ เทา่ นนั้ 5. PROCEDURE และ FUNCTION เป็นสิทธิที่ผู้ใช้ฐานข้อมูลสามารถใช้ได้กับ ฟงั ก์ชันหรือโพชิเยอร์ ตัวอย่างการกาหนดสิทธิให้กับตาราง โดยมีสิทธิต่าง ๆ ดังต่อไปนี้ SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION ห รื อ ALL โดยสทิ ธิเหล่านีส้ ามารถกาหนดรวมกันได้ รูปแบบ GRANT privileges ON object TO user; privileges หมายถงึ สิทธิต่างๆ ทผี่ ูด้ แู ลระบบกาหนดให้กบั user object หมายถงึ สง่ิ ทเ่ี ราตอ้ งการกาหนดสิทธใิ ห้ เชน่ ฐานขอ้ มลู ตาราง (db_name.tbl_name) user หมายถึง บัญชผี ้ใู ช้งาน ตาราง 7.1 สทิ ธทิ ่ผี ู้ใชฐ้ านขอ้ มลู (Privileges) สิทธิ ความหมาย SELECT สามารถดาเนนิ การคาส่งั SELECT ได้ INSERT สามารถดาเนินการเพิ่มข้อมูลได้ UPDATE สามารถดาเนินการปรบั ปรุงได้ DELETE สามารถดาเนนิ การคาสั่งลบข้อมูลได้ INDEX สามารถสร้างดัชนี (INDEX) บนตารางทมี่ ีอยูไ่ ด้ CREATE สามารถสรา้ งตารางได้ ALTER สามารถปรบั ปรุงโครงสรา้ งของตารางได้ DROP สามารถลบตารางได้ GRANT OPTION สามารถกาหนดสิทธิท่ีตนเองมอี ยู่ให้กบั ผ้อู ืน่ ได้ ALL ให้ดาเนนิ การสทิ ธทิ์ งั้ หมดได้ยกเว้น GRANT OPTION การพฒั นาเวบ็ ไซต์ทางธุรกจิ ชนั้ สูง
126 | บทท่ี 7 ระบบจัดการฐานขอ้ มูล MySQL ตวั อย่าง 7.5 การกาหนดสิทธใิ ห้กับผใู้ ช้ การกาหนดสิทธใิ ห้กบั ผ้ใู ช้ nirun ใหส้ ามารถ SELECT, INSERT, UPDATE และ DELETE ตาราง product ดว้ ยคาสัง่ GRANT ดงั นี้ GRANT SELECT, INSERT, UPDATE, DELETE ON otop.product TO 'nirun'@'localhost'; หมายเหตุ : otop.product หมายถงึ ตาราง product ในฐานขอ้ มลู otop ตวั อยา่ ง 7.6 การกาหนดสิทธิใหก้ ับผใู้ ช้ใหก้ บั ทุก ๆ ตาราง การกาหนดสทิ ธิให้กบั ผู้ใช้ nirun ให้สามารถ SELECT, INSERT, UPDATE และ DELETE ทุก ๆ ตาราง ในฐานข้อมูล otop ด้วยคาสั่ง GRANT ดังนี้ GRANT SELECT, INSERT, UPDATE, DELETE ON otop.* TO 'nirun'@'localhost'; หมายเหตุ : otop.* หมายถงึ ทุก ๆ ตารางในฐานขอ้ มูล otop ตัวอยา่ ง 7.7 การกาหนดสิทธิทุกสทิ ธิ ใหก้ บั ผใู้ ชบ้ นตาราง product การกาหนดสิทธิ ALL ใหก้ ับผใู้ ช้ nirun บนตาราง product ในฐานข้อมูล otop GRANT ALL ON otop.product TO 'nirun'@'localhost'; ตวั อยา่ ง 7.8 การกาหนดสิทธิ SELECT บนตาราง product ใหก้ ับผูใ้ ช้ทกุ คน GRANT SELECT ON otop.product TO '*'@'localhost'; 7.6 การยกเลิกสิทธใิ นตาราง การยกเลิกสิทธิด้วยคาส่ัง REVOKE สิทธิต่าง ๆ มีดังต่อไปนี้ SELECT, INSERT, UPDATE, DELETE, INDEX, CREATE, ALTER, DROP, GRANT OPTION ห รือ ALL สิทธิเห ล่านี้สามารถ กาหนดรวมกันได้ การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 7 ระบบจัดการฐานขอ้ มูล MySQL | 127 รปู แบบ REVOKE privileges ON object FROM user; privileges หมายถึง สทิ ธิต่าง ๆ object หมายถึง ส่ิงที่เราตอ้ งการยกเลกิ สิทธิ เช่น ตาราง user หมายถึง บัญชผี ู้ใชง้ าน ตัวอย่าง 7.9 การยกเลกิ สทิ ธิ UPDATE และ DELETE ตาราง product ของผู้ใช้ nirun ดว้ ยคาสง่ั REVOKE REVOKE UPDATE, DELETE ON otop.product FROM 'nirun'@'localhost'; ตัวอยา่ ง 7.10 การยกเลิกสทิ ธิ ALL ตาราง product ของผู้ใช้ nirun REVOK ALL ON otop.product FROM 'nirun'@'localhost'; ตวั อยา่ ง 7.11 การยกเลิกสทิ ธิ DELETE ตาราง product ใหก้ ับผ้ใู ช้ทุกคน REVOK DELETE ON otop.product FROM '*'@'localhost'; 7.7 การสร้างฐานข้อมูล การสรา้ งฐานขอ้ มูลสามารถใช้คาสงั่ CREATE DATABASE ในการสรา้ งโดยมีรูปแบบ การสรา้ ง ดังต่อไปน้ี รปู แบบท่ี 1. CREATE DATABASE database_name; database_name หมายถงึ ช่อื ฐานข้อมูล การพัฒนาเว็บไซตท์ างธุรกิจชนั้ สูง
128 | บทท่ี 7 ระบบจัดการฐานข้อมูล MySQL ตัวอยา่ ง 7.12 การสรา้ งฐานขอ้ มลู ชอื่ otop CREATE DATABASE otop; ตัวอย่าง 7.13 การสรา้ งฐานข้อมลู ชือ่ buengkan CREATE DATABASE buengkan; ภาพท่ี 7.9 การสร้างฐานข้อมูลชือ่ buengkan ที่มา : ผู้เขยี น รปู แบบที่ 2. กาหนดรปู แบบการเข้ารหสั ชดุ อักขระดว้ ย CREATE DATABASE database_name CHARACTER SET charset_name COLLATE collation_name; database_name หมายถึง ชือ่ ฐานขอ้ มูล charset_name หมายถงึ รหสั ของชุดตัวอักษร collation_name หมายถึง รหัสตัวอักษร ตวั อยา่ ง 7.14 การสรา้ งฐานข้อมูลชือ่ otop โดยกาหนดรหัสของชดุ ตวั อักษรเป็น UTF8 CREATE DATABASE otop CHARACTER SET utf8 COLLATE utf8_general_ci; หมายเหตุ : สามารถแสดงรายช่อื ฐานขอ้ มูลไดด้ ว้ ยคาสัง่ SHOW DATABASES; การพัฒนาเวบ็ ไซต์ทางธุรกจิ ชนั้ สงู
บทท่ี 7 ระบบจัดการฐานข้อมูล MySQL | 129 7.8 การลบฐานข้อมูล การลบฐานข้อมูลสามารถใช้คาสั่ง DROP DATABASE ในการลบฐานข้อมูลได้จะเป็นการลบ ตารางและข้อมูลทั้งหมดภายในฐานข้อมูล ผู้ใช้งานควรระมัดระวังในการลบฐานข้อมูล ซึ่งการลบ ฐานขอ้ มูลมีรูปแบบ ดังต่อไปนี้ รูปแบบ DROP DATABASE database_name; database_name หมายถงึ ชอ่ื ฐานข้อมูล ตวั อยา่ ง 7.15 การลบฐานข้อมูลชอ่ื otop DROP DATABASE otop; ตวั อยา่ ง 7.16 การลบฐานข้อมูล buengkan DROP DATABASE buengkan; ภาพที่ 7.10 การลบฐานข้อมูล buengkan ทีม่ า : ผู้เขยี น 7.9 ชนดิ ของข้อมูลในฐานข้อมลู Mysql ชนิดของข้อมูลในฐานข้อมูล Mysql ใช้สาหรับกาหนดประเภทหรือรูปแบบข้อมูลของฟิวด์ต่าง ๆ ของแต่ละตาราง โดยการกาหนดรูปแบบของฟวิ ดจ์ ะตอ้ งระบทุ ั้งชนิดของข้อมูลและขนาดของข้อมูล ชนิดของขอ้ มูลมีหลายรปู แบบ เชน่ 1. ขอ้ มูลประเภทข้อความ (String) การพฒั นาเวบ็ ไซตท์ างธุรกิจชนั้ สูง
130 | บทท่ี 7 ระบบจดั การฐานข้อมูล MySQL 2. ข้อมลู ประเภทตวั เลข (Numeric) 3. ข้อมลู ประเภทวนั ที่ (Date/time) 7.9.1 ขอ้ มลู ประเภทขอ้ ความ (String) เปน็ ข้อมูลสาหรบั เก็บข้อความหรือตวั อกั ษร ตาราง 7.2 ข้อมลู ประเภทข้อความ ชนิดข้อมูล ขนาดสูงสดุ คาอธิบาย โดย size หมายถงึ ขนาดตวั อักษรท่ี CHAR(size) 255 ตวั อกั ษร สามารถเกบ็ ได้โดยจะกาหนดขนาดของ ฟิวดเ์ ทา่ กบั ขนาดของ size VARCHAR(size) 255 ตวั อักษร โดย size หมายถึง ขนาดตวั อักษรท่ี สามารถเก็บไดโ้ ดยขนาดของฟวิ ดจ์ ะ TINYTEXT(size) 255 ตัวอกั ษร เท่ากบั ขนาดของข้อมลู โดย size หมายถึง ขนาดตวั อักษรท่ี TEXT(size) 65,535 ตวั อักษร สามารถเก็บได้ โดย size หมายถงึ ขนาดตวั อักษรท่ี MEDIUMTEXT(size) 16,777,215 สามารถเกบ็ ได้ LONGTEXT(size) ตวั อักษร โดย size หมายถงึ ขนาดตัวอักษรที่ สามารถเก็บได้ 4GB หรอื 4,294,967,295 โดย size หมายถงึ ขนาดตวั อักษรท่ี ตัวอกั ษร สามารถเก็บได้ BINARY(size) 255 ตัวอกั ษร โดย size หมายถึง ขนาด binary characters ที่สามารถเก็บได้โดยขนาด VARBINARY(size) 255 ตวั อักษร ของฟวิ ด์จะเทา่ กับขนาดของข้อมูล (ตง้ั แต่ MySQL 4.1.2) โดย size หมายถงึ ขนาด binary characters ท่ีสามารถเก็บได้โดยขนาด ของฟวิ ดจ์ ะเท่ากับขนาดของข้อมลู (ต้ังแต่ MySQL 4.1.2) การพัฒนาเวบ็ ไซตท์ างธุรกจิ ชนั้ สูง
บทท่ี 7 ระบบจดั การฐานขอ้ มูล MySQL | 131 7.9.2 ขอ้ มลู ประเภทตัวเลข (Numeric) ข้อมูลประเภทตัวเลขมีทัง้ เลขจานวนเตม็ และเลขจานวนจริง ซ่ึงผู้ออกแบบฐานข้อมูล ต้องพิจารณาว่ารูปแบบไหนเหมาะสมในการกาหนดชนิดข้อมูลให้กับฟิลด์ เช่น ฟิวด์เก็บ ข้อมูลอายุคน ควรกาหนดเป็น TINYINT แบบ Unsigned ที่สามารถเก็บข้อมูลอายุคนได้ ตั้งแต่ 0 ถึง 255 เพราะใช้พื้นท่ีขนาดท่ีเก็บ 1 ไบต์ ทั้งท่ี SMALLINT สามารถกาหนดได้แต่ ต้องใชพ้ ืน้ ที่ขนาดทเ่ี ก็บ 2 ไบต์ ตาราง 7.3 ขอ้ มลู ประเภทตัวเลข ชนิดข้อมลู ขนาดทีเ่ กบ็ คาอธิบาย BIT(size) size บิต เก็บข้อมลู บติ เชน่ bit(8) หมายถึง สามารถเก็บได้ 8 บติ '10100011' TINYINT(size) 1 ไบต์ เลขจานวนเตม็ ค่าที่เปน็ ไปได้มีดังน้ี SMALLINT(size) 2 ไบต์ 1. Signed ค่า -128 ถึง 127 MEDIUMINT(size) 3 ไบต์ 2. Unsigned คา่ 0 ถึง 255 INT(size) หรือ 4 ไบต์ เลขจานวนเต็ม ค่าท่เี ป็นไปได้มีดังนี้ INTEGER(size) 1. Signed ค่า -32768 ถึง 32767 BIGINT(size) 8 ไบต์ 2. Unsigned คา่ 0 ถงึ 65535 หลักการ เลขจานวนเต็ม คา่ ที่เปน็ ไปได้มีดังนี้ DECIMAL(m,d) คานวณ 1. Signed ค่า -8388608 ถงึ 8388607 FLOAT(m,d) ดา้ นลา่ ง 2. Unsigned คา่ 0 ถึง 16777215. 4 ไบต์ เลขจานวนเต็ม คา่ ทเ่ี ป็นไปได้มีดังนี้ 1. Signed ค่า -2147483648 ถงึ 2147483647 2. Unsigned ค่า 0 ถงึ 4294967295 เลขจานวนเต็ม ค่าทเ่ี ป็นไปได้มีดงั น้ี 1. Signed ค่า -9223372036854775808 ถงึ 9223372036854775807 2. Unsigned คา่ 0 ถงึ 18446744073709551615 เลขทศนิยม โดยมีค่า m จานวนตัวเลขท้งั หมด อยรู่ ะหวา่ ง 1 ถงึ 65 d จานวนตวั เลขหลงั ทศนยิ ม อยู่ระหวา่ ง 0 ถึง 30 เช่น กาหนดให้สามารถเก็บค่าสูงสุด คือ 99999.99 กก็ าหนด DECIMAL(8,2) Single precision floating point number. การพัฒนาเว็บไซต์ทางธุรกิจชนั้ สูง
132 | บทท่ี 7 ระบบจัดการฐานข้อมูล MySQL ชนดิ ขอ้ มูล ขนาดที่เก็บ คาอธิบาย DOUBLE(m,d) BOOL 8 ไบต์ Double precision floating point number. BOOLEAN 1 ไบต์ ค่าทางตรรกะ ค่าท่เี ป็นไปได้มีดงั นี้ 0 ถ้าเปน็ เท็จ 1 ถา้ เป็นจริง 1 ไบต์ คา่ ทางตรรกะ ค่าที่เป็นไปได้มีดงั นี้ 0 ถา้ เปน็ เท็จ 1 ถา้ เป็นจริง การคานวณจานวนไบต์ มีตารางเป็นการกาหนดจานวนไบตส์ าหรับเกบ็ ข้อมูล ตัวอย่างเช่น DECIMAL(20,6) จะมเี ลข หนา้ จุดทศนิยม 14 หลกั และหลงั จุดทศนยิ ม 6 หลกั XXXXXXXXX XXXXX . XXXXXX รวมเปน็ 10 ไบต์ 4 ไบต์ 3 ไบต์ 3 ไบต์ Leftover Digits จานวนไบต์ 00 1–2 1 3–4 2 5–6 3 7–9 4 การพัฒนาเวบ็ ไซต์ทางธุรกิจชนั้ สงู
Search
Read the Text Version
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234