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>");

Chapter 7: Passing Information between Pages

Chapter 8: Strings

Chapter 9: Arrays and Array Functions

Chapter 10: Numbers

Chapter 11: Basic PHP Gotchas

Part II: PHP and MySQL

Chapter 12: Choosing a Database for PHP

Chapter 13: SQL Tutorial

Chapter 14: MySQL Database Administration

Chapter 15: PHP/MySQL Functions

Chapter 16: Displaying Queries in Tables

Chapter 17: Building Forms from Queries

Chapter 18: PHP/MySQL Efficiency

Chapter 19: PHP/MySQL Gotchas

Part III: Advanced Features and Techniques

Chapter 20: Object-Oriented Programming with PHP

Chapter 21: Advanced Array Functions

Chapter 22: String and Regular Expression Functions

Chapter 23: Filesystem and System Functions

Chapter 24: Sessions, Cookies, and HTTP

Chapter 25: Types and Type Conversions

Chapter 26: Advanced Use of Functions

Chapter 27: Mathematics

Chapter 28: PEAR

Chapter 29: Security

Chapter 30: Configuration

Chapter 31: Exceptions and Error Handling

Chapter 32: Debugging

Chapter 33: Style

Part IV: Connections

Chapter 34: PostgreSQL

Chapter 35: Oracle

Chapter 36: PEAR Database Functions

Chapter 37: E-mail

Chapter 38: PHP and JavaScript

Chapter 39: PHP and Java

Chapter 40: PHP and XML

Chapter 41: Web Services

Chapter 42: Graphics

Part V: Case Studies

Chapter 43: Weblogs

Chapter 44: User Authentication

Chapter 45: A User-Rating System

Chapter 46: A Trivia Game

Chapter 47: Converting Static HTML Sites

Chapter 48: Data Visualization with Venn Diagrams

Appendix A: PHP for C Programmers

Appendix B: PHP for Perl Hackers

Appendix C: PHP for HTML Coders

Appendix D: PHP Resources

รับข้อมูลจาก "http://www.noklek.com/wiki2/index.php/PHP_%26_MySQL_Bible"
เครื่องมือส่วนตัว