ยินดีต้อนรับ!

ขอต้อนรับเข้าสู่สื่อการเรียนรู้การเขียนโปรแกรมด้วยภาษา PHP โปรดเลือกหน่วยการเรียนรู้จากเมนูด้านซ้ายเพื่อเริ่มต้น หรือลองใช้เครื่องมือ AI ช่วยเรียนรู้ และทำแบบทดสอบท้ายหน่วย!

ภาพประกอบ PHP

เครื่องมืออธิบายโค้ด PHP ✨

วางโค้ด PHP ที่คุณต้องการทำความเข้าใจลงในช่องด้านล่าง แล้วคลิกปุ่มเพื่อรับคำอธิบายจาก AI

หน่วยที่ 1: ความรู้พื้นฐานเกี่ยวกับหลักการเขียนพีเอชพี

หน่วยนี้จะแนะนำความรู้พื้นฐานที่จำเป็นสำหรับการเริ่มต้นเขียนโปรแกรมด้วยภาษา PHP ซึ่งเป็นภาษา Script ที่ทำงานฝั่งเซิร์ฟเวอร์ (Server-Side Scripting) ที่ได้รับความนิยมอย่างสูงในการพัฒนาเว็บไซต์และเว็บแอปพลิเคชัน

1.1 การติดตั้ง PHP

การที่จะเริ่มเขียน PHP ได้นั้น เครื่องคอมพิวเตอร์ของเราจะต้องมี PHP Interpreter และ Web Server ติดตั้งอยู่ วิธีที่นิยมสำหรับผู้เริ่มต้นคือการใช้โปรแกรมจำลอง Web Server แบบครบวงจร (All-in-One Package) ซึ่งจะรวมส่วนประกอบที่จำเป็นมาให้แล้ว:

  • XAMPP: เป็นโปรแกรมที่ได้รับความนิยมสูง ประกอบด้วย Apache (Web Server), MariaDB (Database Server, เดิมคือ MySQL), PHP, และ Perl สามารถติดตั้งได้บน Windows, macOS, และ Linux
    • ส่วนประกอบหลักของ XAMPP:
      • Apache: ทำหน้าที่เป็น Web Server คอยรับคำขอ (request) จากเบราว์เซอร์และส่งผลลัพธ์ (response) กลับไป
      • PHP: ตัวแปลภาษา PHP ที่จะประมวลผลโค้ด PHP ของเรา
      • MariaDB/MySQL: ระบบจัดการฐานข้อมูล สำหรับเก็บข้อมูลของเว็บไซต์
      • XAMPP Control Panel: โปรแกรมสำหรับควบคุมการเริ่ม/หยุดการทำงานของ Apache และ MySQL
    • การตรวจสอบการทำงาน: หลังจากติดตั้ง XAMPP และเปิด Apache Web Server แล้ว โดยทั่วไปสามารถทดสอบได้โดยการเปิดเบราว์เซอร์แล้วไปที่ http://localhost หรือ http://127.0.0.1 หากเห็นหน้าจอเริ่มต้นของ XAMPP แสดงว่า Web Server ทำงานถูกต้อง
  • WAMP (Windows, Apache, MySQL, PHP): สำหรับผู้ใช้ระบบปฏิบัติการ Windows โดยเฉพาะ
  • MAMP (Mac, Apache, MySQL, PHP): สำหรับผู้ใช้ระบบปฏิบัติการ macOS
ตัวอย่าง: การสร้างไฟล์ PHP แรกหลังติดตั้ง XAMPP

หลังจากติดตั้ง XAMPP และ Start Apache แล้ว ให้สร้างไฟล์ชื่อ hello.php ในโฟลเดอร์ htdocs (ซึ่งมักจะอยู่ที่ C:\xampp\htdocs บน Windows) โดยมีเนื้อหาดังนี้:

<?php echo "สวัสดี, โลก PHP จาก XAMPP!"; ?>

คำอธิบายตัวอย่าง: เมื่อคุณเปิดเบราว์เซอร์แล้วไปที่ http://localhost/hello.php, Apache Web Server จะรับรู้ว่าเป็นไฟล์ PHP และส่งไปให้ PHP Interpreter ประมวลผล คำสั่ง echo จะแสดงผลข้อความออกมาทางเบราว์เซอร์

1.2 การใช้งาน PHP กับเว็บเซิร์ฟเวอร์

PHP เป็นภาษาที่ทำงานฝั่งเซิร์ฟเวอร์ (Server-Side) หมายความว่าโค้ด PHP จะถูกประมวลผลบนเครื่องเซิร์ฟเวอร์ก่อนที่จะส่งผลลัพธ์ (ส่วนใหญ่เป็น HTML) กลับไปยังเบราว์เซอร์ของผู้ใช้

ภาพการทำงานของ PHP กับเว็บเซิร์ฟเวอร์

1.3 โครงสร้างไฟล์ PHP

ไฟล์ PHP จะต้องมีนามสกุลเป็น .php และโค้ด PHP จะถูกเขียนอยู่ภายในแท็ก <?php ... ?>

1.4 การเขียน PHP ใน HTML

จุดเด่นสำคัญของ PHP คือความสามารถในการฝังโค้ด PHP เข้าไปในเอกสาร HTML ได้โดยตรง เพื่อสร้างเนื้อหาแบบไดนามิก

ตัวอย่าง: การแสดงวันที่ปัจจุบัน
<p>ขณะนี้เวลา: <?php echo date('d F Y H:i:s'); ?></p>

คำอธิบายตัวอย่าง: คำสั่ง date() เป็นฟังก์ชันของ PHP ที่ใช้สำหรับจัดรูปแบบวันที่และเวลา คำสั่ง echo จะแสดงผลวันที่และเวลาที่จัดรูปแบบแล้วออกมา ณ ตำแหน่งนั้นใน HTML

หน่วยที่ 2: ไวยากรณ์ (Syntax) และตัวแปร (Variables)

หน่วยนี้จะอธิบายไวยากรณ์พื้นฐานของ PHP รวมถึงวิธีการประกาศและใช้งานตัวแปร ซึ่งเป็นองค์ประกอบสำคัญในการเขียนโปรแกรมทุกภาษา

2.1 การเขียนโค้ด PHP เบื้องต้น

โค้ด PHP ประกอบด้วยชุดคำสั่ง (statements) ซึ่งแต่ละคำสั่งจะจบด้วยเครื่องหมายอัฒภาค (semicolon ;)

การแสดงความคิดเห็น (Comments)

Comments คือส่วนของโค้ดที่ PHP Interpreter จะไม่นำไปประมวลผล ใช้สำหรับอธิบายโค้ด

// นี่คือ comment แบบบรรทัดเดียว
# นี่ก็เป็น comment แบบบรรทัดเดียว
/*
นี่คือ comment
แบบหลายบรรทัด
*/

2.5 การประกาศตัวแปร

ตัวแปรใน PHP เริ่มต้นด้วยเครื่องหมายดอลลาร์ ($) ตามด้วยชื่อตัวแปร PHP เป็นภาษา Dynamically Typed หมายความว่าคุณไม่จำเป็นต้องประกาศชนิดข้อมูลของตัวแปรก่อนใช้งาน

$message = "นี่คือข้อความ"; // ชนิด string
$count = 100;             // ชนิด integer
$price = 19.99;           // ชนิด float

2.6 กฎการตั้งชื่อตัวแปร

  • ต้องขึ้นต้นด้วย $ ตามด้วยตัวอักษรหรือ underscore (_)
  • ห้ามขึ้นต้นด้วยตัวเลข
  • ประกอบด้วยตัวอักษร (a-z, A-Z), ตัวเลข (0-9), และ underscore เท่านั้น
  • เป็น Case-Sensitive ($name กับ $Name คือคนละตัว)

2.8 ตัวแปรประเภทต่าง ๆ (ขอบเขตของตัวแปร - Variable Scopes)

PHP มีขอบเขตของตัวแปร 3 แบบหลัก:

  • Local: ประกาศและใช้งานได้เฉพาะภายในฟังก์ชัน
  • Global: ประกาศภายนอกฟังก์ชัน และต้องใช้คีย์เวิร์ด global หรือ $GLOBALS เพื่อเข้าถึงภายในฟังก์ชัน
  • Static: เป็นตัวแปร local ที่คงค่าเดิมไว้แม้ฟังก์ชันจะทำงานจบไปแล้ว
ตัวอย่าง Static Variable
function staticCounter() {
    static $count = 0; // ประกาศและกำหนดค่าเริ่มต้นครั้งเดียว
    $count++;
    echo $count . " ";
}
staticCounter(); // 1
staticCounter(); // 2
staticCounter(); // 3

หน่วยที่ 3: คำสั่ง Echo และคำสั่ง Print

echo และ print เป็น construct ของภาษาที่ใช้ในการแสดงผลข้อมูลออกทางหน้าเว็บ ทั้งสองคำสั่งมีความคล้ายคลึงกันมาก แต่ก็มีความแตกต่างเล็กน้อยที่ควรทราบ

3.1 ความแตกต่างระหว่าง Echo และ Print

คุณสมบัติ echo print
การคืนค่าไม่มีคืนค่า 1 เสมอ
พารามิเตอร์รับได้หลายตัว (คั่นด้วย ,)รับได้เพียงตัวเดียว
ความเร็วเร็วกว่าเล็กน้อยช้ากว่าเล็กน้อย

3.2 การใช้งาน Echo

นิยมใช้มากกว่าเพราะเร็วกว่าและยืดหยุ่นกว่า

$name = "สมชาย";
echo "สวัสดี, ", $name, " ยินดีต้อนรับ!"; // ใช้หลายพารามิเตอร์

3.3 การใช้งาน Print

เนื่องจากมีการคืนค่า จึงสามารถใช้ใน expression ได้ (แต่ไม่ค่อยนิยม)

if (print "ตรวจสอบ...") {
    echo " ทำงานสำเร็จ";
}

หน่วยที่ 4: ประเภทข้อมูล (Data Types)

PHP รองรับประเภทข้อมูลหลายชนิด ซึ่งสามารถแบ่งออกเป็นกลุ่มหลักๆ ได้ดังนี้: Scalar Types, Compound Types, และ Special Types.

4.1 ชนิดข้อมูลเบื้องต้น (Scalar Types)

Scalar types เป็นชนิดข้อมูลที่เก็บค่าเดี่ยวๆ ได้แก่:

  • Integer: ตัวเลขจำนวนเต็ม เช่น 123, -456
  • Float (Double): ตัวเลขทศนิยม เช่น 3.14, -0.01
  • String: ข้อความ เช่น 'สวัสดี', "PHP"
  • Boolean: ค่าความจริง คือ true หรือ false
$age = 25;       // Integer
$price = 499.99; // Float
$name = "มานี";   // String
$isReady = true; // Boolean
var_dump($age, $price, $name, $isReady);

4.2 ชนิดข้อมูลเชิงโครงสร้าง (Compound Types)

  • Array: กลุ่มของข้อมูลที่จัดเก็บภายใต้ชื่อเดียว (จะเรียนในหน่วยที่ 9)
  • Object: อินสแตนซ์ของคลาส (สำหรับ OOP)

4.3 ชนิดข้อมูลพิเศษ (Special Types)

  • NULL: ตัวแปรที่ไม่มีค่า
  • Resource: ตัวแปรพิเศษที่อ้างอิงถึงทรัพยากรภายนอก เช่น การเชื่อมต่อฐานข้อมูล

4.4 การตรวจสอบประเภทข้อมูล

ใช้ฟังก์ชัน is_...() เช่น is_int(), is_string() หรือใช้ gettype() เพื่อดูชื่อชนิดข้อมูล

$data = 123;
if (is_int($data)) {
    echo "ข้อมูลเป็น Integer";
}
echo "<br>ชนิดของข้อมูลคือ: " . gettype($data);

หน่วยที่ 5: สตริง (Strings) และค่าคงที่ (Constants)

สตริง (String) คือชุดของอักขระที่ใช้สำหรับเก็บและจัดการข้อความ ส่วนค่าคงที่ (Constant) คือตัวระบุสำหรับค่าที่ไม่สามารถเปลี่ยนแปลงได้ตลอดการทำงานของสคริปต์

5.2 การใช้เครื่องหมายคำพูดเดี่ยวและคู่

  • Single Quotes (' '): ประมวลผลสตริงตามตัวอักษร (literal) จะไม่ทำการแทนที่ค่าตัวแปร (interpolation) และ escape characters ส่วนใหญ่ไม่ทำงาน (ยกเว้น \' และ \\)
  • Double Quotes (" "): ประมวลผลสตริงและแทนที่ตัวแปรด้วยค่าของมัน และรองรับ escape characters (เช่น \n, \t, \$)
$name = 'สมศรี';
echo 'สวัสดี, $name'; // ผลลัพธ์: สวัสดี, $name
echo "<br>";
echo "สวัสดี, $name"; // ผลลัพธ์: สวัสดี, สมศรี

5.3 ฟังก์ชั่นการจัดการสตริง

PHP มีฟังก์ชันมากมายสำหรับจัดการสตริง เช่น:

  • strlen($string): คืนค่าความยาวของสตริง
  • str_replace($search, $replace, $subject): แทนที่ข้อความ
  • substr($string, $start, $length): ตัดสตริงย่อย
  • explode($delimiter, $string): แบ่งสตริงเป็น array
  • implode($glue, $array): รวม array เป็นสตริง
ตัวอย่าง str_replace และ explode
$sentence = "PHP is a popular scripting language.";
$newSentence = str_replace("popular", "powerful", $sentence);
echo $newSentence; // PHP is a powerful scripting language.

$csv = "apple,banana,cherry";
$fruitsArray = explode(",", $csv);
print_r($fruitsArray); // Array ( [0] => apple [1] => banana [2] => cherry )

5.5 การประกาศค่าคงที่

ค่าคงที่เมื่อกำหนดแล้วจะไม่สามารถเปลี่ยนแปลงได้ มี scope เป็น global โดยอัตโนมัติ

  • define(): ฟังก์ชันดั้งเดิม สามารถใช้ได้ทุกที่
    define("SITE_NAME", "เว็บเรียน PHP");
    echo SITE_NAME;
  • const: คีย์เวิร์ดที่ใหม่กว่า ใช้ประกาศนอกคลาส (global) หรือในคลาสก็ได้
    const APP_VERSION = "2.0";
    echo APP_VERSION;

5.7 ค่าคงที่แบบ Magic Constants

ค่าคงที่พิเศษที่ PHP กำหนดไว้ให้ ซึ่งค่าจะเปลี่ยนไปตามบริบทที่ใช้งาน เช่น:

  • __LINE__: หมายเลขบรรทัดปัจจุบัน
  • __FILE__: พาธเต็มและชื่อไฟล์ปัจจุบัน
  • __DIR__: ไดเรกทอรีของไฟล์ปัจจุบัน
  • __FUNCTION__: ชื่อฟังก์ชันปัจจุบัน
  • __CLASS__, __METHOD__: ชื่อคลาสและเมธอดปัจจุบัน
echo "This is line " . __LINE__ . " in file " . __FILE__;

หน่วยที่ 6: โอเพอเรเตอร์ (Operators)

โอเพอเรเตอร์ใช้ในการดำเนินการกับตัวแปรและค่าต่างๆ เช่น การคำนวณทางคณิตศาสตร์, การเปรียบเทียบ, และการดำเนินการทางตรรกะ

6.1 โอเปอเรเตอร์ทางคณิตศาสตร์

ใช้สำหรับการคำนวณ: + (บวก), - (ลบ), * (คูณ), / (หาร), % (หารเอาเศษ), ** (ยกกำลัง)

$x = 10;
$y = 3;
echo 10 % 3; // ผลลัพธ์คือ 1
echo 2 ** 3; // ผลลัพธ์คือ 8 (2*2*2)

6.2 โอเปอเรเตอร์การเปรียบเทียบ

ใช้เปรียบเทียบค่าสองค่า ผลลัพธ์เป็น boolean

  • == (เท่ากับ): ตรวจสอบค่าเท่านั้น
  • === (เหมือนกัน): ตรวจสอบทั้งค่าและชนิดข้อมูล (แนะนำให้ใช้บ่อยกว่าเพื่อความแม่นยำ)
  • != หรือ <> (ไม่เท่ากับ)
  • !== (ไม่เหมือนกัน)
  • <, >, <=, >=
  • <=> (Spaceship): คืนค่า -1, 0, หรือ 1
$a = 5;
$b = "5";
var_dump($a == $b);  // bool(true)
var_dump($a === $b); // bool(false)

6.4 โอเปอเรเตอร์ตรรกะ

ใช้รวมเงื่อนไข: && (และ), || (หรือ), ! (ไม่)

$age = 25;
$isCitizen = true;
if ($age >= 18 && $isCitizen) {
    echo "คุณมีสิทธิ์เลือกตั้ง";
}

Null Coalescing Operator (??)

เป็นทางลัดสำหรับตรวจสอบว่าตัวแปรมีค่า (ไม่ใช่ null) หรือไม่ ถ้ามีให้ใช้ค่านั้น ถ้าไม่มี (เป็น null) ให้ใช้ค่าสำรองที่กำหนด

// แบบเก่า
$name = isset($_GET['user']) ? $_GET['user'] : 'Guest';

// แบบใหม่ด้วย ??
$name = $_GET['user'] ?? 'Guest';

echo $name;

คำอธิบาย: บรรทัดที่สองจะตรวจสอบว่า $_GET['user'] มีอยู่และไม่ใช่ null หรือไม่ ถ้าใช่ $name จะได้รับค่านั้น ถ้าไม่ใช่ $name จะได้รับค่า 'Guest' แทน ซึ่งสั้นและอ่านง่ายกว่ามาก

หน่วยที่ 7: คำสั่งเงื่อนไข (Conditionals) และคำสั่งวนรอบ (Looping)

คำสั่งเงื่อนไขใช้ควบคุมการทำงานของโปรแกรมตามเงื่อนไข ส่วนคำสั่งวนรอบใช้ทำซ้ำชุดคำสั่ง

7.1 คำสั่งตรวจสอบเงื่อนไข If...Else...Elseif

ใช้ในการทำงานตามเงื่อนไขที่กำหนด

$score = 75;
if ($score >= 80) {
    echo "เกรด A";
} elseif ($score >= 70) {
    echo "เกรด B";
} else {
    echo "เกรด C หรือต่ำกว่า";
}

7.2 คำสั่งตรวจสอบเงื่อนไข Switch

ใช้เมื่อต้องการเปรียบเทียบตัวแปรหนึ่งกับหลายๆ ค่าที่เป็นไปได้

$day = "Sunday";
switch ($day) {
    case "Saturday":
    case "Sunday":
        echo "วันหยุดสุดสัปดาห์!";
        break;
    default:
        echo "วันทำงาน";
}

คำสั่งวนรอบ (Loops)

  • while: ทำงานซ้ำตราบใดที่เงื่อนไขเป็นจริง
  • do...while: ทำงานก่อน 1 ครั้ง แล้วจึงตรวจสอบเงื่อนไข
  • for: ใช้เมื่อทราบจำนวนรอบที่แน่นอน
  • foreach: ใช้สำหรับวนลูปผ่านสมาชิกทุกตัวในอาเรย์ (นิยมใช้ที่สุดสำหรับอาเรย์)
ตัวอย่าง Foreach
$fruits = ["Apple", "Banana", "Cherry"];
foreach ($fruits as $fruit) {
    echo $fruit . "<br>";
}

หน่วยที่ 8: คำสั่งฟังก์ชัน (Functions)

ฟังก์ชันคือกลุ่มของคำสั่งที่ทำงานร่วมกันเพื่อทำงานเฉพาะอย่าง สามารถเรียกใช้ซ้ำได้ ช่วยให้โค้ดเป็นระเบียบ, จัดการง่าย, และลดความซ้ำซ้อน

8.1 การประกาศและเรียกใช้ฟังก์ชัน

// การประกาศฟังก์ชัน
function calculateArea($width, $height) {
    $area = $width * $height;
    return $area; // คืนค่าผลลัพธ์
}

// การเรียกใช้ฟังก์ชันและเก็บผลลัพธ์ในตัวแปร
$roomArea = calculateArea(5, 10); // 5 และ 10 คือ arguments
echo "พื้นที่ห้องคือ: " . $roomArea . " ตารางเมตร";

Type Declarations (Type Hinting) & Return Types

ตั้งแต่ PHP 7 เป็นต้นมา เราสามารถระบุชนิดข้อมูลของพารามิเตอร์และค่าที่ฟังก์ชันจะคืนกลับได้ เพื่อเพิ่มความแม่นยำและช่วยให้หาข้อผิดพลาดได้ง่ายขึ้น

// declare(strict_types=1); // หากเปิดใช้งาน PHP จะเข้มงวดกับชนิดข้อมูลมากขึ้น
function add(int $a, int $b): int {
    return $a + $b;
}

echo add(5, 10); // 15
// echo add("5", "10"); // หาก strict_types=1 จะเกิด TypeError, ถ้าไม่เปิดจะพยายามแปลงค่าให้

คำอธิบาย: int $a, int $b บอกว่าพารามิเตอร์ $a และ $b ต้องเป็นชนิด Integer ส่วน : int บอกว่าฟังก์ชันนี้ต้องคืนค่าเป็น Integer เท่านั้น

Anonymous Functions (Closures)

คือฟังก์ชันที่ไม่ต้องมีชื่อ สามารถกำหนดค่าให้กับตัวแปรและส่งไปเป็นพารามิเตอร์ของฟังก์ชันอื่นได้

$sayHello = function($name) {
    echo "Hello, " . $name;
}; // อย่าลืม ; หลังการกำหนดค่า

$sayHello("World"); // เรียกใช้งานผ่านตัวแปร

Arrow Functions (PHP 7.4+)

เป็นทางลัดสำหรับการเขียน Anonymous function แบบง่ายๆ ที่มีเพียง expression เดียว

$numbers = [1, 2, 3, 4];
$squaredNumbers = array_map(fn($number) => $number ** 2, $numbers);
// array_map จะนำฟังก์ชันไปใช้กับทุกสมาชิกในอาเรย์

print_r($squaredNumbers); // Array ( [0] => 1 [1] => 4 [2] => 9 [3] => 16 )

หน่วยที่ 9: อาเรย์ (Arrays)

อาเรย์ใน PHP เป็นตัวแปรชนิดพิเศษที่สามารถเก็บข้อมูลได้หลายค่าในตัวแปรเดียว มีความยืดหยุ่นสูงและเป็นหัวใจสำคัญของการเขียนโปรแกรม PHP

9.2 ประเภทของอาเรย์

  • Indexed Array: มี index เป็นตัวเลข เริ่มจาก 0 โดยอัตโนมัติ
    $cars = ["Toyota", "Honda", "Mazda"];
    echo $cars[1]; // Honda
    
  • Associative Array: มี key เป็นสตริงที่ผู้ใช้กำหนดเอง
    $student = ["name" => "สมศรี", "age" => 22, "major" => "IT"];
    echo $student["name"]; // สมศรี
    
  • Multidimensional Array: อาเรย์ที่เก็บอาเรย์อื่นๆ เป็นสมาชิก
    $students = [
        ["name" => "Alice", "score" => 90],
        ["name" => "Bob", "score" => 82]
    ];
    echo $students[0]["name"]; // Alice
    

9.4 ฟังก์ชันการจัดการอาเรย์

PHP มีฟังก์ชันสำหรับอาเรย์มากมาย นี่คือตัวอย่างที่ใช้บ่อย:

  • count($array): นับจำนวนสมาชิก
  • array_push(&$array, $value): เพิ่มสมาชิกต่อท้าย
  • array_pop(&$array): ดึงสมาชิกตัวท้ายออก
  • in_array($needle, $haystack): ตรวจสอบว่ามีค่าที่ต้องการในอาเรย์หรือไม่
  • array_keys($array): ดึง key ทั้งหมดออกมาเป็นอาเรย์ใหม่
  • array_values($array): ดึง value ทั้งหมดออกมาเป็นอาเรย์ใหม่
  • sort(&$array), rsort(): จัดเรียง indexed array
  • asort(&$array), ksort(&$array): จัดเรียง associative array

ฟังก์ชัน Array ขั้นสูง (ตัวอย่าง)

  • array_map($callback, $array): นำฟังก์ชัน callback ไปใช้กับทุกสมาชิกของอาเรย์และคืนค่าเป็นอาเรย์ใหม่
  • array_filter($array, $callback): กรองสมาชิกในอาเรย์ตามเงื่อนไขในฟังก์ชัน callback
ตัวอย่าง array_map และ array_filter
// array_map
$numbers = [1, 2, 3, 4];
$doubled = array_map(fn($n) => $n * 2, $numbers);
print_r($doubled); // Array ( [0] => 2 [1] => 4 [2] => 6 [3] => 8 )

// array_filter
$scores = [80, 45, 92, 67, 34];
$passingScores = array_filter($scores, fn($score) => $score >= 50);
print_r($passingScores); // Array ( [0] => 80 [2] => 92 [3] => 67 )

หน่วยที่ 10: การเขียนเว็บขนาดเล็ก ด้วยพีเอชพี

ในหน่วยนี้ เราจะนำความรู้ที่ได้เรียนมาประยุกต์ใช้ในการสร้างเว็บแอปพลิเคชันขนาดเล็ก เช่น การจัดการฟอร์ม และการแสดงผลข้อมูล

การจัดการฟอร์ม (Form Handling)

หัวใจสำคัญของการทำเว็บแบบโต้ตอบได้คือการรับข้อมูลจากผู้ใช้ผ่านฟอร์ม PHP มี Superglobal arrays คือ $_GET และ $_POST สำหรับรับข้อมูลนี้

  • $_GET: รับข้อมูลที่ส่งมาทาง URL (query string) เหมาะสำหรับข้อมูลที่ไม่สำคัญมาก เช่น ID ของหน้า, คำค้นหา
  • $_POST: รับข้อมูลที่ส่งมาใน HTTP request body เหมาะสำหรับข้อมูลที่สำคัญ เช่น รหัสผ่าน, ข้อมูลส่วนตัว หรือข้อมูลจำนวนมาก

หลักการสำคัญในการจัดการฟอร์ม

  1. แสดงฟอร์ม (HTML): สร้างฟอร์มด้วยแท็ก <form> ระบุ method (GET/POST) และ action (ไฟล์ที่จะประมวลผล)
  2. รับข้อมูล (PHP): ใช้ $_POST หรือ $_GET เพื่อเข้าถึงข้อมูลที่ผู้ใช้กรอก
  3. ทำความสะอาดและตรวจสอบข้อมูล (Sanitize & Validate):
    • Sanitize: ทำความสะอาดข้อมูลเพื่อป้องกันอันตราย เช่น ใช้ htmlspecialchars() เพื่อป้องกัน XSS
    • Validate: ตรวจสอบว่าข้อมูลที่ได้รับถูกต้องตามรูปแบบที่ต้องการหรือไม่ เช่น อีเมลถูกต้อง, รหัสผ่านมีความยาวพอดี
  4. ประมวลผลข้อมูล: นำข้อมูลไปใช้งาน เช่น บันทึกลงฐานข้อมูล, ส่งอีเมล, แสดงผล
  5. ให้ Feedback กับผู้ใช้: แจ้งให้ผู้ใช้ทราบว่าการส่งข้อมูลสำเร็จหรือมีข้อผิดพลาด
ไฟล์ contact_page_improved.php (จากตัวอย่างก่อนหน้า) เป็นตัวอย่างที่ดีของการจัดการฟอร์มที่ครอบคลุมหลักการเหล่านี้