อารเ รยห นง่ึ มิติ อารเรยหนึ่งมติ ิ จะมองลักษณะการเก็บขอมูลเปน 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
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