• ติดตามบน
การสร้างฟอร์ม HTML และส่งข้อมูลไปยัง PHP

การสร้างฟอร์ม HTML และส่งข้อมูลไปยัง PHP

Chalothorn Kosakul 27 พฤษภาคม 2569 36 ครั้ง

💡 เทคนิคควรรู้: ปกติฟอร์ม 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="..." ของแท็กฟอร์มนั่นเอง


📥 การตรวจเช็คและการรับค่าด้วย PHP

1. ตรวจสอบการกดปุ่ม Submit ด้วย isset()

เราต้องใช้คำสั่งนี้เพื่อเช็คว่าเป็นการเปิดหน้าเว็บขึ้นมาครั้งแรก หรือเป็นการเปิดจากการกดส่งฟอร์ม เพื่อป้องกันข้อผิดพลาด (Notice: Undefined index)

if (isset($_POST['submit'])) { ... }

2. การดึงค่าจากตัวแปร Global $_POST

ดึงค่าข้อมูลตามชื่อที่ระบุไว้ในแอตทริบิวต์ name ของแท็ก input นำมาเก็บไว้ในตัวแปรปกติเพื่อรอการประมวลผลหรือบันทึกลงฐานข้อมูล

$fullname = $_POST['fullname'];
$email = $_POST['email'];

แชร์บทความนี้