PHP & MySQL Bible
จาก Wiki2
Introduction
ผมจะค่อยๆสรุปบางส่วนของหนังสือเล่มนี้ ผสมกับความคิดเห็น และความรู้ที่ได้จากหลายๆแหล่งเพื่อประโยชน์ของผู้อ่านและผมเอง เพราะเรียนที่ไรก็ได้หน้าลืมหลังต้องหาที่จดไว้ให้เป็นที่เป็นทาง เลยตั้งใจจะทำให้เป็นรูปเป็นร่างแบบค่อยเป้นค่อยไป แต่หากท่านใจร้อนสามารถคลิกเพื่อรับหนังสือเล่มนี้ฟรีเพื่อนำไปอ่านล่วงหน้า หรือหาหนังสือเล่มอื่นๆได้ที่ http://www.ebooks-space.com/ หรือจะมาช่วยกันเชียนก็เชิญได้นะครับ จะได้เป็นประโยชน์กับผุ้อื่นไวยิ่งขึ้น
Part I: PHP: The Basics
Chapter 1: Why PHP and MySQL?
PHP คืออะไร ทำไมต้องเรียน PHP
ในสมัยแรกเว็บเป็นแค่การนำเสนอข้อมูล ผู้เขียนเขียนข้อมูลเหมือนที่ผมกำลังเขียน ส่วนผู้อ่านก็มาอ่าน เราเรียกสมัยนั้นว่า Brochure Web (โบชัวร์ เว็บ) การทำเว็บสมัยก่อนอาศัย HTML และ CSS เพื่อจัดรูปแบบ ใส่รูปให้ดูสวยงาม
แต่ในยุคนี้ เว็บมีลักษณะเป็นโปรแกรมคอมพิวเตอร์ หรือที่เรียกว่า Web Application เว็บสมัยนี้นอกจากการนำเสนอข้อมูล ยังให้บริการได้ด้วย ยกตัวอย่าง Google ก็ให้บริการค้นหาเว็บ, GMail ก็ให้บริการ eMail, Google App ให้บริการ Word Processing (โปรแกรมพิมพ์งาน), Spread Sheet แบบ Excel ฯลฯ เพื่อทำให้เว็บเป็น Web Application ก็ต้องใช้เครื่องมือ HTML, CSS และ ภาษาคอมพิวเตอร์ เช่น PHP, ASP.NET, Java ฯลฯ
หากคุณต้องการทำเว็บที่โต้ตอบกับผู้ใช้ เช่นมี Form รับข้อมูลจากผู้ใช้ หรือให้บริการผู้ใช้ คุณต้องเลือกภาษาคอมพิวเตอร์ ภาษาใดภาษาหนึ่ง ซึ่งมีข้อดีข้อเสียต่างๆกัน สำหรับผม ผมเลือก PHP
สรุปแล้ว PHP คือภาษาคอมพิวเตอร์ ใช้ในการเขียนโปรแกรมในเว็บ เพื่อให้เว็บเป็น Web Application
สาเหตุที่ต้องเรียน PHP หากคุณต้องการทำเว็บให้เป็น Web Application หรือมีการโต้ตอบกับผู้ใช้ (Interactive)
PHP สำหรับคุณหรือเปล่า
ภาษาคอมพิวเตอร์ที่ใช้เขียนเว็บหรือที่เรียกว่า Server side programming language มีหลายตัวเช่น ASP.NET, ASP, ColdFusion, JavaServer Pages(jsp), Perl ฯลฯ แล้ว PHP เหมาะกับคุณหรือเปล่า
PHP คือคำตอบหาก
- ท่านต้องภาษาคอมพิวเตอร์ที่เรียนง่าย เขียนง่าย
- ท่านต้องการเสียค่าเช่า Web Server ถูกที่สุดแล้ว มี Web Server ให้บริการมากที่สุด
- ท่านคิดว่าเว็บของท่านอาจต้องย้าย Hardware และ Operating System แล้ว ท่านต้องการภาษาที่ทำงานบน Hardware และ Operating System มากที่สุด
- ท่านไม่คิดว่าทีมงานที่เขียนเว็บของท่านจะอยู่กับท่านชั่วนิรัญ ท่านต้องการโปรแกรมเมอร์ที่หาได้ง่าย ราคาไม่แพงและมีจำนวนมาก
- ท่านต้องการภาษาคอมพิวเตอร์ที่ทำงานได้เร็ว กินทรัพยากรน้อย
- ท่านต้องการภาษาคอมพิวเตอร์ที่เป็นโครงสร้าง รองรับการเขียนโปรแกรมที่นำกลับมาใช้ใหม่ได้ เป็น OOP
- ท่านต้องการภาษาที่เป็น Open Source ไม่มีค่าใช้จ่ายด้านลิกขสิทธิ์
- ท่านต้องการภาษาคอมพิวเตอร์ที่มีผู้ใช้ทั่วโลกมากที่สุด มีชุมชนที่ช่วยเหลือกันและกันแบบ Open Source
- หากท่านยังไม่แน่นใจว่าต้องการอะไรแต่ต้องการเรียนซักภาษาเพื่อใช้งาน
MySQL
MySQL เป็น SQL Relational Database Management System(RDBMS) เป็น Database ที่ใช้ได้ฟรี ซึ่งใช้ร่วมกํบ PHP ได้ราวกับกิ่งทองใบหยก
หากคุณเขียนโปรแกรม คุณต้องการที่เก็บข้อมูลไว้ถาวร และหากคุณใช้ PHP แล้ว MySQL ก็เป็นตัวเลือกที่ดีเพราะเข้ากันได้ดี มีคนใช้มาก ทำให้ขอความช่วยเหลือหรือหาเอกสารอ่านได้ง่าย
Chapter 2: Server-Side Web Scripting
การใช้งานเว็บเป็นการทำงานระหว่างคอมพิวเตอร์สองเครื่อง คือ Web Client ซึ่ง เปิด Browser อยู่ ไม่ว่าจะเป็น Firefox หรือ IE ก็ตามก็คือคอมพิวเตอร์ของเรานั่นเอง กับคอมพิวเตอร์อีกเครื่องคือ Web Server หรือ Web Hosting ที่เก็บหน้า Web Page จำนวนมากเอาไว้
การทำงานของเว็บในยุคของ HTML นั้น Web Sever หรือ Web Server จะเก็บ HTML File ซึ่งจะส่ง Web Page ให้ผู้ใช้ เมื่อทางผู้ใช้เปิด Browser เช่น Firefox หรือ IE จากนั้นพิมพ์ Domain Name เช่น http://www.beingpro.com Browser ซึ่งเป็นการส่งคำขอข้อมูลไปยัง Web Server, Web Server จะหาหน้า Web Page ที่ต้องการส่งมาให้ Web Browser เพื่อแสดงผลบนจอของผู้ใช้ เช่น File ที่ต้องการมีนามสกุล htm หรือ html โปรแกรม Apache ที่ทำงานบน web Server ก็จะส่ง File ที่ต้องการให้ Browser ได้โดยตรง
แต่หากเป็น File ที่มีนามสกุล php โปรแกรม Apache Web server จะส่งหน้าเว็บที่เราต้องการให้ทาง PHP Preprocessor ก่อนเพื่อทำการ Parsed หรือสั่งให้ Web Server ทำงานตามโปรแกรม PHP ที่เราเขียนไว้ เช่นอ่านเขียน Database หรือค้นหาข้อมูลใน Database หรือทำงานอื่นๆตามโปรแกรมที่เราเขียนไว้ จากนั้นจึงส่ง Final HTML file ซึ่งไม่มี PHP Code เหลืออยู่เลยให้ Browser เพราะ PHP เป็นภาษาที่ทำงานบน Web Server เท่านั้น ไม่ทำงานที่ Browser เพราะ Browser ไม่เข้าใจภาษา PHP จึงเรืยกว่าโปรแกรม PHP ว่าเป็น Server side Script ดังนั้นผู้ใช้จึงไม่สามารถดู PHP Code ว่าเขียนไว้อย่างไร ไม่เหมือน HTML Code ซึ่งเราสามารถรู้ได้ว่าเขาเขียนอย่างไรจึงทำงานได้แบบนั้น
คำว่า Script ที่ต่อท้ายแสดงให้รู้ว่าโปรแกรม PHP ไม่ได้แปลงเป็นภาษาเครื่อง ซึ่งอาจทำงานช้ากว่าโปรแกรมภาษาเครื่อง แต่แก้ไขและดูแลง่ายกว่าโปรแกรมภาษาเครื่อง
Chapter 3: Getting Started with PHP
ในการทำเว็บไม่ว่าจะเป็น HTML ธรรมดาๆ หรือ PHP ก็ตามท่านต้องเก็บเว็บของท่านบน Web Server ซึ่งเข้าถึงได้ด้วย internet ซึ่งปกติจะต้องเสียค่าเช่าพื้นที่ในการฝาก ซึ่งเราเรียกว่า Hosting และต้องส่ง Web Page ของเราขึ้น Host ด้วย FTP
แต่ในขั้บตอนของการเรียนรู้และทดลอง ท่านก็ต้องมี Web Server หรือ Hosting สำหรับทดสอบการเขียนโปรแกรม และ Editor
Web Server
เนื่องจาก PHP เป็นการเขียนโปรแกรมสำหรับ Web ท่านจึงต้องมี Web Server ที่เข้าใจภาษา PHP และควรมี MySQL database ด้วย
วิธีที่ดีที่สุดคือ ไม่เสียเงิน ทำงานด้วยสะดวก ไม่ต้องง้อ Internet คือจำลองเครื่องคอมพิวเตอร์ที่ท่านใช้นั้นเองเป็น Web Server
เมื่อท่านเขียนคล่องแล้วต้องการทำเว็บจริงจึงจะเช่า Host ที่รองรับภาษา PHP ซึ่งโดยมากมักจะใช้ Linux เป็น Operating System ซึ่งมักจะเรียกว่า LAMP ซึ่งมาจาก Linux, Apache, MySQL, PHP
ไหนๆจะต้องใช้ Linux Hosting อยู่แล้วผมจึงติดตั้ง Ubuntu Linux ที่เครื่องที่ผมใช้อยู่แบบ Dual Boot กับ Window XP และลงระบบ LAMP บน Ubuntu
แต่สำหรับคนส่วนมากจะใช้ Windows เป็น OS ท่านก็สามารถทำ Web Server บน Windows ได้โดยไม่ต้องลง Linux OS โดยใช้ระบบ WAMP หรือ Window,Apache, MySQL, PHP ซึ่งไม่ต่างกับ LAMP อาจจะสะดวกกว่าด้วยซ้ำ เพราะมีโปรแกรมสำนับสนุนมากกว่า การติดตั้ง WAMP โปรดศึกษาจาก http://gaiz.exteen.com/20080407/review-wamp
Editor
จากประสพการณ์สำหรับช่วงเริ่มต้นควรใช้ Editor ธรรมดาๆที่สุด อย่าพึ่งใช้พวก IDE หรือ Editor ที่มี Function มากๆ มันจะสับสนกันใหญ่นะครับ ต้องเรียนทั้ง IDE และต้องเรียนภาษาด้วย
สำหรับ Ubuntu Linux ผมใช้ Text editor เคยศึกษามาหลายตัว ตัวอื่นๆก็ดีแต่มักยุ่งยากทำให้สับสนว่าจะเรียนเขียนโปรแกรมหรือจะเรียนเครื่องมือเขียนโปรแกรมกันแน่
Chapter 4: Adding PHP to HTML
โปรแกรมภาษา PHP เป็นโปรแกรมที่ฝังตัวอยู่ปนกับ HTML Code ในหน้า Web Page
Start and end tags
หากคุณเคยทำเว็บด้วย HTML และ CSS มาแล้ว ก็ทำเหมือนเดิม เพียงแต่เปลี่ยนนามสกุลของ HTML file จาก .htm หรือ .html มาเป็น .php
จากนั้นเขียน PHP โปรแกรมใน HTML file โดยต้องห่อ PHP Code ใน Tag โดยต้องมี Opening Tag และ Close Tag ซึ่งมีหลายแบบ เพื่อไม่ให้สับสน จำแบบเดียวก็พอแล้ว คือ
- Open Tag = <?php
- Close Tag = ?>
ตัวอย่าง Code
<html>
<head>
<title>Sample php tag</title>
</head>
<body>
<?php
// This is the comment of PHP code
echo "<P>I think this is really "cool PHP Code"!</P>";
?>
</body>
</html>
โปรดสังเกตุว่าทุกประโยคคำสั่งของ PHP จะต้องจบด้วยเครื่องหมาย ";"
คุณสามารถแทรก PHP Code ได้หลายๆช่วง ซึ่งจะทำงานต่อเนื่องกันเหมือนโปรแกรมเดียวกัน ดังตัวอย่างต่อไปนี้
<?php
if($a=5){
?>
<p> HTML code 1 </p>
<?php
}
else
{
?>
<p> HTML code 2 </p>
<?php
}
?>
Including files
คุณสามารถเขียน PHP Code ไว้ใน File ต่างหาก ไม่ต้องเขียนรายละเอียดไว้ใน HTML File เพื่อไม่ให้ HTML มีขนาดใหญ่ และง่ายในการ Reuse ในหลายๆ Project จากนั้นนำมาใส่ใน HTML File ภายหลังด้วยคำสั้ง PHP ต่อไปนี้
- include(‘/filepath/filename’)
- require(‘/filepath/filename’)
- include_once(‘/filepath/filename’)
- require_once(‘/filepath/filename’)
ความแตกต่างของ Include และ Require คือ หากเกิดความผิดพลาดเช่นหา File ไม่เจอ Include จะให้ Warning message และปล่อยให้โปรแกรมทำงานต่อไปได้ แต่ Require จะให้ Fatal Error message และหยุดการทำงานของโปรแกรม
Include_once and Require_once ป้องกันไม่ให้มีการ Include File ใดๆ มากกว่าหนึ่งครั้ง หากมีการ Include_once หรือ Require_once ของ File เดียวกันมากกว่าหนึ่งครั้งในโปรแกรม PHP โปรแกรม PHP จะสนใจเฉพาะ File ที่เจอครั้งแรกเท่านั้น การ Include แบบนี้มีประโยชน์ในการนำ function มารวมในโปรแกรม เพราะ Function ทำการ Redefine ไม่ได้
ตัวอย่างการใช้งาน
<?php require_once($_SERVER[‘DOCUMENT_ROOT’].’/header.inc’); ?> <P>This is some body text for this particular page.</P> <?php require_once($_SERVER[‘DOCUMENT_ROOT’].’/footer.inc’); ?>
ใน Include file ต้องมี Open (<?php)และ Close (?>) เพราะระหว่าง Include Function จะไม่ไช่ PHP environment ดังตัวอย่าง
File: vars.php <?php $color = 'green'; $fruit = 'apple'; ?> File: test.php <?php echo "A $color $fruit"; // A include 'vars.php'; echo "A $color $fruit"; // A green apple ?>
Chapter 5: Syntax and Variables
PHP เป็นภาษาที่มีไม่เคร่งครัด และให้อภัยสูง ซึ่งมีทั้งดีและเสีย เช่น ไม่ต้อง Define Variable ก่อนใช้ และไม่ค่อยหยุดการทำงาน ถึงจะมี error แต่ก็มีข้อเสียเช่นโปรแกรมของคุณอาจไม่ทำงานตามที่คุณสั่งหรือต้องการ หรือสร้างความเสียหายที่คุณไม่คาดคิด
ไวยกรณ์(Syntax)ของ PHP เหมือนภาษา C
PHP variable
Variable คือที่เก็บข้อมูลระหว่างที่โปรแกรมยังทำงานอยู่ และค่าต่างๆจะหายไปหลังจากจบโปรแกรม หากต้องการเก็บค่าไว้จะต้องบันทึกไว้ใน Database หรือ File หรือ Cookie
Variable requirement
Variable ของ PHP ทำให้ PHP เป็นภาษาที่ง่าย โดย
- Variable ของ PHP จะต้องนำหน้าด้วยเครื่องหมาย "$" เช่น $firstname
- Variable เป็น Case Sensitive
- Variable ต้องไม่ใช้ตัวเลชจาก $
- Variable ประกอบด้วยตัวอักษร และตัวเลข และเครื่องหมาย "_" เท่านั้น
- Variable ไม่ต้องมี Type จะใช้ใส่อะไรก็ได้ เช่น ตัวเลข หรือตัวอักษรก็ได้
- Variable สามารถ Define ก่อนใช้ แต่ไม่จำเป็นต้อง Define ก่อนใช้งาน
- การ Assign ค่าของ Variable ดังตัวอย่าง
$username = "joe";
Default value ของ Variable ที่ยังไม่ได้ Assign = 0 หรือ ""
สามารถเช็คว่า Variable Assign หรือยังด้วย Function IsSet(<variable>)
และใช้ Function unset() ในการลบค่าออกจาก Variable
Scalar
คือ Variable ที่มีค่าเพียงค่าเดียว
Array
คือ Variable ที่เก็บค่าได้หลายๆค่า หรือแม้แต่เป็น Array อื่นก็ได้ ซึ่งใช้มากเวลาติดต่อกับ Database
Local and Global Variables
Local Variable เป็น Variable ที่มีค่าใน Function หรือ Procedure นั้น แต่ Global Variables คือ Variable ที่ Assign ใน Main Program จะมีค่าตลอดการทำงานของโปรแกรม แต่ไม่สามารถรักษาค่าไว้ได้ถึงแม้จะเป็นการ Revisit โปรแกรมนั้น
หากต้องการให้มีค่าคงที่ในทุกๆโปรแกรมหรือ File จะต้องใส่ไว้ Database หรือ Cookie หรือส่งค่าข้ามด้วย POST หรือ GET
Variable Assign ใน Function เรียกว่า Local Variable โดย Function จะไม่สามารถเข้าถึง Global Variable ยกเว้นแต่จะมี Special Declaration ใน Function ดู Ch 6 ดังนั้น Local Variable จึงมีชื่อเหมือน Global Variable โดยไม่มีปัญหา
Pre-Defined Variable
มีประโยชน์มากสามารถนำมาใช้ในโปรแกรมที่ต้องการ System Parameter
Pre-Defined Variable ใน PHP ดูได้จาก function phpinfo()
นอกจากนั้นยังมี Superglobals variable ซึ่งโดยมากเป็น Array variable
- $_GET contains any variables provided to a script through the GET method.
- $_POST contains any variables provided to a script through the POST method.
- $_COOKIE contains any variables provided to a script through a cookie.
- $_FILES contains any variables provided to a script through file uploads.
- $_ENV contains any variables provided to a script as part of the server environment.
- $_SESSION contains any variables that are registered in a session.
Constant
Constant มี Global Scope และสามารถ Access ได้จากใน Function
โดย Constant มีทั้ง Predefine และ User-defined type ซึ่งไม่สามารถ Redefine
- ใช้ตัวใหญ่
- ไม่ต้องมี $
- ต้อง Define ด้วยคำสั่ง
define("MYCONSTANT", "This the value assign to constant");
ตัวอย่าง Predefine Constant
- __FILE__ The name of the script file being parsed.
- __LINE__ The number of the line in the script being parsed.
- PHP_VERSION The version of PHP in use.
- PHP_OS The operating system using PHP.
Chapter 6: Control and Functions
for ($x = 1, $y = 1, $z = 1; //initial expressions
$y < 10, $z < 30; // termination checks
$x = $x + 1, $y = $y + 2, // loop-end expressions
$z = $z + 3)
print("$x, $y, $z<BR>");

