💡 เทคนิคควรรู้: ปกติฟอร์ม HTML จะใช้แอตทริบิวต์ action เพื่อส่งข้อมูลไปยังไฟล์ PHP อื่น แต่เราสามารถกำหนดให้ฟอร์มส่งข้อมูลกลับมาที่หน้าเดิม (Self-Submitting Form) ได้เช่นกัน ซึ่งช่วยให้การจัดการโค้ดและการแสดงผลข้อผิดพลาดทำได้ง่ายขึ้นในไฟล์เดียว
สร้างไฟล์ชื่อ index.php แล้วใช้ซอร์สโค้ดดังต่อไปนี้:
<!DOCTYPE html>
<html lang="th">
<head>
<meta charset="UTF-8">
<title>ฟอร์มสมัครสมาชิก PHP</title>
</head>
<body>
<h2>ฟอร์มสมัครสมาชิก</h2>
<!-- สังเกตว่าไม่มีการใส่ action -->
<form method="POST">
<label>ชื่อ-นามสกุล</label><br>
<input type="text" name="fullname"><br><br>
<label>อีเมล</label><br>
<input type="email" name="email"><br><br>
<button type="submit" name="submit">บันทึกข้อมูล</button>
</form>
<hr>
<?php
// ตรวจสอบว่ามีการกดปุ่ม Submit หรือยัง
if (isset($_POST['submit'])) {
$fullname = $_POST['fullname'];
$email = $_POST['email'];
echo "<h3>ข้อมูลที่ส่งมา:</h3>";
echo "ชื่อ: " . $fullname . "<br>";
echo "อีเมล: " . $email;
}
?>
</body>
</html>เมื่อผู้ใช้งานกรอกข้อมูลและทำการคลิกปุ่มส่งข้อมูล:
<button type="submit" name="submit">Web Browser จะทำการส่งข้อมูล (HTTP POST) กลับมายังไฟล์เดิมและหน้าเดิมโดยอัตโนมัติ เนื่องจากเราไม่ได้ระบุปลายทางไว้ในแอตทริบิวต์ action="..." ของแท็กฟอร์มนั่นเอง
isset()เราต้องใช้คำสั่งนี้เพื่อเช็คว่าเป็นการเปิดหน้าเว็บขึ้นมาครั้งแรก หรือเป็นการเปิดจากการกดส่งฟอร์ม เพื่อป้องกันข้อผิดพลาด (Notice: Undefined index)
if (isset($_POST['submit'])) { ... }$_POSTดึงค่าข้อมูลตามชื่อที่ระบุไว้ในแอตทริบิวต์ name ของแท็ก input นำมาเก็บไว้ในตัวแปรปกติเพื่อรอการประมวลผลหรือบันทึกลงฐานข้อมูล
$fullname = $_POST['fullname'];
$email = $_POST['email'];