Important Announcement
PubHTML5 Scheduled Server Maintenance on (GMT) Sunday, June 26th, 2:00 am - 8:00 am.
PubHTML5 site will be inoperative during the times indicated!

Home Explore ปิยะวดี พงษ์สวัสดิ์

ปิยะวดี พงษ์สวัสดิ์

Published by วิทย บริการ, 2022-07-05 03:22:19

Description: ปิยะวดี พงษ์สวัสดิ์

Search

Read the Text Version

อารเ รยห นง่ึ มิติ อารเรยหนึ่งมติ ิ จะมองลักษณะการเก็บขอมูลเปน 1 แถวในตารางซ่ึงมีคอลัมนเทากับจํานวน ขอมลู $age[0] $age[1] $age[2] $age[3] $age 12 25 35 42 มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ตวั แปรอารเ รยช อื่ age ใชเก็บขอมูลชนิดตวั เลข 4 จํานวน การสรางอารเรยหนง่ึ มิติ อารเรยหนึ่งมิติเปนการสรางชุดขอมูลที่ไมซับซอน สามารถสรางโดยกําหนดคาใหกับสมาชิก แตล ะตวั ของอารเ รยโดยตรง และสามารถเรยี กใชคา ของอารเ รยไ ด โดยมวี ธิ ีการกาํ หนดตัวแปรอารเรย และเรียกใชคา ของอารเรย ดงั น้ี รปู แบบการประกาศตวั แปรอารเ รย $ช่ืออารเ รย = array(\"คา ของตวั แปรลําดบั ท่ี 0\",\"คาของตัวแปรลาํ ดบั ท่ี 1\", … , \"คาของตวั แปรลาํ ดบั ที่ n\"); หรือ $ชอ่ื อารเรย = array(\"key0\" => \"value0\",\"key1\" => \"value1\", … , \"keyN\" => \"valueN\"); key คือ ลาํ ดับของอนิ เด็กซ value คอื คาของตวั แปร รูปแบบการเรียกใชต ัวแปรอารเ รย $ช่ืออารเรย[อนิ เด็กซ]; ในการเขาถงึ ขอ มลู แตละตัวเราจะระบุอินเดก็ ซท เ่ี ปนตําแหนง ของขอ มูลในอารเรย โดยจะเริ่ม ที่ 0 ไปจนถึง n ตัวอยางที่ 5.1 การสรางและเรียกใชอารเ รยห นง่ึ มิติ <?php $book = array(\"PHP\",\"JAVA\",\"HTML\"); การประกาศตวั แปรอารเรย echo $book[0]. \"<br>\"; echo $book[1]. \"<br>\"; การเรียกใชต วั แปรอารเ รย echo $book[2]. \"<br>\"; ?> 79

ผลการทาํ งาน ดงั นี้ มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงภาพประกอบที่ 5.1 ผลการทํางานของการสรางและเรียกใชอ ารเ รยห นงึ่ มติ ิ ทีม่ า: (ภาพโดยผูเขียน, 2564) อารเ รยห ลายมติ ิ อารเรยหลายมิติ คือ ตัวแปรอารเรยที่เก็บขอมูลไดมากกวาหน่ึงช้ัน ถาเปนอารเรยท่ีเก็บ ขอมูลได 2 ช้ัน จะเรียกวาตัวแปรอารเรย 2 มิติ ซ่ึงสามารถเปรียบเทียบไดกับตารางท่ีมีความกวาง และความยาว $age $age[0][0] $age[1][0] $age[2][0] $age[3][0]] $age[0][0] 10 25 123 77 $age[0][1] 88 4 42 0 $age[0][2] 44 55 56 2 ตัวแปรอารเ รยช ือ่ age มขี นาด 4X3 ใชเ ก็บขอมูลชนดิ ตวั เลขจาํ นวนเตม็ 12 จาํ นวน ถาเปนตวั แปรอารเ รย 3 มติ ิ คือ ตัวแปรอารเ รยท เี่ ก็บขอมูลได 3 ชั้น สามารถเปรยี บเทียบได กบั รูปทรงลกู บาศกท่ีมคี วามกวา ง ยาว และลึก ตัวอยา งที่ 5.2 การสรางและเรียกใชอ ารเรยหลายมิติ <?php $age[0][0] = 10; $age[1][0] = 25; $age[2][0] = 123; $age[3][0] = 77; $age[0][1] = 88; $age[1][1] = 4; $age[2][1] = 42; $age[3][1] = 0; การประกาศตัวแปรอารเ รย $age[0][2] = 44; $age[1][2] = 55; $age[2][2] = 56; $age[3][2] = 2; echo \"อารเ รย book[0][0] = \". $book[0]. \"<br>\"; // 10 echo \"อารเ รย book[0][2] = \". $book[0]. \"<br>\"; // 44 การเรยี กใชตวั แปรอารเ รย echo \"อารเ รย book[3][2] = \". $book[0]. \"<br>\"; // 2 ?> 80

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการสรา งอารเรยหลายมิติ ในการสรางแบบหลายมิติจะตองกําหนดรูปแบบของ key ใหสอดคลองกัน เชน อารเรยแบบ 2 มิติ ตอ งกาํ หนด key ของแตล ะแถว และแตล ะคอลมั นใหสอดคลอ งกัน รูปแบบการประกาศตัวแปรอารเรยสองมติ ิ $ช่ืออารเรย = array ( \"key ของมติ ิที่ 1 ลาํ ดับท่ี [0]\" => array ( \"key ของมติ ทิ ี่ 2 ลําดบั ที่ [0][0]\" => \"value[0][0]\", \"key ของมิตทิ ่ี 2 ลําดับท่ี [0][1]\" => \"value[0][1]\", \"key ของมิติท่ี 2 ลําดับท่ี [0][2]\" => \"value[0][2]\", ), \"key ของมิติท่ี 1 ลาํ ดับท่ี [1]\" => array ( \"key ของมิตทิ ่ี 2 ลําดบั ที่ [1][0]\" => \"value[1][0]\", \"key ของมิตทิ ี่ 2 ลาํ ดบั ท่ี [1][1]\" => \"value[1][1]\", \"key ของมิตทิ ี่ 2 ลําดับที่ [1][2]\" => \"value[1][2]\", ), \"key ของมติ ิที่ 1 ลาํ ดบั ที่ [2]\" => array ( \"key ของมิตทิ ี่ 2 ลําดบั ท่ี [2][0]\" => \"value[1][0]\", \"key ของมติ ทิ ่ี 2 ลาํ ดบั ท่ี [2][1]\" => \"value[1][1]\", \"key ของมิติท่ี 2 ลําดบั ที่ [2][2]\" => \"value[1][2]\", ) ); รปู แบบการเรยี กใชอารเ รยส องมติ ิ $ชื่ออารเรย[\"keyมิตทิ ่ี 1\"][\"keyมติ ทิ ี่ 2\"]; 81

ตัวอยางท่ี 5.3 การสรา งและเรยี กใชอ ารเรยห ลายมิติ การประกาศตัวแปรอารเ รย <?php $a = array ( \"apple\" => array(\"color\" => \"แดง\", \"taste\" => \"หวานกรอบ\", \"shape\" => \"กลม\", ) , มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง \"orange\" => array(\"color\" => \"สม\", \"taste\" => \"เปรี้ยว\", \"shape\" => \"กลม\", ) , \"banana\" => array(\"color\" => \"เหลือง\", \"taste\" => \"หวาน\", \"shape\" => \"เรียวยาว\", ) ); echo \"แอปเปล มรี สชาติ : \". $a[\"apple\"][\"taste\"] . \"<br>\"; echo \"สม มรี ปู ทรง : \". $a[\"orange\"][\"shape\"] . \"<br>\"; การเรียกใชต ัวแปรอารเรย echo \"กลวยหอม มีสี : \". $a[\"banana\"][\"color\"] . \"<br>\"; ?> ผลการทํางาน ดงั น้ี ภาพประกอบท่ี 5.2 ผลการทํางานของการสรางและเรียกใชอ ารเรยหลายมติ ิ ทมี่ า: (ภาพโดยผูเขียน, 2564) Assoicative Array การใชงานอารเรยท่ีผานมาเราจะเขาถึงขอมูลแตละตัวในอารเรยโดยอางอิงอินเด็กซที่เปน ตัวเลข (ตั้งแต 0 ไปเร่ือยๆ) แตมีอารเรยอีกประเภทท่ีไมตองใชอินเด็กซเปนตัวเลข แตจะใชเปน ขอ ความแทน เราเรยี กอารเ รยแบบน้วี า Assoicative Array 82

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง Key Value $a[\"BookName\"] = \"PHP\"; $a[\"Price\"] = 395; Key Value ในการอางองิ ขอ มูลใน Assoicative Array เราจะใช Key แทนอินเด็กซ โดยเรียกคาท่ีเก็บอยู วา Value โดยคาของขอ มลู ใน Value ไมจําเปนตอ งเปน ชนิดเดยี วกันเหมอื นอารเ รยท ัว่ ไปกไ็ ด ตัวอยา งที่ 5.4 การใชงาน Assoicative Array <?php $a[\"name\"] = \"มานะ ใจดี\" ; $a[\"age\"] = 37 ; $a[\"gender\"] = \"male\" ; echo \"ชือ่ : \". $a[\"name\"] . \"<br>\"; echo \"ขณะนี้อายุ : \". $a[\"age\"] . \" ป \"; echo \"เพศ : \". $a[\"gender\"] . \"<br>\"; ?> ผลการทํางาน ดังนี้ ภาพประกอบท่ี 5.3 ผลการทํางานของการใชง าน Assoicative Array ท่ีมา: (ภาพโดยผูเ ขยี น, 2564) 83

ฟง กชนั ทใ่ี ชในการจดั การอารเรย ตารางที่ 5.1 ฟง กช นั เก่ียวกบั การสรางอารเรย ฟง กชัน ตัวอยาง หนาท่ี array() $arr = array(); ใชส รา งตัวแปรแบบ array $arr[ ] = \"labcode\"; แบบยงั ไมมกี ารกาํ หนดขอมลู มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง range(คาเริ่มตน $a = range(1,5); // ไดผ ลลพั ธเหมือน ใชในกรณีที่เราตอ งการสราง ,คาสดุ ทา ย[, step]) $a => array(1,2,3,4,5) อารเ รยทสี่ มาชกิ มคี า เปน $a = range('a','c'); // ไดผลลัพธ ลาํ ดบั ตอ เนื่อง เชน เปน เหมอื น $a => array(\"a\",\"b\",\"c\") ตวั เลขจาก 1-10 หรอื A-Z $a = range(10,40,10); // ไดผลลพั ธ เปน ตน สําหรับคา step ใชใ น เหมือน $a => array(10,20,30,40) การเพิ่มหรือลดคาลงไปทีละ $a = range(99,66,10); // ไดผลลพั ธ เทา ไหร หากไมกาํ หนดจะมคี า เหมือน $a => array(99,89,79,69) เทากบั 1 ตารางที่ 5.2 ฟงกช นั ในการเพ่ิมสมาชิกลงในอารเ รย ฟง กชนั ตัวอยา ง หนาที่ เพิ่มสมาชิกลงในอารเรย โดย array_push $a = array (\"one\",\"two\"); ขอ มลู ท่ีเพ่มิ ลงไปจะมกี ีจ่ ํานวน ก็ได หรือจะนาํ มาจากอารเ รย (อารเรยเ ปาหมาย, array_push($a, \"three\",\"four\"); อืน่ ก็ได ขอมลู ท่ีตอ งการ // ไดผลลัพธเหมอื น $a = array (\" เพิม่ สมาชกิ ใหมเ พอื่ ใหอารเ รย มีจาํ นวนสมาชิกตามจํานวนท่ี เพ่ิม) one\",\"two\",\"three\",\"four\") ตองการ array_pad(อารเ รย $a = array (1,2,3); เปา หมาย, จาํ นวน array_pad($a1, 5,0); สมาชิกทต่ี องการ, // ไดผลลพั ธเหมือน $a = array ขอ มลู ทีจ่ ะเพ่ิมเขา (1,2,3,0,0) ไป) 84

ตารางท่ี 5.3 ฟงกช ันในการตรวจสอบขอ มลู ในอารเรย ฟง กช ัน ตัวอยาง หนา ท่ี int_array(ขอมลู ที่ $city = array (\"New York\", ใชต รวจสอบวามคี าท่รี ะบอุ ยู ตอ งการคนหา, \"Tokyo\"); ในอารเรยห รือไม ถามจี ะคนื อารเ รยเ ปา หมาย) if (in_array(\"Tokyo\",$city)) คา true ไมมีคนื คา false มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง echo \"พบ Tokyo\"; // ถูกพิมพเ พราะ ลักษณะการพมิ พตองตรงกัน พบคําวา Tokyo array_search $a1 = array (1,2,3); ใชในการคนหาวามีสมาชิกท่ี (ขอมูลท่ีตองการ array_ search (2, $a1); // ได ระบอุ ยใู นอารเรยหรือไม ถา คนหา,อารเ รย ผลลพั ธ 1 มีจะคนื คา เปน เลขลาํ ดับของ เปา หมาย) $a2 = array (\"th\" => \"Thailand\", สมาชิกนนั้ ถา ไมม ีจะคืนคา \"jp\" => \"Japan\"); false กรณเี ปนอารเ รยแบบ array_ search (\"Japan\", $a2); // Key/Value จะคนื คา Key ไดผลลพั ธ jp ของคาทรี่ ะบุกลบั มา ลักษณะการพิมพตองตรงกัน array_key_exists $a = array(\"name\" => \"John\", ตรวจสอบวา ภายในอารเ รย (คียท่ีตองการคน หา, \"age\" => 37); นั้นมคี ียทีร่ ะบุหรือไม จะคืน อารเรยเ ปา หมาย) $s = array_key_exists (\"name\", คา กลับมาในรูปแบบ $a); // ไดผลลัพธ true true/false ซง่ึ คาคยี น น้ั $s = array_key_exists (\"Name\", ลักษณะการพมิ พต องตรงกนั $a); // ไดผลลพั ธ false $s = array_key_exists (\"John\", $a); // ไดผ ลลพั ธ false ตารางท่ี 5.4 ฟง กช นั ในการอา นขอมลู จากอารเรย ฟง กช นั ตัวอยา ง หนาที่ อา นคา คียท้งั หมดของ array_keys(อารเรย $a = array(\"name\" => \"John\", อารเ รย โดยผลลพั ธจ ะเปน อารเรยข องคียทีอ่ านได เปา หมาย) \"age\" => 37); ท้งั หมด $s = array_keys ($a); // ไดผ ลลัพธ $s=array(\"name\" ,\"age\") 85

ฟงกชัน ตวั อยาง หนาท่ี array_values (อารเ รยเปาหมาย) $a = array(\"name\" => \"John\", อานคาของสมาชกิ ภายใน array_unique \"age\" => 37); อารเ รย โดยผลลัพธจะเปน (อารเรยเ ปา หมาย) $s = array_values ($a); อารเรยของคาท่อี านได list(…) // ไดผ ลลพั ธ $s=array(\"John\" ,37) ทัง้ หมด มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง $a = array อานขอมลู (value) จาก (\"one\",\"one\",\"ONE\",\"two\",\"TWO\"); อารเรยโดยเลือกเอาเฉพาะ $s=array_unique($a); ขอ มูลที่ไมซา้ํ กนั ซง่ึ ผลลพั ธที่ // ไดผ ลลัพธ $s=array(\"one\" , ไดจะเปน อารเรย โดยสมาชกิ \"ONE\", \"two\",\"TWO\") ที่เขยี นดว ยตัวพิมพทต่ี างกัน จะถือวา ไมซ ํ้ากนั $a = array การอา นขอมลู จากอารเ รย (\"one\",\"two\",\"three\",\"four\"); เพ่อื มากาํ หนดคาใหกบั ตวั list($x,$y,$z) = $a; แปรทก่ี ําหนดไวใ นฟงกช ัน echo \"$x $y $z\" ; // ไดผ ลลัพธ one list() ตามรปู แบบ two three list(ตวั แปร1, ตวั แปร2, ... , ตัวแปรN) = อารเรยท ่ี ตองการอา นคา การอา นคาจากอารเ รยจ ะ เรม่ิ จากสมาชกิ ตัวแรกเปน ตน ไป ตารางที่ 5.5 ฟงกช นั ในการนบั จาํ นวนสมาชิกในอารเ รย ฟงกช นั ตวั อยาง หนาที่ count(อารเรย $a = array (\"one\",\"two\",\"three\"); ท้ังสองฟงกชันสามารถใชนบั เปา หมาย) echo count($a); // ไดผลลพั ธ 3 จาํ นวนสมาชกิ เหมือนกัน sizeof(อารเรย เปา หมาย) array_count_values $a = array (\"A\",\"A\",\"B\",\"C\",\"C\",\"D\"); ใชนับจาํ นวนสมาชิกแต (อารเรยเปา หมาย) print_r (array_count_values ผลลัพธทีไ่ ดจ ะเปน อารเ รยท ี่ ($a)); แสดงวาสมาชกิ แตล ะตัวมีอยู 86

ฟงกชนั ตัวอยาง หนา ท่ี // ไดผ ลลพั ธ Array ([A] => 2 [B] จํานวนเทา ไหร โดยคา key => 1 [C] => 2 [D] => 1) จะเปนคา value ของ สมาชิกแตละตวั สวนคา value จะเปน จาํ นวนท่นี บั ได มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ฟง กชันในการเรียงลําดับขอ มูลในอารเ รย การเรียงลําดับขอมูลของฟงกชันเหลาน้ีจะใหผลลัพธท่ีถูกตองเฉพาะคําในภาษาอังกฤษ เทานั้น หากเปนภาษาอนื่ จะเรียงลาํ ดบั ไมถูกตอ ง ตารางที่ 5.6 ฟงกช นั ในการเรยี งลาํ ดับขอมลู ในอารเ รย ฟง กช นั หนา ที่ sort(อารเ รย) เรยี งลําดับขอมูลโดยพจิ ารณาจากคา ASCII ของตัวอักษร natcasesort(อารเ รย) เรยี งลําดับขอ มลู ทเี่ ปน สตรงิ แยกความแตกตา งระหวางพมิ พเ ล็กและ พมิ พใ หญได และสามารถเรยี งลําดบั เลขท่ีรวมอยใู นสตรงิ ไดดวย ksort(อารเรย) ใชเรียงลําดบั ตามคา คียข องอารเ รย ตัวแปร $_SERVER ตัวแปร $_SERVER เปนตัวแปรอาเรยที่ PHP สรางไวเพื่อใชอางอิงขอมูลเกี่ยวกับเชื่อมตอ ระหวา ง Client (Browser) กับ Web Server เชน ชอื่ โฮสต, พอรท, เมธอดในการสงขอมูล เปนตน การอางถงึ ขอ มลู ในตวั แปร $_SERVER แบบ Key/Value ดงั น้ี $value = $_SERVER ['key'] ; สาํ หรับคียห รือขอมลู ที่เราตอ งการทราบ มีดังตอไปนี้ ตารางท่ี 5.7 คยี ของตวั แปร $_SERVER ฟงกชัน หนา ที่ $_SERVER ใชใ นการอา นขอ มลู เกี่ยวกบั เบราเซอรทีผ่ ใู ชก ําลงั ใชงานอยู ['HTTP_USER_AGENT'] $_SERVER เกบ็ ชอ่ื โฮสตที่รบั เวบ็ เซริ ฟเวอรอยูในขณะนน้ั เชน localhost ['HTTP_HOST'] $_SERVER คอื ช่ือของเวบ็ เซิรฟเวอร เชน localhost ['SERVER_NAME'] 87

ฟงกชนั หนาที่ $_SERVER เปนหมายเลข IP Address ของเครื่องเซิรฟเวอร ['SERVER_ADDR'] $_SERVER เปนหมายเลข IP Address ของเคร่ืองผูใ ช ['REMOTE_ADDR'] มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง $_SERVER เปนชื่อไฟลส ครปิ ตหรือเวบ็ เพจที่เรากาํ ลังเปดอยู ซึง่ รวมถึงไดเร็กทอร่ี ['SCRIPT_FILENAME'] ของไฟลน ้นั ดว ย เชน c:/xampp/htdoc/webtest/index.php $_SERVER เมธอดท่ีใชในการสง ขอมูลของฟอรมจากฝงผูใชมายังเวบ็ เซิรฟเวอร ['REQUEST_METHOD'] เชน GET, POST $_SERVER QUERY_STRING คือขอมลู ที่ถูกสง ดว ยเมธอด GET จากฟอรมมาเวบ็ ['QUERY_STRING'] เซิรฟเวอรซึ่งจะแนบมากับ URL เชน q=php&page=2 $_SERVER คอื ช่ือเพจที่ Request มายงั เว็บเซริ ฟ เวอร โดยไมร วมชื่อโฮสต เชน ['REQUEST_URI'] หาก URL ทีเ่ ขา มาเปน http://localhost/webtest/index.php คา URI จะเปน webtest/index.php $_SERVER คอื คา URI ของเวบ็ เพจทเ่ี ราเปดใชง านในขณะนน้ั เชน ['PHP_SELF'] webtest/index.php (บญั ชา ปะสลี ะเตสงั , 2557) การจัดการไฟล ในการเก็บขอมูลของคอมพิวเตอร หรือการเก็บขอมูลในตัวแปร ขอมูลตางๆจะอยูใน หนวยความจํา โดยหนวยความจําแตละตําแหนงจะมีคาประจําของมัน คาน้ันคือตําแหนงท่ีเรียกวา แอดเดรส (Address) สําหรับคาแอดเดรสนั้นเราถือวาเปนขอมูลเชนเดียวกัน เหมือนขอมูล ตัวเลข ตัวอักษร และเราจัดเก็บขอมูลแอดเดรสในตัวแปรชนิดพอยนเตอร (Pointer) ซึ่งตัวแปรพอยนเตอร จะชี้ไปที่ตําแหนงท่ีเก็บคาขอมูล โดยเฉพาะขอมูลที่มีการเรียงติดๆกัน เชน อารเรย ไฟล ตัวแปร พอยนเตอรจะสามารถเปลี่ยนตําแหนงช้ีขอมูลไดรวดเร็วมาก เราจึงมักเห็นการใชงานพอยนเตอรกับ ขอ มลู ทีเ่ รียงตอ กนั ยาวๆ และมีจาํ นวนมาก การเปด และปด ไฟล กอนที่จะทําการจัดการไฟลใดๆ เราจะตองทําการเปดไฟลกอนทุกคร้ัง โดยการเปดไฟลเปน การระบุตําแหนง และชอ่ื ไฟลท ีต่ องการเปด รวมทั้งบอกวาจะเปดไฟลไ ปเพื่ออะไร 88

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงรูปแบบการใชง านฟง กชันเปด ไฟล fopen (ตาํ แหนง และชื่อไฟล, โหมดของการเปด ) ผลลัพธจากการใชฟงกชัน fopen() นี้จะไดหมายเลขไฟลเพ่ือใชในการอางอิงอ่ืนๆ ตอไป โหมดของการเปดไฟลมีท้งั หมด 6 โหมด ดงั น้ี ตารางท่ี 5.8 โหมดของการเปด ไฟลในฟง กช นั fopen() โหมดของการเปดไฟล รายละเอยี ด 'r' เปด เพอื่ อาน โดยไฟลพ อยนเ ตอรจ ะชไ้ี ปยังจดุ เริ่มตนของไฟล 'r+' เปดเพ่อื อานและเขียน โดยไฟลพอยนเ ตอรจะช้ไี ปยงั จุดเร่ิมตน ของไฟล 'w' เปดเพื่อเขียนอยางเดียว โดยไฟลพอยนเตอรจะชี้ไปยังจุดเริ่มตนของ ไฟล และไฟลท่ีถูกเขียนจะเร่ิมเขียนขอมูลใหมทุกครั้ง ถาไมปรากฏช่ือ ไฟลตามทร่ี ะบุก็จะสรา งข้ึนมาใหม 'w+' เปดเพื่ออานและเขียน โดยไฟลพอยนเตอรจะช้ีไปยังจุดเร่ิมตนของไฟล และไฟลท ี่ถกู เขียนจะเรม่ิ ตนเขียนขอ มูลใหมทุกครง้ั ถาไมปรากฏช่ือไฟล ตามทร่ี ะบกุ จ็ ะสรา งขึ้นมาใหม 'a' เปด เพ่ือเขียนอยางเดยี ว โดยไฟลพ อยนเตอรจะชี้ไปยังตอนทายของไฟล ถาไมปรากฏชื่อไฟลต ามทรี่ ะบุก็จะสรางขึน้ มาใหม 'a+' เปดเพ่ืออานและเขียน โดยไฟลพอยนเตอรจะช้ีไปยังตอนทายของไฟล ถา ไมปรากฏชื่อไฟลต ามท่รี ะบกุ จ็ ะสรางข้นึ มาใหม หลงั จากเปดไฟลและใชงานไฟลด งั กลาวแลว กอนท่จี ะจบโปรแกรมเราควรปดไฟลดวยทุก ครัง้ ซึง่ ฟงกช ันในการปด ไฟลมีรูปแบบการใชงาน ดังนี้ รปู แบบการใชง านฟง กช นั ปด ไฟล fclose (หมายเลขไฟล) ; 89

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยา งที่ 5.6 การใชงานฟง กช ัน fopen() และ fclose() <?php $a1 = fopen ('D:\\lesson\\test1.txt', 'r'); $a2 = fopen ('D:\\lesson\\test2.txt', 'r'); echo \"$a1 <br>\"; echo \"$a2 <br>\"; fclose ($a1); fclose ($a2); ?> ผลลัพธของโปรแกรมน้ีไดแสดงถึงวิธีการใชงานฟงกชัน fopen() และ fclose() โดยสงให พิมพหมายเลขอางอิงของไฟลออกมาดวย ซ่ึงจะมีหมายเลขที่ไมซํ้ากันเม่ือเปดไฟลตางกัน และนํา หมายเลขน้ไี ปอางอิงเพอ่ื ใชใ นการปด ไฟล ผลการทํางาน ดงั นี้ ภาพประกอบที่ 5.4 ผลการทํางานของการใชงานฟง กช นั fopen() และ fclose() ทม่ี า: (ภาพโดยผเู ขียน, 2564) การอานขอ มูลจากไฟล ที่ผา นมาเราไดทําการเปดไฟลโดยเปนการเปดในโหมดของการอานไฟล แตถาตองการทราบ วา ไฟลท่ีเปด มขี อมลู อะไรบา งอยภู ายในไฟล เราตองใชฟ ง กชันอานขอมูล ดังนี้ ฟงกชนั fread() ใชสําหรับการอานขอมูลจากไฟลที่เราเปดเอาไว โดยสามารถระบุจํานวน ความยาว หรือจํานวน ไบตทีต่ องการได รูปแบบ fread (หมายเลขอางอิงของไฟล, จาํ นวนไบตทต่ี องการ) ; 90

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยางที่ 5.7 การใชงานฟง กชนั fread <?php $a1 = fopen ('D:\\lesson\\test2.txt','r'); $a2 = fread ($a1, 75); echo \"$a2 <br>\"; fclose ($a1); ?> ผลการทาํ งาน ดงั นี้ ภาพประกอบท่ี 5.5 ผลการทํางานของการใชง านฟงกชัน fread ทม่ี า: (ภาพโดยผูเขยี น, 2564) ฟงกชัน fgets() ฟงกชันน้ีใชสําหรับการอานขอมูลจากไฟลเหมือนฟงกชัน fread() โดยฟงกชัน fread() จะ อานขอมูลเทาจํานวนความยาวท่ีระบุไว สวนฟงกชัน fgets() จะอานขอมูลเพียงบรรทัดเดียวเทานั้น ดงั นน้ั ถาตองการอานขอมูลจากไฟลไดหลายๆบรรทัดก็ตองใชคําสั่งทําซํ้า เรียกใชงานฟงกชัน fgets() อานขอมูลหลายๆคร้ัง ถาขอมูลในบรรทัดนั้น มีความยาวมากกวาจํานวนท่ีระบุ ฟงกชัน fgets() ก็จะ อานขอมูลเทาที่ระบุไวเทาน้ัน และจะทําการอานขอมูลที่เหลือใหมตามจํานวนความยาวที่ระบุไว เหมือนเดมิ ทาํ ไปเร่อื ยๆ จนจบบรรทัดยาวนน้ั รูปแบบ fgets (หมายเลขอางอิงของไฟล, จาํ นวนความยาวท่ีตองการอาน) ; test-file.txt HTML is the standard markup language for Web pages. With HTML you can create your own Website. HTML is easy to learn - You will enjoy it! 91

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง การใชฟง กช ัน fgets() เพอ่ื อานขอ มูลจากไฟล test-file.txt โดยไฟลนี้อยูในตําแหนงเดียวกับ โปรแกรม ดังน้ันเราจึงทําการระบุเฉพาะชื่อไฟลเทานั้น ไมตองระบุตําแหนงที่อยูก็ได และใชคําส่ัง while วนลูปทําซ้ําจนกระทั่งหมดไฟล โดยใชคําสั่ง eof (end of file) ของฟงกชัน feof() ตรวจสอบ วา จบไฟลห รือยงั ถายังไมหมดไฟลก ใ็ หวนลูปตอ ไปอีก ดังน้ี ตวั อยางที่ 5.8 การใชงานฟงกช นั fgets() <?php $a1 = fopen ('test-file.txt','r'); If ($a1) { while(!feof($a1)) { $s = fgets($a1,10); echo \"$s <br>\"; } fclose ($a1); } ?> ผลการทาํ งาน ดังนี้ ภาพประกอบที่ 5.6 ผลการทํางานของการใชง านฟงกช ัน fgets() ที่มา: (ภาพโดยผเู ขียน, 2564) 92

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง โดยฟงกชัน fgets() จะอานขอมูลเทาจํานวนความยาวที่ระบุไปเรื่อยๆ แตจะไมอานขอมูล ขามบรรทัด พอเจอตวั ขึ้นบรรทัดใหมก จ็ ะหยุดอานเสมอ ฟงกชัน file() ฟงกชันนี้ใชอานขอมูลท่ีจัดเก็บไวในไฟลมาแสดงผล โดยไมตองใชคําส่ัง fopen() เพ่ือเปด ไฟล แตในการแสดงขอมูลจากไฟลน้ีจะถูกจัดเก็บไวในตัวแปรอารเรยเร่ิมต้ังแตอารเรยตําแหนงท่ี 0 จะเก็บขอมูลจากไฟลในบรรทัดท่ี 1 ,อารเรยตําแหนงท่ี 1 จะเก็บขอมูลจากไฟลในบรรทัดที่ 2 ทํา เชน นี้ไปจนหมดขอ มลู จากไฟลน้นั รูปแบบ file (ตําแหนงและช่อื ไฟล) ; ตวั อยา งท่ี 5.9 การใชงานฟง กช ัน file() อา นขอ มลู จากไฟล test-file.txt <?php $s = file('test-file.txt'); for ($i=0; $i<count($s); $i++) { echo \"ขอมูลในบรรทัดที่ $i คือ $s[$i] <br>\"; } ?> ผลการทาํ งาน ดงั น้ี ภาพประกอบท่ี 5.7 ผลการทํางานของการใชง านฟง กชนั file() อานขอมูลจากไฟล test-file.txt ทีม่ า: (ภาพโดยผเู ขียน, 2564) 93

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงฟงกช นั fpassthru() ฟง กชนั นีใ้ ชอ า นขอ มลู จากไฟลเ ชนเดยี วกบั ฟง กช ัน file() โดยจะอานขอมูลท้ังหมดไมสามารถ เลือกไดวาตองการท่ีจะอานขอมูลในสวนไหน ฟงกชันน้ีตองใชฟงกชัน fopen() เพ่ือทําการเปดไฟล แตไ มต อ งใชฟ งกชนั fclose() เพื่อปดไฟลก็ได รปู แบบ fpassthru (หมายเลขอางอิงของไฟล) ; ตวั อยา งที่ 5.10 การใชงานฟง กช นั fpassthru() อานขอมลู จากไฟล test-file.txt <?php $s = fopen('test-file.txt','r'); echo \"ขอมลู ทงั้ หมดของไฟล test-file.txt คือ <hr>\"; fpassthru($s); ?> ผลการทํางาน ดังน้ี ภาพประกอบที่ 5.8 ผลการทํางานของการใชงานฟงกชนั fpassthru() อา นขอ มลู จากไฟล test- file.txt ทมี่ า: (ภาพโดยผเู ขียน, 2564) การเขียนขอ มลู ลงไฟล การเขียนขอมูลลงไฟลนั้นในภาษา PHP ไดจัดเตรียมฟงกชันที่ใชในการเขียนขอมูลลงไฟลไว แลว ในที่นี้จะแนะ 2 ฟงกชัน ไดแก fputs() กับ fwrite โดยท้ัง 2 ฟงกชันมีรูปแบบการใชงานและ ผลลพั ธเหมือนกนั สามารถเลอื กใชงานฟงกชันใดกไ็ ด รูปแบบ fputs (หมายเลขอา งองิ ของไฟล, ขอ มูลทีจ่ ะเขยี นลงไฟล, [ความยาว]) ; fwrite (หมายเลขอางองิ ของไฟล, ขอ มลู ทจี่ ะเขียนลงไฟล, [ความยาว]) ; 94

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง การใชง านฟงกชัน fputs() โดยเร่ิมตั้งแตการเปดไฟลช่ือวา test-file.txt ซึ่งเปดในโหมดของ การเขียน หลังจากนั้นจะใชฟงกชัน fputs() เพื่อเขียนขอความวา “I Love You” ลงสูไฟล ถัดมาให ทําการเปด ไฟลอกี ครัง้ ในโหมดของการอาน และใชฟ ง กชนั fpassthru() ทําการอานขอมูลจากไฟล ซ่ึง กจ็ ะไดข อความที่เขียนลงไปแสดงบนเบราเซอร ตวั อยา งท่ี 5.11 การใชง านฟง กช ัน fputs () เขยี นขอ มลู ลงไฟล test-file.txt <?php $s = fopen('test-file.txt','w'); fputs($s,\"I Love You <br>\"); fclose($s); $s= fopen('test-file.txt','r'); fpassthru($s); ?> ผลการทํางาน ดังนี้ ภาพประกอบท่ี 5.9 ผลการทํางานของการใชง านฟง กช นั fputs () เขยี นขอมูลลงไฟล test-file.txt ท่มี า: (ภาพโดยผเู ขียน, 2564) โดยจะสังเกตวาขอมูลเดิมของไฟล test-file.txt จะหายไปเน่ืองจากตอนเปดไฟลเพื่อเขียน เปดโหมดเปนแบบ w ซึง่ การเขียนขอมูลลงสูไฟลในแตละครั้งจะทําการเขียนในลักษณะทับขอมูลเดิม หากไมตอ งการใหท ับขอ มูลเดมิ ตองเปดโหมดเปนแบบ a การยา ยตวั แปรไฟล การใชฟง กช นั fgets() อา นขอ มลู จากไฟลน น้ั การอา นแตละคร้งั จะเร่ิมอานขอมูลตอจากจุดที่ เคยอานไวกอนหนาทุกคร้ัง ในการกําหนดใหการอานขอมูลกลับไปท่ีจุดเร่ิมตนของไฟล หรือไปท่ีจุด ใดๆ สามารถใชฟ ง กช ัน ดงั น้ี 95

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงฟงกชัน rewind() ฟงกช นั นใี้ ชสําหรับการกาํ หนดใหไฟลพ อยนเตอรช ไ้ี ปยงั จุดเรมิ่ ตนของไฟล รูปแบบ rewind (หมายเลขอางอิงของไฟล) ; ตวั อยางที่ 5.12 การใชงานฟง กช นั rewind() <?php $a1 = fopen ('test-file.txt','r'); $s = fgets($a1,10); echo \"อา นขอมูลคร้งั ที่ 1 $s <br>\"; rewind($a1); $s = fgets($a1,10); echo \"อา นขอมูลคร้งั ที่ 2 $s <br>\"; rewind($a1); $s = fgets($a1,10); echo \"อา นขอมูลครั้งที่ 3 $s <br>\"; rewind($a1); fclose ($a1); ?> ผลการทํางาน ดังน้ี ภาพประกอบท่ี 5.10 ผลการทาํ งานของการใชง านฟงกช นั rewind() ที่มา: (ภาพโดยผเู ขียน, 2564) 96

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงฟง กช ัน fseek() ฟงกชนั น้ใี ชระบุวา ตอ งการเร่ิมตน อา นขอ มลู จากไฟลนบั จากตวั อักษรตัวที่เทา ไร รปู แบบ fseek (หมายเลขอางอิงของไฟล, ตําแหนงของตวั อักษรทตี่ องการใหเ รม่ิ อาน) ; ตัวอยา งท่ี 5.13 การใชง านฟงกช นั fseek() <?php $a1 = fopen ('test-file.txt','r'); fseek($a1, 10); $s = fgets($a1,17); echo \"อานขอมลู โดยเริม่ อานจากตวั อกั ษรที่ 10 คือ $s <br>\"; fclose ($a1); ?> ผลการทาํ งาน ดงั นี้ ภาพประกอบที่ 5.11 ผลการทาํ งานของการใชง านฟงกช ัน fseek() ทม่ี า: (ภาพโดยผูเขียน, 2564) ฟง กช ัน ftell() ฟงกช นั น้ีใชบ อกตาํ แหนง ของไฟลพอยนเตอรวา ชอี้ ยูท ตี่ ําแหนง ที่เทาไรของไฟล รปู แบบ ftell (หมายเลขอา งองิ ของไฟล) ; 97

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยางที่ 5.14 การใชง านฟงกช นั ftell() <?php $a1 = fopen ('test-file.txt','r'); $s = fgets($a1,3); echo \"ตําแหนงของไฟลพ อยนเตอรต อนน้ีอยทู ี่ \". ftell($a1) ; fclose ($a1); ?> ผลการทํางาน ดงั นี้ ภาพประกอบท่ี 5.12 ผลการทาํ งานของการใชงานฟงกช นั ftell() ทีม่ า: (ภาพโดยผูเขยี น, 2564) การตรวจสอบไฟล ฟง กช ัน file_exists() ฟงกชันนี้ใชในการตรวจสอบวาไฟลมีอยูจริงหรือไม ผลลัพธของฟงกชันน้ีจะคืนคาเปน true ถามีไฟลน นั้ อยูจรงิ แตจ ะคนื คา เปนเทจ็ ถาไฟลน นั้ ไมมีอยูจ ริง รูปแบบ file_exists (ตําแหนง/ช่ือไฟลท่ตี อ งการตรวจสอบ) ; 98

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งท่ี 5.15 การใชง านฟงกช ัน file_exists() <?php $filename = 'c:/xampp/htdocs/test/test-file.txt'; if(file_exists($filename)) { echo \"มอี ยจู รงิ \"; } else { echo \"ไมม ีอยูจริง\"; } ?> ผลการทาํ งาน ดังน้ี ภาพประกอบที่ 5.13 ผลการทํางานของการใชง านฟงกชัน file_exists() ทม่ี า: (ภาพโดยผเู ขียน, 2564) ฟง กช นั filesize() ฟง กชนั นีใ้ ชหาขนาดของไฟลว า มีขนาดเทา ไร รปู แบบ filesize (ตาํ แหนง/ช่ือไฟลท่ีตองการหาขนาด) ; ตวั อยางที่ 5.16 การใชงานฟงกชนั filesize() <?php $filename = 'c:/xampp/htdocs/test/test-file.txt'; echo $filename. \" มขี นาดเทากบั \" . filesize($filename) .\" Bytes\"; ?> 99

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลการทํางาน ดงั น้ี ภาพประกอบที่ 5.14 ผลการทาํ งานของการใชงานฟงกชนั filesize() ทมี่ า: (ภาพโดยผูเขียน, 2564) การจดั การไดเร็กทอรี ไดเร็กทอรี คือ ท่ีจัดเก็บไฟลตางๆ ซ่ึงในภาษา PHP ไดเตรียมฟงกชันในกลุมน้ีไวหลายตัว ดงั น้ี ฟงกชัน opendir() และ closedir() ฟงกชัน opendir() ใชในการเปดไดเร็กทอรีกอนที่จะทําการประมวลผลภายในไดเร็กทอรี สว นฟง กชนั closedir() ใชป ดไดเรก็ ทอรหี ลังจากใชงานเสรจ็ สิ้นแลว รปู แบบ opendir (ตาํ แหนงของไดเร็กทอรที ่ีตองการเปด ) ; closedir (ตําแหนง ของไดเรก็ ทอรีท่ตี องการปด) ; ฟงกชนั readdir() ฟงกชันน้ีใชสําหรับการอานวามีไฟลและไดเร็กทอรียอยใดบางอยูภายใตไดเร็กทอรีท่ีทําการ เปดไว ซึ่งภายในไดเร็กทอรี อาจจะประกอบไปดวยหลายไฟลและหลายไดเร็กทอรียอย ดังน้ันอาจจะ ตองเรยี กใชฟง กชนั readdir() หลายครง้ั หรอื อาจเขียนรวมกบั คําสั่งทําซ้ําก็ได รูปแบบ readdir (หมายเลขอา งองิ ในไดเร็กทอร)ี ; 100

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตวั อยา งที่ 5.17 การใชง านฟงกช ัน readdir() เปน การแสดงไฟลและไดเรก็ ทอรีทั้งหมดในไดรฟ c : <?php $Dir = opendir (\"c:\"); while($data = readdir($Dir)) { echo \"$data <br>\"; } closedir($Dir); ?> ผลการทํางาน ดงั น้ี ภาพประกอบท่ี 5.15 ผลการทํางานของการใชง านฟงกชนั readdir() ทม่ี า: (ภาพโดยผูเขียน, 2564) ฟงกชัน getcwd() ฟงกชันนใ้ี ชตรวจสอบวา ไดเรก็ ทอรที ที่ ํางานอยูขณะน้คี ือไดเร็กทอรอี ะไร รูปแบบ getcwd () ; ตวั อยางที่ 5.18 การใชงานฟง กชัน getcwd() <?php echo \"ตอนนก้ี ําลังทํางานอยูในไดเร็กทอรี \". getcwd(); ?> 101

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงผลการทาํ งาน ดงั น้ี ภาพประกอบที่ 5.16 ผลการทาํ งานของการใชง านฟงกช นั getcwd() ทม่ี า: (ภาพโดยผูเขยี น, 2564) ฟง กชนั chdir() ฟง กชันน้ใี ชเ ปลยี่ นไดเร็กทอรที ี่กาํ ลังทํางานอยูไปยังไดเร็กทอรอี ่นื ทตี่ องการ รปู แบบ chdir(ไดเรก็ ทอรีท่ตี องการเปลย่ี น) ; ฟงกช ัน mkdir() และ copy() ฟงกชัน mkdir() ใชสรางไดเร็กทอรีใหม สวนฟงกชัน copy() ใชทําสําเนาไฟลไปเก็บไวในอีก ไดเรก็ ทอรหี นึง่ รปู แบบ mkdir(ช่ือไดเรก็ ทอรีทต่ี องการสรา งใหม) ; copy(ตําแหนง และชื่อไฟลต น ทาง, ตาํ แหนงและชื่อไฟลปลายทาง); 102

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงตัวอยา งท่ี 5.19 การใชง านฟง กชัน mkdir() และ copy() <?php $Directory = getcwd(); if(!mkdir(\"new_directory\")) { echo \" ไมส ามารถสรา งได <br>\"; } else { echo \" สรา งไดแลว <br>\"; } if(!copy($Directory.\"/test-file.txt\", \"new_directory/test-file.txt\")) { echo \"สาํ เนาไมไ ด <br>\" ; } else { echo \"สําเนาเรยี บรอ ย <br>\" ; } ?> ผลการทํางาน ดงั น้ี ภาพประกอบที่ 5.17 ผลการทํางานของการใชง านฟงกชัน mkdir() และ copy() ทมี่ า: (ภาพโดยผูเขยี น, 2564) โปรแกรมน้ีจะสรางไดเร็กทอรีใหมชื่อ new_directory ดวยฟงกชัน mkdir() แตจะใช if ตรวจสอบวาเคยมีการสรางไดเร็กทอรีนี้หรือยัง หลังจากน้ันก็สําเนาไฟล text-file.txt ไปไวในไดเร็ก ทอรที ีส่ รางใหมดวยคําสงั่ copy() (ชาญชัย ศุภอรรถกร, 2561) 103

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงบทสรุป ตัวแปรมีความสําคัญมากสําหรับการเขียนโปรแกรม ตัวแปรที่มีความสําคัญอีกตัวหน่ึงคือ อารเ รย ซง่ึ มใี หใชง านหลากหลายรูปแบบ อีกท้ังยังสามารถนําไปใชประโยชนไดมากมาย ซ่ึงอารเรยมี 2 ชนิดคือ อารเรย 1 มิติ และอารเรยหลายมิติ ซึ่งมีรูปแบบในการสรางตัวแปรไมเหมือนกัน และมี ฟงกชันท่ีเขามาชวยในการจัดการตัวแปรอารเรย ไดแก ฟงกชันเกี่ยวกับการสรางอารเรย, การเพ่ิม สมาชิก, การตรวจสอบขอ มูล, การอา นขอ มลู , การนับจํานวนสมาชิก, การเรียงลําดับขอมูลในอารเรย เปนตน และฟงกชันในการจัดการไฟล ไดแก การเปดและปด, การอานขอมูล, การเขียนขอมูล, การ ยา ยตวั แปร, การตรวจสอบไฟล และการจดั การไดเร็กทอรี เปน ตน คาํ ถามทบทวน 1. อารเรยค อื อะไร 2. จงอธิบายวิธีการสรา งและกาํ หนดคาใหกับตวั แปรอารเรย 1 มติ ิ 3. จงอธบิ ายวธิ กี ารสรา งและกําหนดคาใหกับตวั แปรอารเ รย 2 มิติ 4. Assoicative Array คอื อะไร 5. ฟังก์ชนั ท่ีใช้ในการจดั การอาร์เรย์ มีอะไรบาง จงยกตวั อยางมา 5 ฟงกชัน พรอมอธิบายการทาํ งาน 6. ฟง กช นั ท่ใี ชในการจดั การไฟล์ มอี ะไรบา ง จงยกตวั อยา งมา 5 ฟง กช นั พรอมอธิบายการทํางาน 7. จงยกตวั อยา งฟงกชันท่ีใชอางอิงขอ มูลเกยี่ วกบั เชอื่ มตอระหวา ง Client (Browser) กับ Web Server มา 5 ฟงกช นั พรอ มอธบิ ายการทาํ งาน 8. จงบอกความหมายของไฟล 9. จงเขยี นโปรแกรมตัง้ ช่ือเปน file_รหัสน.ศ.3 ตวั ทา ย.php ที่มรี ายละเอยี ดดังนี้ 9.1 เขยี นโปรแกรมสราง directory ช่อื MyProfile ไวทไี่ ดรฟ D:\\ 9.2 แลวสรางไฟลช่ือ profile.txt เก็บไวใน directory ดงั กลาว ใหเ ขียนขอความ ตอไปนลี้ งในไฟล profile.txt 9.2.1 รหสั นักศึกษา 9.2.2 ช่อื -นามสกุล 9.2.3 สาขาวิชา คณะ มหาวิทยาลยั 9.3 จากนนั้ ใหอานขอความจากไฟลด งั กลาวใหแสดงออกทางโปรแกรมเบราวเซอร 104

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงเอกสารอางอิง อนรรฆนงค คุณมณ.ี (2555). พัฒนาเวบ็ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบุรี : ไอซดี ี. บัญชา ปะสีละเตสงั . (2557). พฒั นาเว็บแอปพลิเคชั่นดว ย PHP รว มกบั MySQL และ jQuery. กรงุ เทพฯ : ซีเอ็ดยเู คชัน่ . ชาญชัย ศุภอรรถกร. (2561). สรางเวบ็ แอพพลเิ คชนั PHPMySQL สาํ หรับผเู ร่มิ ตน. พิมพค ร้งั ที่ 2. กรุงเทพฯ : รีไววา . 105

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจาํ บทท่ี 6 หัวขอเน้ือหา 1. ฟอรมทาํ งานอยางไร 2. การสรางฟอรม 3. การเขียนสคริปตสําหรับการแทรกฟอรม 4. องคป ระกอบตางๆ ของฟอรมรบั ขอมูล 5. การใชง านกลองรบั ขอความ (TextField) 6. การใชง านปมุ ตัวเลอื ก 7. การใชกลองตวั เลือกแบบปอ บอพั เมนู 8. การใชปมุ สั่งงานแบบตางๆ 9. การสงขอ มลู 10. การสง ขอ มลู ไปยังเว็บเซิรฟ เวอร 11. การสง ขอ มูลแบบ POST 12. การสงขอมูลแบบ GET วัตถปุ ระสงคเชิงพฤติกรรม เมอ่ื นกั ศึกษาเรยี นจบบทเรยี นน้ีแลว สามารถ 1. อธบิ ายหลักการทํางานของฟอรม ได 2. อธิบายวธิ ีการสรา งฟอรมได 3. อธิบายวิธีการสรา งฟอรม รับขอมลู แตล ะประเภทได 4. อธบิ ายวธิ ีการสง ขอมูลแตล ะชนดิ ได วิธสี อนและกจิ กรรมการเรียนการสอน 1. วิธีสอน 1.1 วิธกี ารสอนแบบบรรยาย โดยใหนักศกึ ษาฟง บรรยายจากเอกสารประกอบการสอน วชิ า การพัฒนาฐานขอมลู บนเว็บ 1.2 อภิปรายรวมกันในชนั้ เรยี น 2. กิจกรรมการเรียนการสอน 2.1 คาํ ถามทบทวน 2.2 แบบฝกปฏิบตั ิ เร่อื งการสรางแบบฟอรมออนไลน 106

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 2.3 Active Learning แบบ PLC 2.4 สืบคน ตัวอยา งแบบฟอรม ออนไลนในรูปแบบตา งๆ สือ่ การเรยี นการสอน 1. เอกสารประกอบการสอน วิชา การพฒั นาฐานขอมูลบนเว็บ 2. เวบ็ ไซตทมี่ ีเนอ้ื หาเกี่ยวของกับรายวชิ า 3. ส่ือสงั คมออนไลน การวดั ผลและการประเมินผล 1. สงั เกตการณม สี วนรว มและการถาม-ตอบ 2. การทาํ งานตามทไ่ี ดร ับมอบหมาย 3. การทําคําถามทบทวน 4. การทําแบบฝกปฏบิ ตั ิ เรอ่ื งการสรางแบบฟอรม ออนไลน 107

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง บทท่ี 6 การจดั การฟอรม ระบบการทาํ งานบนเว็บน้ันมีหลากหลายรูปแบบ ยกตัวอยางเชน ระบบการรับสมัครสมาชิก ซึง่ จะมีแบบฟอรมใหผใู ชก รอกรายละเอยี ดตา งๆ แลวจะถูกนําไปประมวลผลตอไป ระบบตะกรา หรือ รถเข็น สําหรับใหผูใชเลือกซ้ือสินคาแลวระบบจะคํานวณราคารวมใหอัตโนมัติ เปนตน เราจะเห็นวา การทาํ งานดังกลา วตองมสี วนของการรับขอมูลนําเขาเพื่อนําไปประมวลผล เน้ือหาในบทน้ีจะกลาวถึง การสรางชองรับขอมูล หรือที่เรียกวาแบบฟอรม ซึ่งออบเจ็กตรับขอมูลมีอยูดวยกันหลายประเภทให ผพู ัฒนาไดเลือกใชใ หเ หมาะสมกับระบบการทํางานบนเว็บ ฟอรม ทาํ งานอยางไร แบบฟอรมที่เราเห็นในเว็บไซตทั่วๆไป ทําหนาท่ีเพียงแครับขอมูลที่ผูใชกรอกเขามาแลวสง ตอ ไปทาํ งานในไฟลส คริปต ซ่ึงไฟลส ครปิ ตนั้นมีหนาท่ีนําขอมูลท่ีไดไปประมวลผลตางๆ เชน นําขอมูล จดั เก็บลงฐานขอมูล , สงอีเมลตอบกลับมาหาผูใช เปนตน สรุปงายๆ คือ ฟอรมมีหนาที่รับขอมูลแลว สง ตอ ไปใหก บั ไฟลสคริปตท่ีเราเขียนข้ึนเพ่ือจัดการกับขอมูล ซึ่งฟอรมท่ีดีควรออกแบบใหกรอกขอมูล ไดงาย ครบถวน สามารถปองกันขอ ผดิ พลาดจากขอ มลู ไมพึงประสงคได ภาพประกอบที่ 6.1 ตัวอยา งแบบฟอรมสมัครสมาชิกของสํานักงานประกนั สงั คม ทม่ี า: จากเว็บไซต https://www.sso.go.th/wpr/main/register 108

การสรางฟอรม เน่ืองจากฟอรมเปนตัวรับขอมูลท่ีผูใชกรอกเขามา ดังนั้นการสรางฟอรมก็คือ การสราง ชองทางรับขอมูลในรูปแบบตางๆ ในบทเรียนนี้ใชโปรแกรม Dreamweaver 2021 มาใชในการ ออกแบบและสรางฟอรม แตกอนท่ีจะสรางชองทางการรับขอมูลใสลงในฟอรมน้ัน คุณจะตองสรางกรอบของฟอรม ขน้ึ มากอ น มขี น้ั ตอน ดงั นี้ 1. สรางไฟลใ หมโดยการคลกิ ทเ่ี มนู file->new->PHP->create ภาพประกอบท่ี 6.2 การสรา งไฟลใ หม ทมี่ า: (ภาพโดยผเู ขียน, 2564) 2. คลกิ เลือกมมุ มอง Design เพ่ือแสดงพ้นื ทสี่ าํ หรบั การออกแบบ มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 6.3 การเลือกมมุ มอง ที่มา: (ภาพโดยผูเ ขียน, 2564) 109

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 3. คลิกท่แี ท็บเครือ่ งมือ form จะปรากฏรายการตวั เลือกชนิดตา งๆ ข้นึ มา ภาพประกอบที่ 6.4 การเลอื กแทบ็ เคร่ืองมือ form ทม่ี า: (ภาพโดยผเู ขยี น, 2564) 4. คลิกที่ปุม เพ่ือสรางฟอรมโดยที่หนาออกแบบจะปรากฎกรอบเสนประสีแดงขึ้นมา ซึง่ กค็ อื กรอบของฟอรมนัน่ เอง ภาพประกอบท่ี 6.5 ขอบเขตของฟอรม ท่มี า: (ภาพโดยผูเขยี น, 2564) 5. ใน properties panel ที่ชอง Form ตรง ID ใหต้ังช่ือฟอรม เปนภาษาอังกฤษ ในท่ีนี้จะ สรางแบบฟอรมสมัครสมาชิก จงึ ตัง้ ชอ่ื วา formRegis 6. ที่ชอ ง Action ระบุช่ือไฟลสคริปต ที่จะสงขอมูลจากฟอรมไปประมวลผล ในท่ีนี้จะสงไปท่ี ไฟล insertMem.php 7. ท่ีชอง Method เลือกรูปแบบการสงขอมูล จากฟอรมไปใหสคริปต โดยแนะนําใหเลือก เปน POST ความแตกตา งระหวา งการสง ขอ มูลแบบ POST และ GET POST เปนการสง ขอ มูลจากฟอรม ไปยงั สครปิ ตโ ดยตรง โดยไมผาน URL ทําใหเราไมสามารถ มองเห็นขอมูลดังกลาวได แบบน้ีจึงเหมาะกับขอมูลขนาดใหญ หรือขอมูลที่ตองการปดเปนความลับ เชน หนา จอ Login GET เปนการสงขอมูลจากฟอรมผานทาง URL ของเว็บไซตโดยตรง วิธีนี้ไมปลอดภัยเพราะ ขอมูลท่ีสงผานไปใหสคริปตนั้นจะถูกแสดงออกมาในรูปแบบของขอความธรรมดาใน URL ซ่ึงเราจะ เหน็ ในชอ ง Address Bar ของเบราวเซอร 110

ภาพประกอบท่ี 6.6 การกําหนดคา ของ form ท่มี า: (ภาพโดยผูเขยี น, 2564) 8. เม่ือกําหนดฟอรมแลวตอไปเราจะสรางสวนประกอบตาง ๆ ใหกับฟอรม และเพื่อใหการ จัดองคประกอบตาง ๆ ทําไดงายข้ึน เราจะทําการแทรกตารางเขามาจากน้ันจึงกําหนดองคประกอบ ของฟอรมลงในชอ งตาราง 9. คลกิ ใหเคอรเ ซอรอยใู นพืน้ ท่ีเสนประสแี ดงแลว คลกิ ท่ีแทบ็ เคร่ืองมือ HTML 10. คลิกทีป่ มุ เพอื่ สรางตาราง 11. จะปรากฏหนา ตา ง Table ขึน้ มาดงั น้ี Rows คอื กาํ หนดจาํ นวนแถว // ในที่น้ีกาํ หนด 5 Columns คอื กาํ หนดจาํ นวนคอลมั น // ในทีน่ ้กี ําหนด 4 Border thickness คือ กําหนดความหนาของเสนขอบตาราง // ในท่ีนกี้ ําหนด 0 12. คลกิ ท่ีปุม OK 13. พมิ พขอ ความสาํ หรับองคป ระกอบตา งๆ ใหครบ 14. แดรกเมาสเ พื่อปรบั ขนาดของตารางใหเหมาะสม มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 6.7 การสรางตาราง ที่มา: (ภาพโดยผเู ขยี น, 2564) 111

การเขียนสครปิ ตส ําหรบั การแทรกฟอรม เขาไปโดยการกําหนด การแทรกฟอรมเขาไปในเว็บเพจนั้น เราจะแทรกแท็ก <form> คุณสมบตั ใิ หกับแทก็ มีรูปแบบ ดงั น้ี รปู แบบการกาํ หนดคณุ สมบัตใิ หแ ท็ก <form> <form name=\"ชือ่ ฟอรม \" method=\"วิธสี งขอมลู \" action=\"ชื่อไฟลส คริปตท่จี ะสงขอมลู จากฟอรม ไปประมวลผล\"> มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ซงึ่ ในข้นั ตอนการสรา งฟอรม ดา นบนใชเครื่องมือของ Dreamweaver ชวยทําไดเขียนสคริปต ของแท็ก <form> เรยี บรอยแลว สามารถกดดูสครปิ ตไดทม่ี ุมมอง code ดงั ภาพ ภาพประกอบท่ี 6.8 สคริปตของแทก็ <form> ทม่ี า: (ภาพโดยผูเขียน, 2564) องคประกอบตาง ๆ ของฟอรมรบั ขอมลู ในการสรางฟอรมเพ่ือรับขอมูลจะมีองคประกอบอยูหลายประเภท เชน กลองขอความ, กลองรับรหัสผาน, ปุมตัวเลือก, กลองตัวเลือก หรือปุมสงขอมูลตาง ๆ ซ่ึงแตละประเภทมีความ เหมาะสมกับขอมลู รูปแบบตางกนั ดงั นี้ การใชง านกลอ งรับขอ ความ (TextField) กลองรับขอความแบบน้ีจะไดรับความนิยมมากที่สุด โดยสามารถกําหนดไดวาจะรับขอมูล บรรทดั เดยี ว,หลายบรรทดั หรือรบั ขอ มูลรหสั ผาน 112

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง กลอ งรบั ขอมลู บรรทัดเดียว (Single line TextField) จะใชก รอกขอ ความสน้ั ๆ เชน ชอื่ , นามสกุล, หรอื อีเมล เปนตน ซ่งึ มีวิธีสราง ดงั นี้ 1. คลกิ ที่ตําแหนง ที่จะวางกลอ งรับขอ ความ แลว คลิกท่ี แทบ็ เคร่อื งมอื Forms 2. คลิกทีป่ มุ TextField 3. จะปรากฏขอความพรอมกับกลองรับขอความ ใหลบขอความออกใหเหลือแคกลองรับ ขอ ความ ภาพประกอบท่ี 6.9 การแทรกกลอ งรบั ขอมูลบรรทัดเดยี ว ท่มี า: (ภาพโดยผเู ขยี น, 2564) 4. คลกิ ท่กี ลอ งขอความทสี่ รา ง จะปรากฎ properties panel ของกลองรับขอความประเภท Text ขึน้ มาซ่ึงสามารถกาํ หนดคณุ สมบตั ขิ องกลอ งรบั ขอ ความได ดังนี้ - Name คือ กําหนดชอ่ื ของกลอ งรับขอความ - Size คือ กาํ หนดขนาดความกวางของกลองรับขอ ความ - Max Length คอื กาํ หนดตวั อกั ษรท่ใี สไดมากทีส่ ุด - Place Holder คือ กาํ หนดขอ ความตวั อยาง ตองตัง้ ช่ือใหก ับทกุ กลอ งไมใหซา้ํ กัน ช่ือน้ันควรส่ือความหมายสัมพันธกับส่ิงท่ีตองกรอกลงใน ชอ งนัน้ และจดจํางาย สนั้ ๆ ไมยาวเกนิ ไป เนื่องจากเราตองใชขอมูลสวนน้ีไปใชแทนคาตัวแปรในไฟล PHP ตอไป ซึ่งในที่นจี้ ะมี กลองรับขอมูลบรรทัดเดียว อยู 2 กลอ ง ตง้ั ช่อื วา username และ name ภาพประกอบที่ 6.10 การกาํ หนดคา properties ของกลองรับขอ มลู บรรทัดเดยี ว ทีม่ า: (ภาพโดยผูเขยี น, 2564) 113

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง สคริปตข องกลองรบั ขอ มูลบรรทัดเดียว หากตองการสรางกลองรับขอมูลบรรทัดเดียวดวยการเขียนสคริปตแทนการใชเครื่องมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติใหกับแท็กมี รูปแบบ ดังน้ี รูปแบบการกําหนดคณุ สมบัติใหแ ท็ก <input> ประเภท Text <input type=\"ชนดิ กลอ งขอ ความ\" name=\"ชอื่ กลอ งขอความ\" size=\"ความกวางกลอ งขอ ความ\" maxlength= \"จํานวนตวั อกั ษรสงู สดุ \" placeholder=\"ตวั อยางขอ ความ\"> กลอ งรับรหสั ผา น (PasswordField) จะใชในการรบั ขอ มูลประเภทรหัสผาน (Password) โดยเฉพาะเน่ืองจากเม่ือผูใชกรอกขอมูล ลงในกลองรับรหัสผา นจะปรากฏเปน เครอื่ งหมายดอกจนั (*) แทนตัวอักษรแตละตัว เพื่อปองกันไมให เห็นส่ิงที่พิมพลงไป ซ่งึ มวี ธิ สี ราง ดังน้ี 1. คลกิ ทต่ี ําแหนงท่จี ะวางกลองรับรหัสผา น แลว คลกิ ที่ แท็บเครอ่ื งมอื Forms 2. คลิกท่ีปุม Password 3. จะปรากฏขอความพรอมกับกลองรับรหัสผาน ใหลบขอความออกใหเหลือแคกลองรับ รหสั ผา น ภาพประกอบท่ี 6.11 การแทรกกลอ งรบั รหัสผาน (PasswordField) ทมี่ า: (ภาพโดยผเู ขียน, 2564) 114

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 4. คลิกที่กลองรับรหัสผานท่ีสราง จะปรากฎ properties panel ของกลองรับรหัสผาน ประเภท Password ขึ้นมาซ่ึงสามารถกําหนดคุณสมบัติของกลองรับรหัสผานไดตามตองการ โดยใน ที่น้ตี ้ังชือ่ กลอ งวา password ภาพประกอบที่ 6.12 การกาํ หนดคา properties ของกลอ งรับรหัสผา น (PasswordField) ท่มี า: (ภาพโดยผเู ขียน, 2564) สครปิ ตของกลอ งรับรหัสผา น หากตองการสรางกลองรับรหัสผานดวยการเขียนสคริปตแทนการใชเครื่องมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติสามารถ กําหนดไดเหมือนกับแท็ก <input> ประเภท Text แตกตางกันที่ชนิดของกลองขอความ ซึ่งกลองรับ รหัสผานจะกําหนดเปน ชนิดเปน type=\"password\" กลอ งรับขอ ความหลายบรรทดั (TextArea) เหมาะสําหรับเปนกลองรับขอความท่ีมีเนื้อหายาวๆ เชน กลองรับท่ีอยู หรือกลองรับความ คิดเหน็ เปนตน ซ่งึ มวี ิธีสรา ง ดังน้ี 1. คลิกท่ตี าํ แหนงที่จะวางกลอ งรับรหัสผา น แลว คลกิ ท่ี แท็บเครือ่ งมือ Forms 2. คลิกท่ีปมุ TextArea 3. จะปรากฏขอความพรอมกบั กลองรับขอ ความหลายบรรทดั ใหลบขอความออกใหเหลือแค กลองรับขอ ความหลายบรรทดั ภาพประกอบท่ี 6.13 การแทรกกกลองรับขอความหลายบรรทัด (TextArea) ท่ีมา: (ภาพโดยผูเขยี น, 2564) 115

4. คลิกที่กลองรับขอความหลายบรรทัดท่ีสราง จะปรากฎ properties panel ของกลองรับ ขอความ หลายบรรทัด TextArea ขึ้นมาซ่ึงสามารถกําหนดคุณสมบัติของกลองรับขอความหลาย บรรทัดได ดังน้ี - Name คือ กาํ หนดชอื่ ของกลอ งรบั ขอความหลายบรรทดั - Cols คือ กาํ หนดจาํ นวนตวั อกั ษรใน 1 บรรทัด - Rows คือ กําหนดจํานวนบรรทัด - Max Length คอื กําหนดตวั อักษรทใ่ี สไดม ากทสี่ ุด - Place Holder คือ กําหนดขอ ความตัวอยาง โดยในที่นี้ตงั้ ชือ่ กลองวา address มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ภาพประกอบท่ี 6.14 การกาํ หนดคา properties ของกลอ งรบั ขอความหลายบรรทัด (TextArea) ทมี่ า: (ภาพโดยผูเขยี น, 2564) สคริปตของกลองรบั ขอความหลายบรรทัด หากตองการสรางกลองรับขอความหลายบรรทัดดวยการเขียนสคริปตแทนการใชเคร่ืองมือ ของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <textarea> โดยการกําหนดคุณสมบัติใหกับ แทก็ มีรปู แบบ ดังนี้ รูปแบบการกาํ หนดคณุ สมบตั ิใหแ ท็ก <textarea> < textarea name=\"ชื่อกลอ งขอ ความ\" cols=\"จํานวนตวั อกั ษรใน 1 บรรทัด\" rows=\"จํานวนบรรทดั \" maxlength=\"จาํ นวนตัวอกั ษรสงู สุด\" placeholder=\"ตัวอยางขอความ\"> </textarea> การใชงานปุมตัวเลอื ก นอกจากการใหผูใชกรอกขอมูลเปนขอความแลว ในกรณีที่ขอมูลเปนทางเลือก เราสามารถ สรางตวั เลอื กใหผูใชคลกิ เลอื กตอบได โดยสรา งขอ มูลเปน แบบปุมตัวเลอื กซงึ่ มอี ยู 2 ประเภท คือ ปุมตัวเลือกแบบปมุ กลม ปุมตัวเลือกแบบนี้มีลักษณะเปนปุมกลม และใน 1 ชุดคําถามผูใชสามารถเลือกคําตอบได เพยี งแค 1 คําตอบเทา นัน้ เชน เพศ, ศาสนา หรือขอ สอบแบบเลือกตอบ ซ่ึงมวี ิธสี ราง ดังนี้ 1. คลิกทีต่ ําแหนงท่ีจะวางปุมตัวเลือกแบบปมุ กลม แลวคลกิ ที่ แท็บเครอ่ื งมอื Forms 2. คลกิ ที่ปุม Radio Button Group 116

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 3. จะปรากฏหนาตาง Radio Group ขน้ึ มาใหก ําหนดคาดงั นี้ Name : ตงั้ ชื่อกลุมของปุม Radio Label : พมิ พตัวเลอื กตามตอ งการ ในที่น้ี กําหนดเปน เพศ ไดแ ก ชาย และหญิง Value : ระบุคาแตละตัวเลือกวาจะใหจัดเก็บเปนคาอะไร ซึ่งสวนนี้จะถูกสงขอมูล ไปใชในไฟลส คริปตต อ ไป ในทีน่ ีร้ ะบุ male และ female ตามลําดับ : สามารถคลกิ ที่ + เม่ือตองการเพ่ิมตัวเลือก หรือคลิกท่ี – เม่ือตองการลบ ตัวเลอื ก 4. แลว คลกิ ปมุ OK ภาพประกอบท่ี 6.15 การแทรกปมุ ตัวเลือกแบบปุม กลม ทม่ี า: (ภาพโดยผเู ขยี น, 2564) 5. หากตองการกําหนดใหปุมตัวเลือกแบบปุมกลม มีการเลือกท่ีตัวเลือกเพศชายกอนเสมอ สามารถเขาไปกําหนดใน properties panel ของปุมตัวเลือกแบบปุมกลมนั้นๆ โดยเลือกต๊ิกถูกที่ คําสง่ั Checked สครปิ ตของปุมตวั เลือกแบบปุมกลม หากตองการสรางปุมตัวเลือกแบบปุมกลมดวยการเขียนสคริปตแทนการใชเคร่ืองมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติใหกับแท็กมี รูปแบบ ดังน้ี รูปแบบการกาํ หนดคุณสมบัติใหแ ทก็ <input> <input type=\"radio\" name=\"ช่อื ของกลมุ ตวั เลือก\" value=\"คาของตวั เลือก\"> <label> ขอความทีต่ อ งการใหแ สดงเปน ตัวเลอื กขางปมุ </label> 117

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ปมุ ตวั เลอื กแบบปุมเหลี่ยม (CheckBox) เปนปุมตัวเลือกที่คลายตัวเลือกแบบปุมกลม แตแตกตางกันตรงที่ปุมตัวเลือกแบบปุมเหลี่ยม มีลกั ษณะเปนส่เี หลี่ยมและสามารถเลือกไดม ากกวา 1 ตัวเลือก เชน ตัวเลือกเก่ียวกับความชอบ, หรือ ขอสอบท่ีใหเลอื กมากกวา 1 ขอ เปนตน ซ่งึ มีวิธสี รา ง ดงั น้ี 1. คลกิ ท่ีตําแหนง ท่ีจะวางปมุ ตัวเลือกแบบปุม เหลยี่ ม แลว คลิกที่ แทบ็ เครอื่ งมอื Forms 2. คลกิ ทีป่ ุม CheckBox 3. จะปรากฏขอความพรอมกับปุมตัวเลือกแบบปุมเหลี่ยม ใหลบขอความเดิมออกแลวพิมพ ตัวเลือกที่ 1 ลงไปแทน ในท่ีนี้ คือขอมูลตัวเลือกของงานอดิเรก ไดแก เลนกีฬา, อานหนังสือ, ทองเทยี่ ว, ดหู นงั เปนตน ทํา ขอ ที่ 1-3 จนครบตามจาํ นวนตัวเลือกท่ตี องการ 4. คลิกท่ีตัวเลือกแบบปมุ เหล่ียมท่ีสรา ง จะปรากฎ properties panel ของตัวเลือกแบบปุม ชนิด Checkbox ข้ึนมาซง่ึ สามารถกาํ หนดคณุ สมบตั ิของตัวเลือกแบบปมุ เหล่ียมได ดังน้ี Name : ตั้งชอ่ื ปมุ ในท่นี ้ี มี 4 ตวั เลอื ก ต้งั ชือ่ ใหเปน ตวั แปรอารเรยช ือ่ เดียวกนั ทุก ปุมเนื่องจากสามารถเลือกไดมากกวา 1 คา จึงตองกําหนดใหเปนตัวแปรอารเรย ในที่นี้ต้ังชื่อเปน hobby[ ] ทกุ ปุม Value : ระบคุ าแตล ะตัวเลือกวา จะใหจ ดั เก็บเปน คาอะไร ซงึ่ สว นนี้จะถกู สงขอมลู ไปใชในไฟลสคริปตตอไป ในท่ีน้ีระบุใหสัมพันธกับส่ิงที่จะเก็บ เชน เลนกีฬา ระบุคาของ value เปน sport , อานหนังสือ ระบุคา ของ value เปน book เปนตน Checked : สามารถคลกิ เลอื กใหต วั เลอื กทีต่ อ งการเลอื กเปนคา เริ่มตน ภาพประกอบที่ 6.16 การกาํ หนดคา ของปมุ ตัวเลอื กแบบปมุ เหลยี่ ม (CheckBox) ท่มี า: (ภาพโดยผูเขียน, 2564) สครปิ ตข องปมุ ตวั เลอื กแบบปมุ เหล่ียม หากตองการสรางปุมตัวเลือกแบบปุมเหล่ียมดวยการเขียนสคริปตแทนการใชเครื่องมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติใหกับแท็กมี รูปแบบ ดงั นี้ 118

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงรูปแบบการกําหนดคุณสมบัติใหแ ท็ก <input> <input type=\"checkbox\" name=\"ช่อื ของปมุ แตล ะตวั เลือก\" value=\"คา ของตวั เลอื ก\"> <label> ขอ ความทต่ี องการใหแสดงเปนตวั เลอื กขางปุม </label> การใชกลอ งตวั เลือกแบบปอบอพั เมนู เปนกลองตัวเลือกแบบแสดงรายการข้ึนมาใหเห็นเพียงรายการเดียว เมื่อคลิกที่ลูกศรเมนู รายการอืน่ ๆจงึ จะปรากฎขึน้ มาใหคณุ เลือก ซงึ่ มวี ิธีสราง ดังน้ี 1. คลกิ ทต่ี ําแหนงทจี่ ะวางกลอ งตวั เลอื กแบบปอบอัพเมนู แลวคลิกที่ แทบ็ เครอื่ งมือ Forms 2. คลิกทีป่ มุ Select 3. จะปรากฏขอ ความพรอ มกับกลอ งตวั เลอื กแบบปอบอพั เมนู ใหลบขอ ความออกใหเหลือแค กลองตวั เลือกแบบปอ บอัพเมนู ภาพประกอบที่ 6.17 การแทรกกลองตัวเลือกแบบปอบอัพเมนู ทีม่ า: (ภาพโดยผูเขยี น, 2564) 4. คลิกที่กลองตัวเลือกแบบปอบอัพเมนูท่ีสราง จะปรากฎ properties panel ของกลอง ตัวเลือกแบบปอบอัพเมนูประเภท select ข้ึนมาใหตั้งช่ือใหกับกลอง ในที่น้ีตั้งชื่อวา age แลวคลิกที่ ปมุ List Values… 5. ในหนา ตาง List Values… ใหกรอกช่ือตัวเลือกรายการ ลงในชอ ง Item Label และกรอก 119

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงคาของตัวเลือกรายการ ลงในชอง Value โดยจะต้ังใหเหมือนกับช่ือก็ได สามารถคลิกท่ี + เม่ือ ตองการเพม่ิ ตวั เลอื ก หรือคลกิ ที่ – เมื่อตอ งการลบตวั เลอื ก 6. แลว คลกิ ปุม OK ภาพประกอบที่ 6.18 การกําหนดคาของกลองตัวเลอื กแบบปอบอัพเมนู ท่ีมา: (ภาพโดยผเู ขยี น, 2564) 7. จากนั้นสรางกลองตัวเลือกแบบปอบอัพเมนูเพื่อรับขอมูล รูจักเว็บไซตจากแหลงใด ไดแก ใบปลวิ , หนงั สือพิมพ, หนังสือ เปน ตน โดยทําซํ้าในขัน้ ที่ 1-6 อีกครง้ั สคริปตข องกลองตัวเลือกแบบปอ บอพั เมนู หากตองการสรางกลองตัวเลือกแบบปอบอัพเมนู ดวยการเขียนสคริปตแทนการใชเคร่ืองมือ ของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <select> โดยการกําหนดคุณสมบัติใหกับ แท็กมรี ปู แบบ ดังน้ี รปู แบบการกําหนดคณุ สมบตั ใิ หแ ท็ก < select > < select name=\"ชื่อกลอ งตัวเลือก\"> <option value=\"คา ของตัวเลอื กที่ 1\" selected=\"selected\">ชื่อตวั เลอื กท่ี 1</option> <option value=\"คาของตวั เลอื กท่ี 2\" >ชื่อตัวเลอื กท่ี 2</option> <option value=\"คา ของตัวเลอื กท่ี 3\" >ช่ือตัวเลือกท่ี 2</option> <option value=\"คา ของตัวเลอื กที่ n\" >ช่อื ตัวเลอื กท่ี n</option> </select> การใชปมุ ส่ังงานแบบตางๆ เม่ือคุณสรางฟอรมรับขอมูลจนครบแลว ลําดับตอไปคือ การสรางปุม เนื่องจากปุมน้ีจะเปน ตัวสงขอมูลท้ังหมดไปยังไฟลสคริปต (ที่ระบุในชอง Action ของฟอรม) เพื่อดําเนินการตอไป โดยปุม สงั่ านแบง ออกเปน 2 ประเภท ดงั นี้ 120

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ปุมสงขอมลู (Submit) จะทําหนาที่สงขอมูลที่ผูใชกรอกไปประมวลผลตอยังไฟสคริปตท่ีตองการ โดยมีขั้นตอนการ สรา ง ดังน้ี 1. คลกิ ที่ตาํ แหนง ที่จะวางปุมสง ขอมลู แลวคลกิ ที่ แทบ็ เครือ่ งมือ Forms 2. คลิกท่ีปุม Submit Button 3. จะปรากฏปมุ พรอ มขอความในปุม วา submit 4. คลิกท่ีปุมสงขอมูลที่สราง จะปรากฎ properties panel ของปุมสงขอมูลประเภท Submit Button ข้ึนมา เราสามารถต้ังชื่อใหกับปุมไดที่ชอง Name และสามารถกําหนดขอความใน ปมุ ไดทช่ี อง Value ในที่น้ีต้ังช่ือปุมวา btnSubmit และกําหนดขอความในปมุ วา สมัคร ภาพประกอบท่ี 6.19 การกําหนดคา ของปมุ สงขอ มูล (Submit) ทมี่ า: (ภาพโดยผเู ขียน, 2564) สคริปตข องปมุ สงขอมลู หากตองการสรางปุมสงขอมูล ดวยการเขียนสคริปตแทนการใชเคร่ืองมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติใหกับแท็กมี รูปแบบ ดังน้ี รปู แบบการกาํ หนดคณุ สมบตั ใิ หแทก็ <input> < input type =\"submit\" name=\"ชอื่ ปมุ \" value=\"ขอ ความในปุม \"> ปมุ ลางขอมลู (Reset) จะทําหนาท่ีลบขอมูลท้ังหมดที่ผูใชกรอกเขามาในฟอรมออกไป เหมือนกับการเคลียรคา ทงั้ หมดเพอ่ื กรอกใหมน น่ั เอง โดยมีข้นั ตอนการสราง ดงั นี้ 1. คลิกทีต่ ําแหนง ทีจ่ ะวางปุมลา งขอมลู แลวคลิกท่ี แทบ็ เคร่อื งมือ Forms 2. คลกิ ท่ปี ุม Reset Button 3. จะปรากฏปมุ พรอ มขอความในปมุ วา Reset 121

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง 4. คลิกท่ีปุมลบขอมูลท่ีสราง จะปรากฎ properties panel ของปุมลบขอมูลประเภท Reset Button ขนึ้ มา เราสามารถตง้ั ชอ่ื ใหกับปุมไดที่ชอง Name และสามารถกําหนดขอความในปุม ไดท ่ชี อง Value ในท่ีนตี้ ง้ั ช่ือปุมวา btnReset และกําหนดขอ ความในปุมวา ยกเลกิ ภาพประกอบท่ี 6.20 การกําหนดคาของปมุ ลางขอมูล (Reset) ทม่ี า: (ภาพโดยผูเขียน, 2564) สคริปตของปุมสงขอ มลู หากตองการสรางปุมลบขอมูล ดวยการเขียนสคริปตแทนการใชเครื่องมือของ Dreamweaver ตองเขียนสคริปตใชงานผานแท็ก <input> โดยการกําหนดคุณสมบัติใหกับแท็กมี รูปแบบ ดังน้ี รปู แบบการกาํ หนดคุณสมบัตใิ หแท็ก <input> < input type =\"reset\" name=\"ช่ือปมุ \" value=\"ขอความในปมุ \"> (อนรรฆนงค คุณมณ,ี 2555) การสง ขอ มูล เมอ่ื เราสรางองคประกอบตา งๆ ของฟอรมครบแลว เราสามารถทดสอบการแสดงผลผานเว็บ เบราวเ ซอร โดยคลิกไอคอน แลว เลอื ก Preview Browser ทเี่ บราวเ ซอรตามตองการ ผลการทาํ งาน ดังน้ี 122

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงภาพประกอบที่ 6.21 ผลการสรา งแบบฟอรมออนไลน ที่มา: (ภาพโดยผูเ ขยี น, 2564) ลําดับถัดไปเราจะทําการเขียนโปรแกรม เพ่ือทําการนําขอมูลจากฟอรมไปประมวลผล จาก ฟอรมสมัครสมาชิกขางตน เม่ือผูใชกรอกขอมูลแลวคลิกท่ีปุมสมัคร เพื่อสงขอมูล ขอมูลสมาชิกจะถูก สงไปยังไฟลที่ช่ือวา insertMem.php เพ่ือทําการประมวลผล ซ่ึงระบุไวในคําส่ัง action ในแท็ก <form> ดังน้ี <form action=\"insertMem.php\" method=\"post\" name=\"formRegis\"> ในสวนของไฟล insertMem.php เราจะทําการเขียนโปรแกรมภาษา PHP เพ่ือรับคาท่ีผูใช นาํ เขา ผานตัวแปร $_POST หรอื $_GET (ขน้ึ อยูก ับวาเราเลือกสงขอมูลดวยวธิ ใี ด) โดยใชช ่อื ของชอง รับขอมูลเปนอินเด็กซ เชน $_POST['name'] เปนคาในชอง ชื่อ-นามสกุล สวน $_POST['address'] เปน คา ในชองทีอ่ ยู เปน ตน การแสดงผลลัพธวามีขอมูลนําเขาคืออะไร จะใชคําสั่ง echo พิมพคาของชองรับขอมูลตางๆ ผา นตัวแปร $_POST ทีอ่ า งองิ ดว ยชอ่ื ชองรับขอมูลน้ันๆ ดังน้ัน ไฟล insertMem.php สามารถเขียน ได ดงั น้ี <?php echo \"ผูใชไดสมัครสมาชิกโดยมีขอ มลู ดงั น้\"ี ; echo \"ชอ่ื username : \". $_POST['username'] . \"<br>\"; echo \"ช่ือ-นามสกลุ : \". $_POST['name'] . \"<br>\"; echo \"ที่อยู : \". $_POST['address'] . \"<br>\"; echo \"เพศ : \". $_POST['sex'] . \"<br>\"; echo \"อายุ : \". $_POST['age'] . \"<br>\"; echo \"งานอดเิ รก : \"; for($i=0;$i<count($_POST[\"hobby\"]);$i++1)23 { if($_POST[\"hobby\"][$i]!= \"\")

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง ผลการทํางาน ดงั น้ี ภาพประกอบที่ 6.22 ผลการสรา งแบบฟอรม สง ขอมูลแสดงผลผา นเวบ็ ทม่ี า: (ภาพโดยผูเ ขียน, 2564) ผลลัพธที่ไดคือการนําคาที่ผูใชกรอกผานฟอรมมาแสดงผลดวยคําสั่ง echo ผานตัวแปร $_POST ใชชอื่ ของชองรบั ขอมลู แตละตัวเปนอินเด็กซ เชน หากตองการแสดงผลชื่อ-สกุลที่ผูใชกรอก ใหพ มิ พ echo $_POST['name'] ; เปน ตน name ก็คือช่ือของกลอ งรบั ขอมลู นั่นเอง สวนท่ีพิเศษกวา ขอมูลสวนอื่นก็คือ งานอดิเรก ท่ีขอมูลเปนฟอรม checkbox ท่ีเก็บขอมูลแบบอารเรย คือ สามารถมี ขอมลู ไดม ากกวา 1 คา เลยตองใชค าํ ส่งั วนลปู for มาชวยในการแสดงผลขอมูลที่อยูในอารเรย และใช คําสั่งควบคุม if มาตรวจสอบวา ขอมูลในอารเรยในแตละอินเด็กซไมใชคาวาง ถาไมใชคาวางจริง จึง แสดงผลขอ มลู ในอารเ รยในตาํ แหนง นั้นๆออกมา (ชาญชัย ศภุ อรรถกร, 2560) 124

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการสง ขอมูลไปยงั เว็บเซิรฟ เวอร การสงขอ มลู ไปยังเวบ็ เซริ ฟเวอรม ี 2 วิธี ดังนี้ การสงขอ มลู แบบ POST POST เปน การสงขอมลู จากฟอรมไปยังสคริปตโ ดยตรงไมผาน URL ทาํ ใหเ ราไมสามารถ มองเหน็ ขอ มูลดังกลาวไดดว ยวิธปี กติ แบบน้จี ึงเหมาะกบั หนา จอ Login หรอื อมีขอ มลู จาํ นวนมากๆ โดยสามารถระบวุ ิธกี ารสงแบบนผี้ านแท็ก <form> ดงั น้ี <form action=\"insertMem.php\" method=\"post\" name=\"formRegis\"> ซ่งึ วธิ นี ี้จะสงผานตัวแปร $_POST ซง่ึ หมายถงึ ตวั แปรทส่ี รา งขน้ึ ไวใ นไฟล PHP เพ่ือใชใ นการ รับคาของตวั แปรทสี่ งมาจากฟอรม HTML ผา นทาง METHOD หรอื วิธกี ารสง ขอมูลแบบ POST รปู แบบ ดังนี้ $_POST['ช่ือของกลองรบั ขอมูล']; การสง ขอ มลู แบบ GET GET เปน การสงขอมลู จากฟอรม ผา นทาง URL ของเว็บเพจโดยตรง วิธนี ไ้ี มปลอดภัยเพราะ ขอมูลทสี่ งไปใหไฟลสคริปตจะถกู แสดงในรูปแบบขอความใน URL ซง่ึ เราจะเหน็ ในชอง Address Bar ของเบราวเซอร การสงวธิ ีนีจ้ ะไมเหมาะกบั ขอมูลที่เปนความลบั โดยสามารถระบุวิธกี ารสง แบบนผี้ าน แท็ก <form> ดงั น้ี <form action=\"insertMem.php\" method=\"get\" name=\"formRegis\"> ซ่ึงวธิ ีน้ีจะสงผา นตัวแปร $_GET ซึ่งหมายถึง ตวั แปรท่ีสรา งข้ึนไวใ นไฟล PHP เพื่อใชใ นการ รับคา ของตัวแปรท่สี งมาจากฟอรม HTML ผา นทาง METHOD หรือวิธีการสง ขอมูลแบบ GET รปู แบบ ดงั น้ี $_GET['ชอ่ื ของกลองรับขอมูล']; (อนรรฆนงค คุณมณ,ี 2555) บทสรุป ระบบการทํางานบนเว็บน้ันมีหลากหลายรูปแบบ ยกตัวอยางเชน ระบบการรับสมัครสมาชิก ซง่ึ จะมีแบบฟอรมใหผ ใู ชก รอกรายละเอียดตางๆ แลวจะถูกนําไปประมวลผลตอไป ระบบตะกรา หรือ รถเข็น สําหรับใหผูใชเลือกซ้ือสินคาแลวระบบจะคํานวณราคารวมใหอัตโนมัติ เปนตน เราจะเห็นวา 125

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงการทํางานดังกลาวตองมีสวนของการรับขอมูลนําเขาเพ่ือนําไปประมวลผล ซ่ึงเรียกสวนน้ีวาฟอรม หมายถึง สวนที่ทําหนาที่รับขอมูลแลวสงตอไปใหกับไฟลสคริปตที่เราเขียนขึ้นเพ่ือจัดการกับขอมูล นั่นเอง ฟอรมรับขอมูลนั้นตองสรางใหอยูภายใตแท็ก <form> ซึ่งมีหลายประเภท ไดแก กลองรับ ขอความ (TextField), ปุมตัวเลือก, ตัวเลือกแบบปอบอัพเมนู, ปุมสั่งงาน ซ่ึงวิธีการสงขอมูลมี 2 วิธี ไดแ ก แบบ POST และแบบ GET คาํ ถามทบทวน 1. ฟอรมคอื อะไร มีความสําคัญอยา งไร 2. จงอธบิ ายองคประกอบของฟอรมวามอี ะไรบาง 3. จงอธิบายวิธกี ารสรา งฟอรม 4. การสรางฟอรมตองเริ่มจากการใชคําส่ังอะไรกอ นเสมอ 5. ฟอรม แบบที่ใหเลือกตอบไดเ พยี ง 1 ขอ คือฟอรม ประเภทใด 6. ฟอรมแบบทีใ่ หเ ลือกตอบไดม ากกวา 1 ขอ คือฟอรมประเภทใด 7. การสรางฟอรมสงขอมูลทด่ี ีควรมลี กั ษณะอยางไร 8. ฟอรม แบบใดที่จะตองสรางเปนจุดสดุ ทา ยของฟอรมเสมอ 9. จงอธิบายความแตกตา งระหวา งการสงขอมูลแบบ POST และแบบ GET 10. หากตอ งการปดขอมูลเปนความลับตองสงดว ยวธิ กี ารสงแบบใด เอกสารอา งองิ อนรรฆนงค คุณมณ.ี (2555). พัฒนาเวบ็ App แบบมืออาชีพดวย PHP+AJAX และ jQuery. นนททบรุ ี : ไอซีด.ี ชาญชยั ศภุ อรรถกร. (2560). สรา งเวบ็ แอพพลิเคชัน PHP MySQL+AJAX jQuery ฉบบั สมบูรณ. กรุงเทพฯ : รีไววา. 126

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบง แผนบรหิ ารการสอนประจําบทที่ 7 หัวขอ เนอ้ื หา 1. รูจ ักและใชงาน Cookie 2. รจู ักและใชงาน Session 3. ฟง กชนั ทใ่ี ชง านกบั ตวั แปร Session 4. ฟงกชนั session_start() 5. ฟงกชนั session_destroy() วตั ถปุ ระสงคเชิงพฤติกรรม เมอ่ื นักศกึ ษาเรียนจบบทเรยี นนี้แลวสามารถ 1. อธิบายหลกั การทาํ งานของ Cookie ได 2. อธบิ ายวธิ ีการสรา งตัวแปร Cookie ได 3. สามารถเรียกใชงานตวั แปร Cookie ได 4. อธบิ ายหลกั การทํางานของ Session ได 5. อธบิ ายวธิ ีการสรางตวั แปร Session ได 6. สามารถเรียกใชงานตัวแปร Session ได 7. สามารถใชงานฟง กช นั ที่ทเี่ ก่ยี วตวั แปร Session ได วธิ สี อนและกิจกรรมการเรยี นการสอน 1. วิธีสอน 1.1 วิธกี ารสอนแบบบรรยาย โดยใหน ักศกึ ษาฟงบรรยายจากเอกสารประกอบการสอน วิชา การพฒั นาฐานขอมูลบนเว็บ 1.2 อภิปรายรวมกนั ในช้ันเรียน 1.3 ตอบคําถามผาน Kahoot 2. กิจกรรมการเรียนการสอน 2.1 คาํ ถามทบทวน 2.2 แบบฝกปฏิบัติ เรอ่ื ง การสรางตวั แปร Cookie และ Session 2.3 Active Learning แบบ PLC 2.4 เลน เกมตอบคาํ ถามผาน Kahoot 127

มหา ิวทยา ัลยราช ัภฏห ู่ม ้บานจอม ึบงสอื่ การเรยี นการสอน 1. เอกสารประกอบการสอน วชิ า การพัฒนาฐานขอ มลู บนเวบ็ 2. เวบ็ ไซตท่มี เี น้ือหาเกี่ยวขอ งกบั รายวิชา 3. ส่ือสงั คมออนไลน 4. เกม Kahoot การวัดผลและการประเมินผล 1. สงั เกตการณม สี วนรวมและการเลน เกมถาม-ตอบ 2. การทาํ งานตามที่ไดร ับมอบหมาย 3. การทําคําถามทบทวน 4. การทําแบบฝก ปฏิบตั ิ เรอ่ื ง การสรางตวั แปร Cookie และ Session 128


Like this book? You can publish your book online for free in a few minutes!
Create your own flipbook