Belajar PHP & MySQL #7: Operasi Create (Menyimpan Data)

Heru Iryanto
Heru Iryanto
Teacher, Content Creator and Full-Stack Developer

Mulai detik ini, pengguna website tidak lagi sebagai “Pembaca Pasif”. Anda akan mengizinkan mereka mengirimkan informasi ke Database MySQL lewat halaman formulir Anda!

Sama seperti metode lempar-tangkap di materi sebelumnya Menangkap Data Form HTML, kita butuh 2 buah file: Halaman Tampilan Form (Melempar) dan Halaman Pengolah (Menangkap & Mengirim ke MySQL).

1️⃣ Merancang Halaman Pelempar (Formulir HTML)

Buatlah file baru bernama tambah_buku.php. File ini tidak mengandung logika PHP rumit, ia hanya berupa HTML kerangka form biasa. (Anggap saja ini adalah Front-End-nya).

<!DOCTYPE html>
<html>
<head><title>Form Tambah Buku</title></head>
<body>
    <h2>Form Penambahan Koleksi Buku Baru</h2>
    
    <!-- PENTING: Arahkan action ke file pengolah data! Gunakan metode rahasia POST -->
    <form action="proses_simpan.php" method="POST">
        
        <label>Judul Buku:</label><br>
        <input type="text" name="judul_buku" required><br><br>

        <label>Nama Penulis:</label><br>
        <input type="text" name="nama_penulis" required><br><br>
        
        <label>Tahun Terbit:</label><br>
        <!-- Type Number karena database kita menolaknya jika huruf (INT) -->
        <input type="number" name="tahun_terbit" required><br><br>
        
        <button type="submit">SIMPAN DATA BUKU</button>
    </form>
</body>
</html>

2️⃣ Merancang Halaman Penangkap (Mesin Injeksi MySQL)

Ketika tombol Simpan ditekan, browser akan meloncat ke proses_simpan.php dengan membawa tiga bungkus data rahasia judul_buku, nama_penulis, dan tahun_terbit.

Mari kita buat file proses_simpan.php tersebut! Ini adalah Back-End murni (Tanpa antarmuka HTML sama sekali).

<?php
// 1. Tancapkan kabel ke server database
include 'koneksi.php';

// 2. Tangkap bungkusan datanya memakai jaring superglobal $_POST
// (Namanya harus sesuai dengan atribut 'name' di form HTML tadi!)
$tangkapan_judul = $_POST['judul_buku'];
$tangkapan_penulis = $_POST['nama_penulis'];
$tangkapan_tahun = $_POST['tahun_terbit'];

// 3. Merakit Tembakan Teks SQL (Persis seperti saat Anda belajar MySQL materi #4)
// Perhatikan Kutip Tunggal (') mengapit variabel judul karena dia String/VARCHAR!
$mantra_insert = "INSERT INTO tabel_buku (judul_buku, nama_penulis, tahun_terbit) 
                  VALUES ('$tangkapan_judul', '$tangkapan_penulis', $tangkapan_tahun)";

// 4. Eksekusi tembakan ke dalam tabel!
$proses_simpan = mysqli_query($koneksi, $mantra_insert);

// 5. Cek Kesuksesan Injeksi Data
if($proses_simpan) {
    // Jika sukses, munculkan alert Javascript singkat, 
    // lalu tendang (Redirect) paksa user kembali ke halaman daftar buku
    echo "<script>
            alert('Sukses! Koleksi Buku berhasil ditambahkan.');
            window.location.href = 'index_buku.php';
          </script>";
} else {
    // Jika gagal, hentikan program dan keluarkan unek-unek pesannya
    die("Penyimpanan Gagal! Error Server: " . mysqli_error($koneksi));
}
?>

3️⃣ Penjelasan Skrip Penendang (Redirecting)

Mengapa kita menggunakan bantuan sebaris kode Javascript window.location.href di akhir file Back-End PHP tersebut?

Jika kita tidak melempar/menendang paksa balik (Redirect) user ke halaman utama setelah proses penambahan selesai, user akan terjebak di halaman proses_simpan.php yang putih kosong melompong (karena file itu murni Back-End dan tidak memiliki teks/desain HTML apapun untuk dilihat mata!).

Di dunia profesional, Anda juga bisa menggunakan fungsi rahasia PHP asli yang berjalan sebelum loading halaman: header("Location: index_buku.php");. (Fungsi ini lebih gahar, namun tidak bisa menampilkan alert pop-up pesan kesuksesan di layar).

🗽 Kesimpulan

Uji coba sistem Anda! Buka halaman form, isikan judul baru secara acak, dan lihat bagaimana ia melompat masuk ke tabel katalog buku secara otomatis. Fase Create dan Read (Insert & Select) sudah tuntas! Anda resmi memiliki satu putaran sistem informasi penuh.

Tetapi data yang diinput kadang memiliki Typo (salah eja) dan suatu saat bukunya mungkin rusak dan ingin dihapus secara permanen dari katalog. Ini membutuhkan Tombol Aksi di sebelah setiap buku! Mari tuntaskan putaran terakhir operasi mematikan ini di materi selanjutnya, yaitu Operasi Update dan Delete.