Book sru

2,698 views

Published on

0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
2,698
On SlideShare
0
From Embeds
0
Number of Embeds
20
Actions
Shares
0
Downloads
292
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Book sru

  1. 1. (1) คำนำ ในปัจจุบันเทคโนโลยีสารสนเทศมีบทบาทในชีวิตประจาวันของเรามากขึ้นการที่จะสร้างระบบงานที่ใช้ ในองค์กรในลักษณะของการเขียนโปรแกรมบนเว็บ (Web Programming) เพื่อจัดเก็บข้อมูล และสืบค้นข้อมูล ในระบบฐานข้อมูล การที่จะพัฒนาได้นั้น จาเป็นต้องมีผู้ชานาญในการพัฒนาระบบจึงจะทาให้ระบบนั้นมี ประสิทธิภาพในการใช้งาน ดังนั้นเป้าหมายสาคัญของเอกสารตารา/หนังสือ เล่มนี้จึงต้องการเสริมสร้างทักษะ ความรู้ให้กับนักศึกษาหรือผู้ที่สนใจ การเขียนโปรแกรมบนเว็บตั้งแต่เริ่มต้น จนถึงประยุกต์ใช้ในระดับมืออาชีพ ต่อไป การเขียนโปรแกรมบนเว็บนั้น มีภาษาที่ใช้สาหรับการพัฒนามีอยู่ด้วยกันหลายภาษา เช่น ASP, Perl, JSP และ PHP เป็นต้น แต่ภาษาที่ได้รับความนิยมอย่างแพร่หลาย โดยสังเกตได้จากเว็บไซต์ส่วนใหญ่ เช่น facebook.com และเว็บไซต์หน่วยงานภาครัฐและเอกชน ภาษา PHP นั้น เป็นภาษาสคริปต์ที่ทางานในฝั่ง ของเครื่องแม่ข่าย (Server Side) เพื่อประมวลผลแล้วส่งกลับมายังเครื่องที่ร้องขอในลักษณะของภาษา HTML ลักษณะสาคัญของภาษา PHP จะมีโครงสร้างที่ง่ายแก่การทาความเข้าใจ คล้ายกับภาษาซี (C Language) ซึ่ง เหมาะกับ ผู้ เริ่ มต้ น พัฒ นา และยั งสามารถเขี ย นในลั กษณะของออบเจ็ค (OOP: Object Oriented Programming) ได้อีกด้วย เหมาะสาหรับการย่อโค๊ดภาษาให้สั้นลง ฐานข้อมูลก็เป็นส่วนหนึ่งที่มีความสาคัญ สาหรับการเขียนโปรแกรมบนเว็บด้วยภาษา PHP นั้น ตัวภาษา PHP เองสามารถติดต่อกับฐานข้อมูลหลาย ชนิด เช่น Oracle, Progress, MS-Access และ MySQL เป็นต้น ใน หนังสือเล่มนี้จะใช้ฐานข้อมูล MySQL สาหรับเรียนรู้และฝึกปฏิบัติ หนั ง สื อ เล่ ม นี้ เ ขี ย นขึ้ น เพื่ อ ถ่ า ยทอดความรู้ แ ละประสบการณ์ ข องผู้ เ ขี ย น (จากประสบการณ์ สู่ ภาคปฏิบัติ) ประสบการณ์ของผู้เขียนนั้นได้มาจากงานสอน และพัฒนาเว็บ ด้วยภาษา PHP และ MySQL มา โดยตลอด เป็นเวลานานไม่น้อยกว่า 10 ปี กลั่นจากใจสู่ผู้ที่สนใจ รวมถึง นิสิต นักศึกษา ที่มีความสนใจด้าน การเขียนโปรแกรมหรือพัฒนาเว็บ นาไปศึกษาเรียนรู้ นาไปประยุกต์ใช้งานที่หลากหลายตามลักษณะงานที่ แตกต่าง ดังนั้นผู้เขียนจึงหวังว่า หลังการศึกษาเนื้อหาจากหนังสือเล่มนี้ทั้งหมดแล้ว ผู้อ่านจะสามารถนาความรู้ ไปใช้การโปรแกรมบนเว็บเพื่อใช้งานจริงต่อไป ปริญญา น้อยดอนไพร parinya-2008@hotmail.com
  2. 2. (2)
  3. 3. (3) สำรบัญ หน้ำที่ คำนำ .................................................................................................................................................... (1) สำรบัญ ................................................................................................................................................. (3) สำรบัญตำรำง ....................................................................................................................................... (9) สำรบัญภำพ ........................................................................................................................................(11) บทที่ 1 บทนำ .................................................................................................................................. 1 PHP คือ อะไร ............................................................................................................................. 1 PHP สามารถทาอะไรได้บ้าง ....................................................................................................... 1 ประวัติความเป็นมาของ PHP (History of PHP) ....................................................................... 2 PHP เวอร์ชัน 4 ........................................................................................................................... 3 PHP เวอร์ชัน 5 ........................................................................................................................... 4 PHP เวอร์ชัน 6 ........................................................................................................................... 5 MySQL คืออะไร ......................................................................................................................... 6 บทที่ 2 หลักกำรทำงำนของ PHP .................................................................................................. 11 AppServ คืออะไร .....................................................................................................................13 วิธีการติดตั้งโปรแกรม AppServ ...............................................................................................15 XAMPP คืออะไร ....................................................................................................................... 21 วิธีการติดตั้ง XAMPP บนระบบปฏิบัติ Windows ....................................................................22 การเลือกใช้เครื่องมือสาหรับการเขียนโค้ด (Choosing a Code Editor) ................................. 27 บทที่ 3 PHP เบื้องต้น .................................................................................................................... 31 การแทรกคาสั่งภาษา PHP ในเอกสาร HTML .......................................................................... 31 องค์ประกอบพื้นฐานของการเขียน PHP ................................................................................... 32 การแสดงผลข้อมูลผ่านเว็บบราวเซอร์ (Outputting Data to the Browser) ......................... 33 ชนิดข้อมูลที่รองรับใน PHP (PHP's Supported Datatypes) ................................................ 37 การแปลงชนิดข้อมูลโดยใช้ตัวแปร .......................................................................................... 40 การปรับเปลี่ยนชนิดข้อมูลแบบอัตโนมัติ (Adapting Datatypes with Type Juggling) ....... 41 ฟังก์ชันที่เกี่ยวข้องกับชนิดข้อมูล (Type-Related Function) ................................................ 41 ฟังก์ชันตรวจสอบชนิดของข้อมูล (Type Identifier Functions) ............................................ 43 คาสงวนของ PHP (Reserved Words) .................................................................................... 43 บทที่ 4 ตัวแปร ตัวดำเนินกำรและนิพจน์ (Variables, Operators and Expressions) .............. 45
  4. 4. (4) สำรบัญ (ต่อ) หน้ำที่ ตัวแปร (Variable) .................................................................................................................... 45 ขอบเขตของตัวแปร (Variable Scope) .................................................................................. 47 ตัวแปรพิเศษ (Super global Variables) ................................................................................ 41 ตัวแปรค่าคงที่ (Constants) ..................................................................................................... 53 ตัวแปรที่มีค่า Null .................................................................................................................... 54 การตรวจสอบและยกเลิกตัวแปร ............................................................................................... 55 ตัวดาเนินการ (Operators) และนิพจน์ (Expressions) ........................................................... 56 ตัวดาเนินการในการเชื่อมข้อความ (String) .............................................................................. 62 ตัวดาเนินการอื่น ๆ ....................................................................................................................66 บทที่ 5 โครงสร้ำงควบคุม (Control Structures) ....................................................................... 67 คาสั่งเงื่อนไข (Conditional Statements) .............................................................................. 67 คาสั่งทาซ้า (Looping Statements) ........................................................................................72 คาสั่งควบคุมอื่นๆ ที่เกี่ยวข้องกับคาสั่งทาซ้า (The Other Controls of Looping Statements) ........................................................................................................................... 78 บทที่ 6 ฟังก์ชัน (Functions) ....................................................................................................... 81 ฟังก์ชัน ...................................................................................................................................... 81 การเรียกใช้งานฟังก์ชันมาตรฐานของ PHP ............................................................................... 82 การสร้างฟังก์ชัน (Creating a Function) ................................................................................ 82 การเรียกใช้ฟังก์ชันที่สร้างเอง .................................................................................................... 83 ฟังก์ชันแบบมีการส่งค่าพารามิเตอร์ .......................................................................................... 83 การส่งค่ากลับจากฟังก์ชันด้วยคาสั่ง return (Returning Values from a Function) ............86 ฟังก์ชันแบบเรียกตัวเอง (Recursive Functions) .................................................................... 87 ฟังก์ชันไลบรารี (Function Libraries) ..................................................................................... 88 บทที่ 7 อำร์เรย์ (Arrays) .............................................................................................................. 91 การสร้างอาร์เรย์ (Create arrays) ............................................................................................ 91 การเข้าถึงข้อมูลภายในอาร์เรย์ ................................................................................................. 95 ฟังก์ชันอื่นๆ ที่เกี่ยวกับอาร์เรย์ ................................................................................................. 98 ฟังก์ชันในการเพิ่มสมาชิกในอาร์เรย์ ......................................................................................... 98 ฟังก์ชันในการลบสมาชิกในอาร์เรย์ ......................................................................................... 101
  5. 5. (5) สำรบัญ (ต่อ) หน้ำที่ ฟังก์ชันในการนับจานวนสมาชิกในอาร์เรย์ ............................................................................. 102 ฟังก์ชันในการเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวเลข ............................................ 104 ฟังก์ชันที่ใช้ในการเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวอักษรหรือข้อความ ............. 105 ฟังก์ชันที่ใช้สาหรับการจัดการพอยเตอร์ (Pointer) ในอาร์เรย์ ............................................... 108 ฟังก์ชันสาหรับการรวมอาร์เรย์ ................................................................................................108 ฟังก์ชันสาหรับการสลับค่าระหว่างอินเด็กซ์หรือคีย์กับค่าข้อมูลในอาร์เรย์ ..............................110 ฟังก์ชันสาหรับการค้นหาอินเด็กซ์หรือคีย์และค่าข้อมูลในอาร์เรย์ .......................................... 110 ฟังก์ชันสาหรับการหาค่าข้อมูลสมาชิกที่เหมือนและแตกต่างกันในอาร์เรย์ ............................ 111 การใช้ข้อมูลจากอาร์เรย์ $_SERVER ...................................................................................... 112 การใช้ข้อมูลจากอาร์เรย์ $_FILE ............................................................................................ 114 บทที่ 8 สตริง ตัวเลข และเวลำ ................................................................................................... 117 ฟังก์ชันเกี่ยวกับสตริง .............................................................................................................. 117 ฟังก์ชันเกี่ยวกับรหัสแอสกี (ASCII) ......................................................................................... 117 ฟังก์ชันเกี่ยวกับการหาขนาดของสตริง ................................................................................... 118 ฟังก์ชันในการเปลี่ยนรูปแบบของตัวพิมพ์ ............................................................................... 119 ฟังก์ชันเกี่ยวกับการแยก และรวมข้อความหรือสตริง ............................................................. 121 ฟังก์ชันเกี่ยวกับข้อความหรือสตริงย่อย .................................................................................. 122 ฟังก์ชันในการค้นหาข้อความหรือสตริง .................................................................................. 124 ฟังก์ชันในการแทนที่ข้อความหรือสตริง ................................................................................. 125 ฟังก์ชันในการตัดช่องว่างและเติมข้อความหรือสตริง .............................................................. 127 ฟังก์ชันเกี่ยวกับอักขระพิเศษของ HTML ................................................................................ 129 ฟังก์ชันเกี่ยวกับจานวนและตัวเลข .......................................................................................... 130 ฟังก์ชันเกี่ยวกับวันเวลา (Date and Time) ............................................................................132 การจัดการกับวันที่และเวลาแบบ Greenwich Mean Time (GMT) ..................................... 139 บทที่ 9 กำรจัดกำรไฟล์และไดเรกทอรี ......................................................................................... 145 การอ้างถึง Document Root .................................................................................................145 การอ้างอิงพาธแบบ Absolute ............................................................................................... 145 การอ้างอิงพาธแบบ Relative ................................................................................................. 146 การจัดการกับไฟล์ ................................................................................................................... 147
  6. 6. (6) สำรบัญ (ต่อ) บทที่ 10 บทที่ 11 บทที่ 12 บทที่ 13 หน้ำที่ การจัดการกับไดเรกทอรี ......................................................................................................... 159 การอัพโหลดไฟล์ ..................................................................................................................... 164 ฟังก์ชันการหาขนาด และชนิดของไฟล์ .................................................................................. 167 กำรจัดกำรข้อมูลจำกฟอร์ม ............................................................................................. 169 ลักษณะของฟอร์ม ...................................................................................................................169 คานิยามและการใช้งานแท็ก form ..........................................................................................170 การจัดการข้อมูลจากฟอร์มในฝั่งเซิร์ฟเวอร์ .............................................................................179 การส่งข้อมูลแบบอาร์เรย์ .........................................................................................................183 คุกกี้ เซสชั่น และกำรเชื่อมโยงระหว่ำงเพจ ..................................................................... 185 เฮดเดอร์ (Header) ................................................................................................................. 185 การส่งข้อมูลระหว่างเพจแบบ Query String ......................................................................... 186 การจัดเก็บข้อมูลแบบคุกกี้ ...................................................................................................... 187 การจัดเก็บข้อมูลแบบเซสชัน ...................................................................................................189 กำรเขียนโปรแกรมแบบ OOP .........................................................................................197 คลาส (Class) ..........................................................................................................................197 การนาคลาสมาใช้ในสคริปต์ PHP ........................................................................................... 198 ออบเจ็กต์ และอินสแตนซ์ ....................................................................................................... 198 เมธอด (Method) ................................................................................................................... 199 โมดิฟายเออร์ (Modifier) แบบ public และ private ............................................................ 201 ค่าคงที่ (Constant) .................................................................................................................204 คอนสตรักเตอร์ (Constructor) .............................................................................................. 205 โมดิฟายเออร์ Static ............................................................................................................... 206 การสืบทอด (Inheritance) ..................................................................................................... 208 กำรใช้เทคนิค AJAX ร่วมกับ PHP .................................................................................. 211 AJAX (Asynchronous JavaScript and XML) ....................................................................211 ประวัติความเป็นมา ................................................................................................................. 212 ที่มาของปัญหา ........................................................................................................................ 212 โครงสร้างของ AJAX ............................................................................................................... 213 การทางานของ AJAX ..............................................................................................................214
  7. 7. (7) สำรบัญ (ต่อ) หน้ำที่ การใช้ AJAX Framework ..................................................................................................... 215 ฟังก์ชันที่ใช้จัดการข้อมูล ......................................................................................................... 218 แนวทางการพัฒนา AJAX Application ................................................................................219 ปัญหาภาษาไทยใน AJAX ....................................................................................................... 220 การส่งผลลัพธ์กลับมาเป็น JavaScript ....................................................................................220 การอัปเดทอินพุต Select ด้วยเทคนิค AJAX ......................................................................... 224 อีเวนต์ (Event) ....................................................................................................................... 228 การกาหนดอีเวนต์ ................................................................................................................... 230 ออบเจ็กต์อีเวนต์ (Object Event) .......................................................................................... 231 อีเวนต์เกี่ยวกับเมาส์ ................................................................................................................ 232 อีเวนต์เกี่ยวกับคีย์บอร์ด .......................................................................................................... 233 บทที่ 14 ฐำนข้อมูล MySQL และกำรใช้งำน phpMyAdmin ...................................................... 241 คาสั่งพื้นฐานของ MySQL .......................................................................................................241 ลักษณะองค์ประกอบของฐานข้อมูล ....................................................................................... 243 ชนิดข้อมูลของคอลัมน์ ............................................................................................................ 244 แอททริบิวต์ของคอลัมน์ .......................................................................................................... 246 การสร้างฐานข้อมูล ................................................................................................................. 247 การสร้างตารางฐานข้อมูล ....................................................................................................... 247 การแทรก ปรับปรุง ลบ และเรียกดูข้อมูลในตาราง .................................................................251 จัดการฐานข้อมูลด้วย phpMyAdmin ....................................................................................256 การเริ่มต้นใช้งาน phpMyAdmin ...........................................................................................256 การลบฐานข้อมูล และตาราง .................................................................................................. 263 ส่วนของการใช้คาสั่ง SQL ....................................................................................................... 263 ส่วนของการค้นหา .................................................................................................................. 264 ส่วนของการกาหนดสิทธิ์ ......................................................................................................... 264 บทที่ 15 กำรใช้ PHP ร่วมกับ MySQL ..........................................................................................265 การใช้ PHP ร่วมกับ MySQL................................................................................................... 265 ฟังก์ชันสาหรับเชื่อมต่อ/ยกเลิกการเชื่อมต่อระหว่าง PHP และ MySQL ................................265 ฟังก์ชันสาหรับการเลือกฐานข้อมูล ..........................................................................................267
  8. 8. (8) สำรบัญ (ต่อ) หน้ำที่ การส่งคาสั่ง SQL ไปยังฐานข้อมูล ...........................................................................................268 การอ่านข้อมูลผลลัพธ์ ............................................................................................................. 269 การแก้ไขข้อมูลภาษาไทยกลายเป็น "?????...." ........................................................................272 การตรวจสอบการเปลี่ยนแปลงข้อมูล ......................................................................................272 การตรวจสอบข้อผิดพลาดระหว่างการทางานร่วมกับ MySQL .............................................. 275 การตรวจสอบชื่อฐานข้อมูลและตาราง ................................................................................... 275 การตรวจสอบโครงสร้างของขอบเขตข้อมูล ............................................................................ 277 บทที่ 16 กรณีศึกษำ: ระบบจัดกำรสมำชิก ..................................................................................... 281 โปรเซสการทางานของระบบจัดการสมาชิก ............................................................................ 281 อธิบายการทางานของระบบ ................................................................................................... 281 สร้างฐานข้อมูลและตาราง ...................................................................................................... 282 รายละเอียดของไฟล์ที่เกี่ยวข้อง .............................................................................................. 282 บรรณำนุกรม ...................................................................................................................................... 305
  9. 9. (9) สำรบัญตำรำง ตำรำงที่ 3.1 3.2 3.3 4.1 4.2 4.3 4.4 4.5 4.6 4.7 7.1 7.2 7.3 7.4 7.5 8.1 8.2 8.3 8.4 8.5 8.6 8.7 9.1 9.2 9.3 9.4 9.5 10.1 10.2 หน้ำที่ แสดงตัวกาหนดชนิดการแสดงผลที่ใช้ร่วมกับคาสั่ง printf ( ) ...................................................35 ตัวดาเนินการแปลงชนิดของข้อมูล (Type Casting Operators) ............................................. 40 คาสงวนของ PHP ......................................................................................................................44 ตัวดาเนินการพื้นฐานสาหรับการคานวณ .................................................................................. 57 ตัวดาเนินการสาหรับการกาหนดค่า .......................................................................................... 58 ตัวดาเนินการสาหรับเพิ่ม และลดค่า ......................................................................................... 59 ตัวดาเนินการสาหรับการเปรียบเทียบ ....................................................................................... 60 ตัวดาเนินการสาหรับการเปรียบเทียบทางตรรกะ ......................................................................60 ลาดับความสาคัญของตัวดาเนินการ .......................................................................................... 62 Escape Sequence ..................................................................................................................63 แสดงตัวอย่างข้อมูลแบบอาร์เรย์ และแสดงตาแหน่งของอินเด็กซ์ ............................................ 91 แสดงผลสรุปฟังก์ชันที่ใช้สาหรับเรียงลาดับข้อมูลในอาร์เรย์ที่มีอินเด็กซ์เป็นตัวอักษร ............ 107 สรุปฟังก์ชันที่ใช้สาหรับการจัดการพอยเตอร์ในอาร์เรย์ .......................................................... 108 แสดงค่าอินเด็กซ์หรือคีย์ของอาร์เรย์ $_SERVER .................................................................... 113 แสดงค่าอินเด็กซ์หรือคีย์ของอาร์เรย์ $_FILE .......................................................................... 114 ฟังก์ชันเกี่ยวกับรหัสแอสกี .......................................................................................................117 ฟังก์ชันในการตัดช่องว่าง .........................................................................................................128 ฟังก์ชันเกี่ยวกับการประมาณค่า ..............................................................................................130 ฟังก์ชันในการเปรียบเทียบจานวน .......................................................................................... 131 ฟังก์ชันการตรวจสอบ และจัดรูปแบบตัวเลข .......................................................................... 131 ฟังก์ชันเพิ่มเติมอื่นๆ ................................................................................................................ 132 อาร์เรย์แบบ Key/Value ที่ได้จากการใช้ฟังก์ชัน getdate ( ) ............................................... 137 ขั้นตอนการเขียนและอ่านข้อมูลในไฟล์ ...................................................................................147 ไฟล์โหมด ................................................................................................................................ 147 ฟังก์ชันที่ใช้ตรวจสอบเกี่ยวกับไฟล์ .......................................................................................... 158 ฟังก์ชันที่ใช้ตรวจสอบเวลาที่เกี่ยวข้องกับไฟล์ ......................................................................... 158 ค่าคีย์ของตัวแปร $_FILES ......................................................................................................165 ตัวรับข้อมูลที่สาคัญของฟอร์ม .................................................................................................169 แสดงแอตทริบิวต์เฉพาะแท็ก form ........................................................................................ 170
  10. 10. (10) สำรบัญตำรำง (ต่อ) ตำรำงที่ 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 13.1 13.2 13.3 14.1 14.2 14.3 14.4 14.5 14.6 14.7 14.8 16.1 16.2 หน้ำที่ แสดงแอตทริบิวต์เฉพาะแท็ก input ....................................................................................... 172 แสดงแอตทริบิวต์เฉพาะแท็ก textarea .................................................................................. 174 แสดงแอตทริบิวต์เฉพาะแท็ก label ........................................................................................175 แสดงแอตทริบิวต์เฉพาะแท็ก legend .................................................................................... 175 แสดงแอตทริบิวต์เฉพาะแท็ก select ...................................................................................... 176 แสดงแอตทริบิวต์เฉพาะแท็ก OPTGROUP ............................................................................ 177 แสดงแอตทริบิวต์เฉพาะแท็ก OPTION ...................................................................................178 แสดงแอตทริบิวต์เฉพาะแท็ก button .................................................................................... 178 แสดงอีเวนต์ของ JavaScript สาหรับกาหนดให้กับอิลิเมนต์ .................................................. 229 แสดงอีเวนต์ของ JavaScript แบบพร็อปเพอร์ตี้ .................................................................... 231 แสดงตัวอย่างรหัสที่ใช้แทนปุ่มคีย์บอร์ด ..................................................................................234 แสดงชนิดข้อมูลของ MySQL ชนิดตัวเลข .............................................................................. 244 แสดงชนิดข้อมูลของ MySQL ชนิดสตริง ................................................................................ 245 แสดงชนิดข้อมูลของ MySQL ชนิด BLOB ............................................................................. 245 แสดงชนิดข้อมูลของ MySQL ชนิด SET และ ENUM ............................................................ 245 แสดงชนิดข้อมูลของ MySQL ชนิดวันเวลา ............................................................................ 246 แสดงแอททริบิวต์ของคอลัมน์ใน MySQL ............................................................................... 246 แสดงโอเปอร์เรเตอร์ที่ใช้งานร่วมกับคาสั่ง WHERE ................................................................ 254 แสดงฟังก์ชัน Aggregate สาหรับใช้ร่วมกับ GROUP BY ....................................................... 255 ตารางข้อมูล tblcatmember ................................................................................................ 282 ตารางข้อมูล tblmember ...................................................................................................... 282
  11. 11. (11) สำรบัญภำพ ภำพที่ 1.1 1.2 2.1 2.2 2.3 2.4 2.5 2.6 2.7 2.8 2.9 2.10 2.11 2.12 2.13 2.14 2.15 2.16 2.17 2.18 2.19 2.20 2.21 2.22 2.23 2.24 2.25 2.26 หน้ำที่ ผู้ร่วมพัฒนา PHP ........................................................................................................................ 2 ผู้ร่วมพัฒนา MySQL ...................................................................................................................6 รูปแบบการติดต่อสื่อสารระหว่างเว็บบราวเซอร์และเว็บเซิร์ฟเวอร์ผ่านโปรโตคอล HTTP ........12 รูปแบบการติดต่อสื่อสารระหว่างเว็บบราวเซอร์และเว็บเซิร์ฟเวอร์เพื่อเรียกเว็บเพจธรรมดา ... 12 การร้องขอการใช้งานจากไคลเอ็นท์ ไปยังเครื่องที่ให้บริการเป็น Web Server engine ของ PHP ................................................................................................................................... 13 ภาณุพงศ์ ปัญญาดี ผู้พัฒนา AppServ ......................................................................................13 ขั้นตอนการติดตั้งโปรแกรม AppServ .......................................................................................16 แสดงรายละเอียดเงื่อนไขการ GNU License ........................................................................... 16 เลือกปลายทางการติดตั้งโปรแกรม AppServ ........................................................................... 17 เลือก Package Components ที่ต้องการติดตั้ง .......................................................................17 แสดงการกาหนดค่าคอนฟิกค่า Apache เว็บเซิร์ฟเวอร์ ........................................................... 18 แสดงการกาหนดค่าคอนฟิกของ MySQL Database ............................................................... 19 แสดงการดาเนินการติดตั้งโปรแกรม AppServ ......................................................................... 19 แสดงหน้าจอขั้นตอนสิ้นสุดการติดตั้งโปรแกรม AppServ ........................................................ 20 แสดงการสตาร์ทโปรแกรม Apache และ MySQL ...................................................................20 แสดงผลการทางานของ AppServ บนหน้าเว็บบราวเซอร์ ........................................................20 แสดงโฟลเดอร์องค์ประกอบต่างๆ ที่สาคัญของ AppServ ........................................................ 21 kai 'oswald' seidler ผู้พัฒนา XAMPP ................................................................................... 22 ขั้นตอนการติดตั้ง XAMPP ........................................................................................................ 22 ขั้นตอนการติดตั้ง XAMPP ในส่วนของการสร้าง Shortcut ใน Start menu และ Desktop...23 ขั้นตอนการติดตั้ง XAMPP ในส่วนของการทวนถามความถูกต้องของตาแหน่งติดตั้ง ............... 23 ขั้นตอนการติดตั้ง XAMPP ในส่วนของการติดตั้ง portable แบบ without drive letters..... 24 ขั้นตอนการติดตั้ง XAMPP แสดงผลการดาเนินการติดตั้ง XAMPP แบบพกพา ....................... 24 ขั้นตอนการติดตั้ง XAMPP ในส่วนของการปรับโซนเวลาในไฟล์ php.ini และ my.ini ............ 25 ขั้นตอนการติดตั้ง XAMPP ในส่วนของการปรับเปลี่ยนการใช้งานเพิ่มเติม ............................... 25 แสดงขั้นตอนการเปิด XAMPP Control Panel ....................................................................... 25 แสดงหน้าจอ XAMPP Control Panel เพื่อควบคุมโปรแกรมต่างๆ ที่เกี่ยวข้อง ......................26 แสดงผลการทางานของ XAMPP บนหน้าเว็บบราวเซอร์ .......................................................... 26
  12. 12. (12) สำรบัญภำพ (ต่อ) ภำพที่ 2.27 2.28 4.1 5.1 5.2 5.3 5.4 5.5 5.6 7.1 8.1 9.1 10.1 10.2 10.3 10.4 10.5 10.6 10.7 10.8 10.9 10.10 11.1 13.1 13.2 13.3 14.1 14.2 14.3 หน้ำที่ แสดงการสร้างโฟลเดอร์เก็บเอกสารเว็บเพจของ XAMPP ........................................................ 26 แสดงการบันทึกไฟล์ลงในโฟลเดอร์เก็บเอกสารเว็บเพจของ XAMPP เพื่อทดสอบและใช้งาน... 27 แสดงตัวอย่างตัวดาเนินการและนิพจน์ ......................................................................................58 แสดงแผนภาพการไหล (Flow Chart) ของคาสั่ง if .................................................................. 68 แสดงแผนภาพการไหลของคาสั่ง if ... else .............................................................................. 69 แสดงแผนภาพการไหลของคาสั่ง if ... elseif ............................................................................ 70 แสดงแผนภาพการไหลของคาสั่ง while ................................................................................... 72 แสดงแผนภาพการไหลของคาสั่ง do ... while ......................................................................... 73 แสดงแผนภาพการไหลของคาสั่ง for ........................................................................................ 74 แสดงหน้าเว็บเพจสาหรับเริ่มต้น Upload ไฟล์ ...................................................................... 115 แสดงตัวอย่างผลลัพธ์การสร้างปฏิทินออนไลน์ ....................................................................... 143 แสดงการเปิดไฟล์รูปภาพ ........................................................................................................ 156 แสดงตัวอย่างตัวรับข้อมูลของฟอร์ม ....................................................................................... 170 แสดงตัวอย่างผลลัพธ์ของฟอร์มโดยใช้แท็ก input ชนิด "Text" ............................................. 172 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก textarea ......................................................................173 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก label ............................................................................174 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก fieldset ในการจัดกลุ่มของแท็ก input .......................175 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTION ภายในแท็ก select ...................................... 176 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTGROUP ................................................................ 177 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก OPTION ภายในแท็ก select ...................................... 177 แสดงตัวอย่างผลลัพธ์ของการใช้แท็ก button ........................................................................ 178 แสดงการจัดการข้อมูลจากฟอร์มทางด้านเซิร์ฟเวอร์ ...............................................................179 สร้างฟอร์มสาหรับการ Login กรณีศึกษาและประยุกต์ใช้งานเซสชั่น .....................................194 เปรียบเทียบการทางานแบบเดิม กับ AJAX ............................................................................ 213 โครงสร้างของ AJAX ในปัจจุบัน ............................................................................................. 213 หลักการทางานของ AJAX ...................................................................................................... 214 หน้าล็อกอินเพื่อเข้าสู่ระบบของ phpMyAdmin เวอร์ชัน 3.5.4 ............................................ 257 หน้าเพจหลังจากล็อกอินเข้าสู่ระบบ phpMyAdmin เวอร์ชัน 3.5.4 ..................................... 257 แสดงขั้นตอนการสร้างฐานข้อมูลใหม่ ..................................................................................... 258
  13. 13. (13) สำรบัญภำพ (ต่อ) ภำพที่ 14.4 14.5 14.6 14.7 14.8 14.9 14.10 14.11 14.12 14.13 14.14 14.15 14.15 หน้ำที่ แสดงขั้นตอนการสร้างตารางใหม่ ........................................................................................... 258 แสดงขั้นตอนการสร้างขอบเขตข้อมูลในตาราง ....................................................................... 259 แสดงขั้นตอนการสร้างตารางและกาหนดขอบเขตข้อมูลในตาราง .......................................... 259 แสดงขั้นตอนการแทรกข้อมูลลงในตาราง ............................................................................... 260 แสดงตัวอย่างรายการสาหรับการแทรกข้อมูลลงในตาราง ...................................................... 260 แสดงขั้นตอนการอ่านข้อมูลในตาราง ......................................................................................261 แสดงขั้นตอนการเลือกข้อมูลเพื่อแก้ไขข้อมูล .......................................................................... 261 แสดงขั้นตอนการเลือกข้อมูลเพื่อลบข้อมูล ..............................................................................262 แสดงตัวอย่างการเลือกข้อมูลเพื่อแก้ไขโครงสร้างข้อมูล ..........................................................262 แสดงตัวอย่างการลบข้อมูลในตารางและลบตาราง ................................................................. 263 แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" ...................................................... 263 แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" เพื่อค้นหาข้อมูล ........................... 264 แสดงตัวอย่างการใช้คาสั่ง SQL ผ่าน "Run SQL Query" เพื่อกาหนดสิทธิ์ ........................... 264
  14. 14. บทที่ 1 บทนำ PHP คืออะไร PHP ย่อมาจาก ''PHP Hypertext Preprocessor'' เป็นภาษา Server-Side Script อีกภาษาหนึ่งเช่นเดียวกันกับ ASP ที่มีการทางานที่เครื่องคอมพิวเตอร์ฝั่ง Server ซึ่งรูปแบบในการเขียนคาสั่งการทางานนั้นจะมีลักษณะคล้ายกับภาษา Perl หรือภาษา C และสามารถใช้ร่วมงานกันกับ ภาษา HTML ได้อย่างมีประสิทธิภาพ หมำยเหตุ ในการสร้างเว็บจะใช้ Script อยู่ 2 รูปแบบคือ Server-Side Script เป็นลักษณะการทางานบนเครื่อง Server และแปลออกมาเป็นภาษา HTML เช่น PHP, ASP, CGI Client-Side Script เป็นลักษณะการทางานบนเครื่อง Client (เครื่องผู้ใช้) เช่น JavaScript, VBScript PHP สำมำรถทำอะไรได้บ้ำง ความสามารถของ PHP นั้นสามารถที่จะทางานในลักษณะ Dynamic Web ได้ทุกรูปแบบ เหมือนกับ CGI หรือ ASP ไม่ว่าจะเป็นการจัดการดูแลระบบฐานข้อมูล ระบบรักษาความปลอดภัย การรับ – ส่ง Cookies โดยที่ PHP นั้นสามารถที่จะติดต่อกับโปรแกรมจัดการฐานข้อมูลที่มีอยู่มากมาย ดังนี้ Adabas D InterBase Solid Microsoft Access DBase mSQL Sybase Empress MySQL Velocis FilePro Oracle Unix dbm Informix PostgreSQL MS SQL Server แต่ความสามารถที่พิเศษกว่านี้ก็คือ PHP สามารถที่จะติดต่อกับบริการต่างๆ ผ่านทางโพรโตคอล (Protocol) เช่น IMAP, SNMP, NNTP, POP3, HTTP และยังสามารถติดต่อกับ Socket ได้อีกด้วย
  15. 15. 2 บทที่ 1 บทนา ประวัติควำมเป็นมำของ PHP (History of PHP) Rasmus Lerdorf Zeev Suraski Andi Gutmans ภำพที่ 1.1 ผู้ร่วมพัฒนา PHP ที่มา: http://lerdorf.com/pics/rl.jpg , http://tec20ten.files.wordpress.com/2010/02/dsc_0156-copy.jpg และ http://tech.ccidnet.com/col/attachment/2010/6/2037287.jpg (W. Jason Gilmore: 2) PHP ถูกคิดค้นขึ้นมาในปี 1995 โดยนักพัฒนาที่ชื่อว่า Rasmus Lerdorf แต่เดิมนั้นเขาได้พัฒนาเว็บเพจของเขาเองเพียงเพื่อแนะนาประวัติส่วนตัวออนไลน์ของเขาด้วย ภาษาสคริปต์ Perl/CGI แต่ภาษาสคริปต์ดังกล่าวค่อนข้างยุ่งยากและมีข้อจากัด เป็นเหตุเริ่ มต้นให้เขา พัฒนาภาษาสคริปต์ใหม่ ง่ายต่อการพัฒนา ในช่วงเริ่มต้นพัฒนานั้น ทาหน้าที่เพียง 2 ประการเท่านั้น คือ 1)เพื่อต้องการทราบถึงผู้เข้าชมเว็บของเขามากน้อยเพียงใด และ 2)เพื่อแสดงผลจานวนผู้เข้าชมเว็บเพจ เครื่องมือในครั้งนั้นเขาได้ตั้งชื่อว่า PHP-toolset (Personal Home Page toolset) PHP-toolset มีเสียงตอบรับจากผู้ใช้งานเป็นจานวนมาก และเขายังคงพัฒนาอย่างต่อเนื่องมี การปรับแต่งการแปลงและส่งข้อมูลตัวแปรผ่าน HTML form และเปลี่ยนภาษาที่ใช้ในการพัฒนา โดยใช้ ภาษาซี (C Language) แทนภาษา Perl และเผยแพร่ผลงานของเขาในเดือนพฤศจิกายน ค.ศ.1997 เป็น เวอร์ชัน PHP 2.0 หรือรู้จักกันในนาม Personal Home Page/Form Interpreter (PHP/FI) และได้เสียง ตอบรับที่ดีจากเหล่าโปรแกรมเมอร์ทั่วโลก PHP เวอร์ชันใหม่ ได้มีการเปลี่ยนแปลงและมีทีมพัฒนาทีมงาน คือ Zeev Suraski และ Adni Gutmans ทาการวิเคราะห์พื้นฐานของ PHP/FI แต่ยังคงแนวคิดเดิม คือ ทางานผสมผสานร่วมกับภาษา HTML และเพิ่มความสมบูรณ์ของภาษา PHP มากขึ้น เป็นเวอร์ชัน 3 และเผยแพร่ในเดือนมิถุนายน ค.ศ.1998 PHP ได้มีการพัฒนาอย่างต่อเนื่องมีหลายร้อยฟังก์ชั นที่เพิ่มเข้ามาและจานวนผู้ใช้ที่กาลังเติบโต ในปี 1999 บริษัท Netcraft (http://www.netcraft.com/) ได้ทาการวิจัยทางอินเทอร์เน็ตและวิเคราะห์ ข้อมูล จากรายงานพบว่า มีผู้ใช้งานภาษา PHP มากกว่า 1 ล้านเว็บไซต์ ทาให้ PHP ได้รับความนิยมมาก ที่สุด และทีมพัฒนา Zeev Suraski และ Andi Gutmans ได้มีความคิดริเริ่มต้องการให้ PHP ทาการ ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  16. 16. บทที่ 1 บทนา 3 ประมวลผลได้เร็วขึ้นในลักษณะ parser PHP เพื่อแยกประมวลผล ร่วมกับ Zend Engine ของบริษัท Zend Technology จากัด (http://www.zend.com/) เป็นเครื่องมือหลักในการขับเคลื่อนสาคัญ ผลได้ เป็น PHP เวอร์ชัน 4 PHP เวอร์ชัน 4 เมื่อวันที่ 22 พฤษภาคม ค.ศ.2000 ประมาณ 18 เดือน หลังจากที่เผยแพร่ใช้งาน PHP เวอร์ชัน 4 อย่างเป็นทางการ หลายคนถือว่าภาษา PHP เป็นภาษาที่มีเสถียรภาพสูงภาษาหนึ่งและได้รับความนิยม อย่างแพร่หลาย ราวๆ ช่วงปลายเดือน บริษัท Netcraft ได้ประมาณการว่า PHP จะมีผู้นาไปติดตั้งและใช้ งาน ประมาณ 3.6 ด้านโดเมน (Domain) สาหรับ PHP เวอร์ชัน 4 ได้เพิ่มและปรับปรุงคุณสมบัติ ดังต่อไปนี้ กำรจัดกำรทรัพยำกรที่ดีขึ้น (Improved resource handling) ปรับแก้หนึ่งในปัญหาหลักของเวอร์ชัน 3 ให้มีความยืดหยุ่น สามารถนาไปออกแบบและ ประยุกต์ใช้กับระบบงานขนาดใหญ่ ในเวอร์ชันก่อนหน้าไม่ได้มีเจตนาจะใช้ในองค์กรขนาดใหญ่ แต่เนื่อง ด้วยมีการใช้อย่างกว้างขวางและประโยชน์ ทาให้ผู้ พัฒ นาได้คิดและพัฒ นาภาษาให้ส ามารถใช้งานได้ หลากหลาย สนับสนุนกำรเขียนโปรแกรมเชิงวัตถุ (Object-oriented support) PHP เวอร์ชัน 4 สามารถพัฒนาระบบในลักษณะของการเขียนโปรแกรมเชิงวัตถุ ซึ่งมีฟังก์ชันที่ช่วย ในการทางาน แต่ยังไม่ครอบคลุมการทางานมากเท่าไหร่ อย่างไรก็ตามคุณสมบัติใหม่มีบทบาทสาคัญและ ดึงดูดให้ผู้ใช้งานหรือนักพัฒนาระบบ ที่ต้องการพัฒนาโปรแกรมเชิงวัตถุแบบดั้งเดิม หรือเรียกว่า ภาษา OOP นอกจากนั้นยังมีคุณสมบัติ เช่น ระบบแจ้งเตือน overloading และ run-time class ที่ช่วยป้องกันปัญหา เวลาพัฒนาระบบ สาหรับการเขียนโปรแกรมเชิงวัตถุที่สมบูรณ์แบบนั้น ควรใช้ PHP เวอร์ชัน 5 สนับสนุนกำรจัดกำรเซสชั่น (Native session-handling support) การจัดการเซสชั่น HTTP ใช้ได้กับทั้งในเวอร์ชัน 3.x โดยผู้ใช้สามารถเรียกใช้งานผ่านบน phplib (http://phplib.sourceforge.net) แต่สาหรับเวอร์ชัน 4 ผู้ใช้งานสามารถใช้งานได้เลย ซึ่งได้รวม ความสามารถไว้แล้ว คุณลักษณะนี้ได้มาจากการสารวจกิจกรรมและความพึงพอใจของผู้ใช้ส่วนใหญ่ กำรเข้ำรหัส (Encryption) นาไลบรารี่มาจาก MCrypt (http://mcrypt.sourceforge.net) มารวมไว้ใน PHP เวอร์ชัน 4 ก่อนการเผยแพร่ ผู้ใช้สามารถเลือกใช้รูปแบบการเข้ารหัสได้แบบ hash โดยมีอัลกอริทึมที่ได้รวมไว้ ได้แก่ Blowfish, MD5, SHA1 และ TripleDES ฯลฯ สนับสนุน ISAPI (ISAPI support) สนับสนุน ISAPI ให้ผู้ใช้สามารถใช้ PHP ร่วมกับเว็บเซิร์ฟเวอร์ของไมโครซอฟท์ คือ IIS และ Apache เว็บเซิร์ฟเวอร์ ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  17. 17. 4 บทที่ 1 บทนา สนับสนุน COM / DCOM (Native COM/DCOM support) เปิดโอกาสให้ผู้ใช้งานสามารถเรียกใช้และทางานร่วมกันกับโปรแกรมประยุกต์บนระบบปฏิบัติ Windows สนับสนุนกำรทำงำนร่วมกับภำษำ Java (Native Java support) PHP เวอร์ชัน 4 ได้เพิ่มประสิทธิภาพในการทางานร่วมกับภาษา Java รองรับไวยำกรณ์และนิพจน์ภำษำ Perl (Perl Compatible Regular Expressions (PCRE) library) ภาษา Perl เป็นภาษาที่มีความยาวและซับซ้อน มีรูปประโยคที่เป็นอิสระ แต่การทางานของภาษา Perl เป็นภาษาที่ยอมรับอย่างกว้างขวาง มีประสิทธิภาพการ และมีบทบาทสาคัญ ดังนั้น PHP เวอร์ชัน 4 ได้รวม ฟังก์ชันการทางานของภาษา Perl ไว้ด้วย เพื่อเป็นทางเลือกหนึ่งสาหรับการพัฒนาระบบ และทา ให้ใช้งานได้ง่ายขึ้น นอกจากคุณสมบัติต่างๆ เหล่านี้ ยังมีอีกหลายร้อยฟังก์ชันที่ถูกเพิ่มเข้ามาใน PHP เวอร์ชัน 4 รองรับความหลากหลาย ไลบรารี่ และโมดูลดีๆ มากมาย จากแหล่งต่างๆ เปิดใจรับสิ่งดีๆ ที่มีอยู่ มากมาย ในสากล นามาเพิ่มขีดความสามารถของตัวเอง หลายร้อยฟังก์ชันเหล่านี้จะกล่าวถึงรายละเอียดการใช้งาน ต่อไปในหนังสือเล่มนี้ ผู้แต่งหนังสือเล่มนี้หวังเป็นอย่างยิ่งว่า ผู้อ่านจะเปิดใจรับสิ่งดีๆ ที่มอบให้แล้วนาไป พัฒนาตนเองให้มีความรู้ความสามารถ เพิ่มประสิทธิภาพแก่ตนเอง เหมือนดังเช่น PHP PHP เวอร์ชัน 5 PHP เวอร์ชัน 5 ยังคงวิวัฒนาการไม่หยุดยั้งถึงแม้ว่ารุ่นก่อนหน้าจะมีความสามารถมากมาย มหาศาลโดยการเพิ่มฟังก์ชัน ไลบรารี่ และอื่นๆ อีกมากมาย มาถึง PHP เวอร์ชัน 5 ซึ่งมีการปรับปรุงอีก มากมายเช่นเดิม เพิ่มคุณสมบัติอีกหลายประการ ผู้แต่งเองยังใช้ความสามารถของเวอร์ชัน 4 ยังไม่หมด เวอร์ชัน 5 ก็ออกมาทาหัวใจหวั่นไหวใคร่รู้ PHP 5 มีการปรับปรุงความสามารถเพิ่มเติมขึ้นมาจาก PHP 4 มากมาย ในหัวข้อนี้จะกล่าวถึง ความสามารถที่สาคัญหลัก ๆ ที่เพิ่มเติมขึ้นมาใน PHP 5 ดังนี้ 1. ความสามารถทางด้าน OOP (Object-Oriented Programming) ความสามารถทางด้านการ เขียนโปรแกรมเชิงวัตถุหรือ OOP ได้มีมาตั้งแต่ PHP 3 แล้ว และได้ปรับปรุงต่อเนื่องมาจนถึง PHP 4 แต่ ความสามารถทางด้าน OOP ใน PHP 4 นั้นยังไม่สมบูรณ์นักและยังขาดฟีเจอร์ที่สาคัญในหลายด้าน เช่น การประกาศ Constructors และ Destructors การกาหนดขอบเขตของตัวแปรและเมธอดเป็น public, protected, private เป็นต้น โดยใน PHP 5 ได้ปรับปรุงความสามารถทางด้าน OOP ให้สมบูรณ์ขึ้น ทา ให้โปรแกรมเมอร์สามารถเขียน PHP โดยใช้หลักการของ OOP ได้อย่างสมบูรณ์แบบ 2. เพิ่ม MySQLi Extension MySQL นั้นเป็นระบบจัดการฐานข้อมูลที่ได้รับความนิยมในการ นามาพัฒนา Web Application ร่วมกับ PHP มานาน โดยใน MySQL เวอร์ชัน 4.1 และเวอร์ชัน 5 ได้ ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  18. 18. บทที่ 1 บทนา 5 เพิ่มเติมฟีเจอร์ที่สาคัญมากมาย เช่น Prepared statement การเชื่อมต่อฐานข้อมูลโดยใช้ SSL การใช้ Multi-query, Transaction เป็นต้น ดังนั้น PHP 5 จึงได้มีการเพิ่ม MySQL Extention ขึ้นมาใหม่โดยใช้ ชื่อว่า MySQLi จะช่วยให้สามารถนาความสามารถใหม่ ๆ ของ MySQL ออกมาใช้ได้อย่างเต็มที่ 3. ผนวก SQLite ไว้ใน PHP แม้ว่า MySQL จะเป็นระบบจัดการฐานข้อมูลที่ได้รับความนิยมและ นามาใช้ร่วมกับ PHP มากที่สุด แต่ใน PHP 5 นั้นได้ผนวกรวมเอา SQLite ซึ่งเป็นระบบจัดการฐานข้อมูล ขนาดเล็กเข้าไว้ด้วย โดยที่ผู้ใช้ไม่ต้องติดตั้งระบบจัดการฐานข้อมูลเพิ่มเติมก็สามารถเขียนโปรแกรม PHP เพื่อติดต่อกับฐานข้อมูลได้เลย ซึ่งช่วยอานวยความสะดวกในการเขียนโปรแกรมได้มากทีเดียว 4. สนับสนุน XML และ SOAP อย่างเต็มประสิทธิภาพ ใน PHP 5 มีการปรับปรุงความสามารถ ของ XML เพิ่มเติมโดยจะมีไลบรารี libxml2 ซึ่งเป็นไลบรารีมาตรฐานที่ PHP ใช้ติดต่อกับ XML นอกจากนี้ยังปรับปรุงและเพิ่มเติมในส่วนของ DOM(Document Object Model), XSLT (Extensible Stylesheet Language Transformations) และ SimpleXML โดยการออกแบบให้สามารถทางาน ร่วมกับ XML ได้ดียิ่งขึ้น นอกจากนี้ใน PHP 5 ยังสนับสนุน SOAP ซึ่งเป็นส่วนประกอบสาคัญในการ พัฒนาเว็บเซอร์วิส 5. การตรวจจับและจั ดการข้อผิดพลาด ใน PHP 5 มีการพัฒนาระบบตรวจจับและจัดการ ข้อผิดพลาดขึ้นมา เรียกว่า exception handling ซึ่งจะคล้ายกับที่มีในภาษา Java และ C++ ซึ่งจะช่วย อานวยความสะดวกและเพิ่มประสิทธิภาพในการตรวจสอบและจัดการข้อผิด พลาดที่อาจจะเกิดขึ้ นในการ รันโปรแกรมได้ 6. เพิ่ม Iterator Iterator ใน PHP 5 เป็นการใช้คาสั่ง foreach ในการวนลูปร่วมกับข้อมูลชนิด ต่าง ๆ ได้หลายชนิด ไม่ว่าจะเป็นอ็อบเจ็กต์ต่าง ๆ เอกสาร XML โครงสร้างไดเรกทอรี่หรือผลลัพธ์จากการ query ฐานข้อมูล เป็นต้น เป็นอย่างไรกันบ้างครับกับความสามารถใหม่ ๆ ของ PHP 5 คงทาให้ผู้อ่านเห็นภาพรวมที่ชัดเจน ขึ้นและหลายคนอาจจะอยากทดลองใช้กันบ้างแล้ว ซึ่ง นอกจากความสามารถหลัก ๆ ทั้ง 6 ข้อที่ได้อธิบาย ไว้ข้างต้น PHP 5 ยังมีความสามารถที่เพิ่มเติมขึ้นใหม่อีกมากมายที่ยังไม่ได้อธิบายไว้ ณ ที่นี้ เช่น การใช้ ส่วนขยายเพิ่มเติม Tidy เพื่อให้มั่นใจได้ว่าผลลัพธ์ที่แสดงออกมานั้นอยู่รูปแบบของ HTML หรือ XHTML ที่ถูกต้อง การจัดการหน่วยความจาที่ดีขึ้นรวมไปถึงการปรับปรุงและแก้ไขข้อผิดพลาดเดิมใน PHP 4 อีก หลายจุดให้ดียิ่งขึ้น PHP เวอร์ชัน 6 PHP เวอร์ชัน 6 ปัจจุบันกาลังอยู่ในขั้นพัฒนาและปรับปรุงขณะนี้ยังเป็น Beta Version ยังคงใช้ Zend engine เป็นแกนหลัก การเปลี่ยนแปลงที่สาคัญ คือ 1. ไม่มีคุณสมบัติ register_global, magic_quote_gpc และ safe_mode ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  19. 19. 6 บทที่ 1 บทนา 2. ยกเลิกตัวแปร HTTP_*_VARS ทั้งหมด เช่น HTTP_POST_VARS และ HTTP_COOKIE_VARS เป็นต้น 3. สนับสนุนการทางานกับสตริงแบบ Unicode 4. เพิ่มชนิดข้อมูลเลขจานวนเต็มขนาด 64 บิต MySQL คืออะไร MySQL เป็ น ระบบจั ด การฐานข้ อ มู ล เชิ ง สั ม พั น ธ์ (Relational Database Management System) โดยใช้ภาษา SQL แม้ว่า MySQL เป็นซอฟต์แวร์โอเพนซอร์ส แต่แตกต่างจาก ซอฟต์แวร์โอเพนซอร์สทั่วไป โดยมีการพัฒนาภายใต้บริษัท MySQL AB ในประเทศสวีเดน โดยจัดการ MySQL ทั้งในแบบที่ให้ใช้ฟรี และแบบที่ใช้ในเชิงธุรกิจ MySQL สร้างขึ้นโดยชาวสวีเดน 3 คน และชาวฟินแลนด์ ชื่อ David Axmark, Allan Larsson และ Michael "Monty" Widenius. David Axmark Allan Larsson Michael "Monty" Widenius ภำพที่ 1.2 ผู้ร่วมพัฒนา MySQL ที่มา: http://www.mccullagh.org/db9/10d-1/david-axmark-mysql.jpg http://www.wire2011.eu/upload/participant/290/Allan_Larsson.JPG และ http://www.abclinuxu.cz/images/screenshots/2/1/150712-ulf-michael-montywidenius-13235.jpg ปัจจุบันบริษัทซันไมโครซิสเต็มส์ (Sun Microsystems, Inc.) เข้าซื้อกิจการของ MySQL AB เรียบร้อยแล้ว ฉะนั้นผลิตภัณฑ์ภายใต้ MySQL AB ทั้งหมดจะตกเป็นของบริษัทซันไมโครซิสเต็มส์ ชื่อ "MySQL" อ่านออกเสียงว่า "มายเอสคิวเอล" (maɪˌɛskjuːˈɛl) หรือ "มายเอสคิวแอล" (ในการอ่านอักษร L ในภาษาไทย) ซึ่งทางซอฟต์แวร์ไม่ได้อ่าน มายซีเควล หรือ มายซีควล เหมือนกั บ ซอฟต์แวร์จัดการฐานข้อมูลตัวอื่น ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  20. 20. บทที่ 1 บทนา 7 รุ่นของผลิตภัณฑ์ รุ่นของผลิตภัณฑ์นั้นแบ่งออกมาได้ 3 สายการผลิ ต ได้แก่ เวอร์ชันใช้ฟรี เวอร์ชันการค้า และ เวอร์ชันที่สนับสนุนกับผลิตภัณฑ์ SAP (MAX DB) ความแตกต่าง คือ เวอร์ชัน community นั้นสามารถ นาไปใช้งานได้ฟรีแต่ขาดการสนับสนุนหรือการช่วยเหลือเมื่อมีปัญหาเกิดขึ้น เวอร์ชันที่เป็นคอมเมอร์เชียลนั้น ให้บริการด้านความสนับสนุนเมื่อมีปัญหา (ซื้อบริการ) สรุปคร่าวๆ ประเภทของ MySQL ให้เลือกใช้ดังนี้ MySQL Enterprise MySQL Cluster MySQL Embedded MySQL Community (opensource) ควำมสำมำรถที่เพิ่มขึ้น ในเวอร์ชัน 5.0 มีความสามารถหลายอย่างที่สาคัญสาหรับระบบฐานข้อมูลขนาดใหญ่หรือระดับ องค์กร (Enterprise Feature) เช่น Store Procedure, database trigger, database view, database schema ซึ่งได้มีการปรับเพิ่มประสิทธิภาพในส่วนของตารางและการทาดัชนี (index) ขึ้นมา อีก ปัจจุบันเวอร์ชัน community หรือเวอร์ชันที่เสถียร (stable) 5.0 และเวอร์ชันทดสอบคือ 5.1 beta release และ 5.2 Alpha ตั้งแต่เวอร์ชัน 5.1 เริ่มสนับสนุนการทา Partition Database ตารางเวลาสาหรับเหตุการณ์ต่างๆ (Event schedule) ประเภทกำรจัดเก็บข้อมูล (Database Storage Engine) ที่สนับสนุน MyISAM ค่าปกติ (default) InnoDB สนับสนุนการทา ทรานแซคชั่น (transaction) แบบ ACID Memory การจัดเก็บในหน่วยความจา ใช้เป็นตารางชั่วคราวเพื่อความรวดเร็ว เนื่องจากเก็บไว้ใน หน่วยความจา ทาให้มีความเร็วในการทางานสูงมาก Merge เป็นการรวม Table หลาย ๆ ตัวให้แสดงผล หรือแก้ไข เสมือนเป็นข้อมูลจาก Table เดียว Archive เหมาะสาหรับการจัดเก็บข้อมูลพวก log file,ข้อมูลที่ไม่ต้องมีการ คิวรี่ (query) หรือใช้ บ่อยๆ เช่น log file เพื่อประโยชน์ในการตรวจสอบย้อนหลัง (Security Audit Information) Federated สาหรับการจัดเก็บแบบปลายทาง (remote server) แทนที่จะเป็นการจัดเก็บแบบ local เหมือนการจัดเก็บ (Storage) แบบอื่นๆ NDB สาหรับการจัดเก็บแบบ คลัสเตอร์ (cluster) CSV เก็บข้อมูลจาก Text ไฟล์โดยอาศัยเครื่องหมาย คอมมา (comma) เป็นตัวแบ่งฟิลด์ ชนิดของข้อมูลที่สนับสนุน ข้อมูลชนิดตัวเลข ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  21. 21. 8 บทที่ 1 บทนา  BIT ใช้สาหรับเก็บข้อมูลชนิดเลขสองที่มีสัญลักษณ์เพียงสองตัว ประกอบด้วย 0 (ศูนย์) กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2 ทาง เช่น ปิดกับเปิด ไม่ใช่กับใช่ เท็จกับจริง ซ้ายกับขวา เป็นต้น  TINYINT ใช้สาหรับจัดเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 8 บิต  SMALLINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 16 บิต  MEDIUMINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 24 บิต  INT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 32 บิต  BIGINT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนเต็ม ขนาด 64 บิต  FLOAT ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนจริง (เลขที่มเศษทศนิยม) ขนาด 32 บิต ี  DOUBLE ใช้สาหรับเก็บข้อมูลชนิดตัวเลขจานวนจริง เช่นเดียวกับ FLOAT ขนาด 64 บิต ข้อมูลชนิดวันที่และเวลา  DATETIME ใช้สาหรับจัดเก็บข้อมูล วันเดือนปีและเวลา ขนาด 64 บิต แสดงผลใน รูปแบบ YYYY-MM-DD HH:MM:SS  DATE ใช้สาหรับจัดเก็บข้อมูลเฉพาะข้อมูลวันเดือนปี ขนาด 24 บิต แสดงผลในรูปแบบ YYYY-MM-DD  TIME ใช้สาหรับจัดเก็บข้อมูลเฉพาะข้อมูลเวลา ขนาด 24 บิต แสดงผลในรูปแบบ HHH:MM:SS โดยที่ HHH จะคืน ค่าจาก -838 ถึง 838  TIMESTAMP ใช้สาหรับเก็บข้อมูลชนิดวันที่และเวลา เช่นเดียวกับ DATETIME แต่จะ เก็ บ ในรู ป แบบของ YYYYMMDDHHMMSS หรื อ YYMMDDHHMMSS หรื อ YYYYMMDD หรือ YYMMDD แล้วแต่ว่าจะระบุค่าแอตทริบิวต์ TIMESTAMP[(M)] โดย กาหนด M เป็น 14 หรือ 12 หรือ 8  YEAR ใช้สาหรับเก็บข้อมูลปีเท่านั้น ขนาด 8 บิต แสดงผลในรูปแบบ YYYY ซึ่งเป็นค่า ตั้งแต่ 1901 - 2155 เท่านั้น ข้อมูลชนิดสตริง  CHAR ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดได้ไม่เกิน 255 อักขระ ถ้าอักขระที่ใช้ ยาวไม่เท่ากับที่กาหนดไว้ อักขระที่เหลือ จะถูกแทนที่ด้วยช่องว่าง  VARCHAR (ย่อมาจาก Variable Character Field หมายถึง กลุ่มข้อมูลตัวอักขระที่ไม่ สามารถระบุความยาวได้ ) ใช้สาหรับเก็บข้อมูลชนิดสตริง ชนิดข้อมูลประเภท varchar สามารถเก็บข้อมูลตัวอักขระขนาดเท่าใดก็ได้ที่ไม่เกินความยาวที่จากัดไว้ (เก็บข้อมูล ตามที่รับมาจริงเท่านั้น) ขนาดสูงสุดได้ไม่เกิน 255 อักขระ ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  22. 22. บทที่ 1 บทนา 9  BINARY ใช้ส าหรั บ เก็บข้อมูล ชนิดเลขสองที่มีสั ญลั กษณ์เพียงสองตัว เหมือน BIT ประกอบด้วย 0 (ศูนย์) กับ 1 (หนึ่ง) บางครั้งอาจหมายถึงการที่มีโอกาสเลือกได้เพียง 2 ทาง เช่น ปิดกับเปิด ไม่ใช่กับใช่ เท็จกับจริง ซ้ายกับขวา เป็นต้น  VARBINARY ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดไม่เกิน 8,000 อักขระ มีลักษณะ การเก็บคล้าย VARCHA คือ การเก็บข้อมูลตามที่รับมาจริงเท่านั้น  TINYTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง ขนาดสูงสุดไม่เกิน 255 อักขระ สามารถใช้ งานฟีเจอร์ FULL TEXT SEARCH ของ MySQL  TEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่เกิน 65,535 อักขระ (64 KB) เหมาะสาหรับเก็บข้อมูลจาพวกเนื้อหาทีมีความยาวหรือจานวนมาก ่  MEDIUMTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่ เกิน 16,777,215 อักขระ (16 MB)  LONGTEXT ใช้สาหรับเก็บข้อมูลชนิดสตริง เช่นเดียวกับ TINYTEXT ขนาดสูงสุดไม่เกิน 4,294,967,295 อักขระ (4 GB)  ENUM ใช้สาหรับ เก็บ เซตของข้อมูลชุดหนึ่งที่มีจานวนสมาชิกที่กาหนดไว้แน่นอน และทราบค่าทุกตัว มักจะเป็นข้อมูลที่มีลักษณะคงที่ ขนาดสูงสุดไม่เกิน 65,535 อักขระ  SET ใช้สาหรับเก็บข้อมูลที่เป็นกลุ่มของข้อมูลที่ยอมให้เลือกได้ 1 ค่าหรือหลายๆ ค่า ซึ่ง สามารถกาหนดได้ถึง 64 ค่า ข้อมูลชนิด BLOB (Binary Large Object)  TINYBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี ได้แก่ ไฟล์ข้อมูลต่างๆ เช่น ไฟล์รูปภาพ ไฟล์มัลติมีเดีย เป็นต้น คือ ไฟล์อะไรก็ตามที่อัพโหลดผ่านฟอร์มอัพโหลดไฟล์ในภาษา HTML ขนาดสูงสุดไม่เกิน 256 ไบต์  BLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้ไม่เกิน 64,000 ไบต์  EDIUMBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้ ไม่เกิน 16 เมกะไบต์ (16 MB)  LONGBLOB ใช้สาหรับเก็บข้อมูลชนิดไบนารี เช่นเดียวกับ TINYBLOB ขนาดสูงสุดได้ไม่ เกิน 4 กิกะไบต์ (4 GB) หมำยเหตุ การกาหนดชนิด ค่าสูงสุด ค่าต่าสุด และตัวอย่างการใช้งาน สามารถอ่านรายละเอียดเพิ่มเติม ได้ ในบทที่ 14 เรื่องฐานข้อมูล MySQL และการใช้งาน phpMyAdmin ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL
  23. 23. 10 บทที่ 1 บทนา กำรใช้งำน MySQL เป็นที่นิยมใช้กันมากสาหรับฐานข้อมูลสาหรับเว็บไซต์ เช่น มีเดียวิกิ และ phpBB และ นิยมใช้งานร่วมกับภาษาโปรแกรม PHP เป็นหลัก ดังนั้นจะเห็นได้จากคู่มือคอมพิวเตอร์ต่างๆ ที่จะสอน การใช้งาน MySQL และ PHP ควบคู่กันไป นอกจากนี้ หลายภาษาโปรแกรมที่สามารถทางานร่วมกับ ฐานข้อมูล MySQL และรวมถึง ภาษาซี (C Language) ซีพลัสพลัส (C++) ซีชาร์ป (C#) ปาสคาล (Pascal) ภาษาจาวา (Java Language) ภาษาเพิร์ล (Perl Language) พีเอชพี (PHP) ไพทอน (Python) รูบี (Ruby) และภาษาอื่น ใช้งานผ่าน API สาหรับโปรแกรมที่ติดต่อผ่าน ODBC หรือ ส่วนเชื่อมต่อกับ ภาษาอื่น (database connector) เช่น ASP สามารถเรียกใช้ MySQL ผ่านทาง MyODBC, ADO, ADO.NET เป็นต้น ปริญญา น้อยดอนไพร || การเขียนโปรแกรมบนเว็บด้วย PHP ร่วมกับฐานข้อมูล MySQL

×