Mengambil Data Form HTML dengan PHP (Metode POST)

Dalam pengembangan web, formulir (form) adalah cara utama pengguna memasukkan data. Misalnya, formulir pendaftaran, formulir login, atau formulir tambah data siswa.

Konsep Kunci: name dan $_POST

Agar PHP bisa mengambil data dari formulir, ada dua hal yang wajib kamu pahami:

  1. Atribut method="POST": Ini memberi tahu browser cara mengirim data. POST adalah metode yang aman dan cocok untuk data sensitif (seperti password) atau data yang banyak (seperti data pendaftaran), karena data dikirim di belakang layar (tidak terlihat di URL).

  2. Atribut name: Setiap input (kotak teks, tombol radio, checkbox) di HTML harus punya atribut name. Nama inilah yang akan dipakai PHP untuk mengambil nilainya.

  3. Variabel Global $_POST: Ini adalah "keranjang" khusus di PHP yang otomatis diisi dengan semua data yang dikirim dari formulir melalui metode POST.


1. Membuat Form HTML (form_siswa.html)

Kita buat dulu formulir sederhana untuk data siswa.


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Input Data Siswa</title>
</head>
<body>
    <h1>Formulir Tambah Siswa</h1>
    
    <form action="proses_tambah.php" method="POST">
        
        <label for="nama">Nama Lengkap:</label><br>
        <input type="text" id="nama" name="nama_lengkap" required><br><br>
        
        <label for="kelas">Kelas:</label><br>
        <input type="text" id="kelas" name="kelas_siswa" required><br><br>
        
        <label for="alamat">Alamat:</label><br>
        <textarea id="alamat" name="alamat_siswa"></textarea><br><br>
        
        <button type="submit" name="submit_data">Simpan Data</button>
        
    </form>
</body>
</html>

2. Memproses Data di PHP (proses_tambah.php)

File ini bertugas menerima data dari form_siswa.html menggunakan keranjang ajaib $_POST dan kemudian memasukkannya ke database.

A. Mengambil Data dari $_POST

Di dalam file PHP, data dari input HTML akan diakses menggunakan name mereka sebagai kunci array:

  • Input dengan name="nama_lengkap" akan diakses di PHP sebagai: $_POST['nama_lengkap']

  • Input dengan name="kelas_siswa" akan diakses di PHP sebagai: $_POST['kelas_siswa']

  • Input dengan name="alamat_siswa" akan diakses di PHP sebagai: $_POST['alamat_siswa']

B. Kode Lengkap Proses (Gabungan Form + CREATE)

Kita gabungkan konsep mengambil data form dengan materi CREATE sebelumnya (menggunakan gaya prosedural sederhana).



<?php
// ===========================================
// BAGIAN 1: Mengambil Data dari Form ($_POST)
// ===========================================

// Cek dulu, apakah tombol submit sudah ditekan? 
// (Ini penting agar kode tidak error saat pertama kali diakses)
if (isset($_POST['submit_data'])) {

    // Ambil nilai dari keranjang $_POST dan simpan ke variabel biasa
    $nama   = $_POST['nama_lengkap'];
    $kelas  = $_POST['kelas_siswa'];
    $alamat = $_POST['alamat_siswa'];

    // Cek apakah data sudah terambil
    echo "<h1>Data Berhasil Diterima PHP!</h1>";
    echo "Nama: " . $nama . "<br>";
    echo "Kelas: " . $kelas . "<br>";
    echo "Alamat: " . $alamat . "<br>";
    echo "<hr>";


    // ===================================
    // BAGIAN 2: Proses Koneksi dan INSERT ke Database
    // ===================================
    
    // 1. Detail Koneksi (Sesuaikan dengan XAMPP kamu)
    $host = "localhost";
    $user = "root";      
    $pass = "";          
    $db   = "db_rpl";     

    $koneksi = mysqli_connect($host, $user, $pass, $db);

    if (mysqli_connect_errno()) {
        die("Koneksi Gagal: " . mysqli_connect_error());
    }

    // 2. Siapkan dan Bersihkan Perintah SQL (Gaya Prosedural Sederhana)
    $nama_bersih   = mysqli_real_escape_string($koneksi, $nama);
    $kelas_bersih  = mysqli_real_escape_string($koneksi, $kelas);
    $alamat_bersih = mysqli_real_escape_string($koneksi, $alamat);

    $sql = "INSERT INTO siswa (nama, kelas, alamat) 
            VALUES ('$nama_bersih', '$kelas_bersih', '$alamat_bersih')";

    // 3. Eksekusi
    if (mysqli_query($koneksi, $sql)) {
        echo "🎉 Data **BERHASIL** disimpan ke database!";
    } else {
        echo "❌ Gagal menyimpan data ke database. Error: " . mysqli_error($koneksi);
    }

    mysqli_close($koneksi);

} else {
    // Kalau user langsung mengakses file ini tanpa melalui form
    echo "Akses ditolak! Silakan isi data melalui <a href='form_siswa.html'>Formulir</a>.";
}
?>
Tips Penting untuk Anak RPL Konsisten dengan name: Pastikan nama di $_POST['nama_lengkap'] sama persis dengan name="nama_lengkap" di HTML (case-sensitive!). Validasi Dulu: Sebelum memasukkan data ke database, selalu cek dan pastikan data tidak kosong. Di contoh di atas, kita menggunakan if (isset($_POST['submit_data'])). Metode POST vs GET: Gunakan POST untuk operasi INSERT (menambah) atau UPDATE (mengubah) data, karena lebih aman. Gunakan GET untuk operasi SELECT (menampilkan/mencari data), karena datanya boleh terlihat di URL.