Studi Kasus Pendaftaran Siswa Baru

6. Update - Ubah Data

Update Data di Tabel MySQL

Konsep update data hampir sama seperti menghapus.

Pertama kita ambil id data yang akan di-edit. Setelah itu kita melakukan query untuk mengambil data dari database dan menampilkannya ke dalam form.

Setelah di-edit, selanjutnya melakukan query update untuk menyimpan perubahan.

Untuk lebih jelasnya, silahkan buka file form-edit.php dan isi dengan kode berikut:

<?php

include("config.php");

// kalau tidak ada id di query string
if( !isset($_GET['id']) ){
    header('Location: list-siswa.php');
}

//ambil id dari query string
$id = $_GET['id'];

// buat query untuk ambil data dari database
$sql = "SELECT * FROM calon_siswa WHERE id=$id";
$query = mysqli_query($db, $sql);
$siswa = mysqli_fetch_assoc($query);

// jika data yang di-edit tidak ditemukan
if( mysqli_num_rows($query) < 1 ){
    die("data tidak ditemukan...");
}

?>


<!DOCTYPE html>
<html>
<head>
    <title>Formulir Edit Siswa | SMK Coding</title>
</head>

<body>
    <header>
        <h3>Formulir Edit Siswa</h3>
    </header>

    <form action="proses-edit.php" method="POST">

        <fieldset>

            <input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />

        <p>
            <label for="nama">Nama: </label>
            <input type="text" name="nama" placeholder="nama lengkap" value="<?php echo $siswa['nama'] ?>" />
        </p>
        <p>
            <label for="alamat">Alamat: </label>
            <textarea name="alamat"><?php echo $siswa['alamat'] ?></textarea>
        </p>
        <p>
            <label for="jenis_kelamin">Jenis Kelamin: </label>
            <?php $jk = $siswa['jenis_kelamin']; ?>
            <label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>
            <label><input type="radio" name="jenis_kelamin" value="perempuan" <?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>
        </p>
        <p>
            <label for="agama">Agama: </label>
            <?php $agama = $siswa['agama']; ?>
            <select name="agama">
                <option <?php echo ($agama == 'Islam') ? "selected": "" ?>>Islam</option>
                <option <?php echo ($agama == 'Kristen') ? "selected": "" ?>>Kristen</option>
                <option <?php echo ($agama == 'Hindu') ? "selected": "" ?>>Hindu</option>
                <option <?php echo ($agama == 'Budha') ? "selected": "" ?>>Budha</option>
                <option <?php echo ($agama == 'Atheis') ? "selected": "" ?>>Atheis</option>
            </select>
        </p>
        <p>
            <label for="sekolah_asal">Sekolah Asal: </label>
            <input type="text" name="sekolah_asal" placeholder="nama sekolah" value="<?php echo $siswa['sekolah_asal'] ?>" />
        </p>
        <p>
            <input type="submit" value="Simpan" name="simpan" />
        </p>

        </fieldset>


    </form>

    </body>
</html>

Ada beberapa hal yang perlu diperhatikan dalam kode tersebut.

Pertama kita mengubah data dari hasil query menjadi array dengan menggunakan fungsi mysqli_fetch_assoc().

Kenapa menggunakan fungsi tersebut?

Karena data yang akan kita ambil adalah satu baris dan agar indeks array-nya menggunakan nama kolom.

Contoh hasilnya seperti ini:

Array
(
    [id] => 1
    [nama] => Lia
    [alamat] => Jl. Mangga No. 3, Mataram
    [jenis_kelamin] => perempuan
    [agama] => Islam
    [sekolah_asal] => SMPN 32 Ampenan
)

Kemudian data tersebut kita tampilkan untuk menjadi nilai default pada form.

Jangan lupa untuk membuat input id dengan tipe hidden untuk menyimpan id data yang akan di-update.

<input type="hidden" name="id" value="<?php echo $siswa['id'] ?>" />

Untuk input radio dan select, kita menggunakan operator ternary agar bisa membuat atribut checked dan selected.

<p>
    <label for="jenis_kelamin">Jenis Kelamin: </label>
    <?php $jk = $siswa['jenis_kelamin']; ?>
    <label><input type="radio" name="jenis_kelamin" value="laki-laki" <?php echo ($jk == 'laki-laki') ? "checked": "" ?>> Laki-laki</label>
    <label><input type="radio" name="jenis_kelamin" value="perempuan" <?php echo ($jk == 'perempuan') ? "checked": "" ?>> Perempuan</label>
</p>
<p>
    <label for="agama">Agama: </label>
    <?php $agama = $siswa['agama']; ?>
    <select name="agama">
        <option <?php echo ($agama == 'Islam') ? "selected": "" ?>>Islam</option>
        <option <?php echo ($agama == 'Kristen') ? "selected": "" ?>>Kristen</option>
        <option <?php echo ($agama == 'Hindu') ? "selected": "" ?>>Hindu</option>
        <option <?php echo ($agama == 'Budha') ? "selected": "" ?>>Budha</option>
        <option <?php echo ($agama == 'Atheis') ? "selected": "" ?>>Atheis</option>
    </select>
</p>

Ketika kita lihat dari inspect elements…maka akan tampil seperti ini:

Inspect element form edit

Setelah itu, silahkan isi file proses-edit.php dengan kode berikut:

<?php

include("config.php");

// cek apakah tombol simpan sudah diklik atau blum?
if(isset($_POST['simpan'])){

    // ambil data dari formulir
    $id = $_POST['id'];
    $nama = $_POST['nama'];
    $alamat = $_POST['alamat'];
    $jk = $_POST['jenis_kelamin'];
    $agama = $_POST['agama'];
    $sekolah = $_POST['sekolah_asal'];

    // buat query update
    $sql = "UPDATE calon_siswa SET nama='$nama', alamat='$alamat', jenis_kelamin='$jk', agama='$agama', sekolah_asal='$sekolah' WHERE id=$id";
    $query = mysqli_query($db, $sql);

    // apakah query update berhasil?
    if( $query ) {
        // kalau berhasil alihkan ke halaman list-siswa.php
        header('Location: list-siswa.php');
    } else {
        // kalau gagal tampilkan pesan
        die("Gagal menyimpan perubahan...");
    }


} else {
    die("Akses dilarang...");
}

?>

Silahkan simpan dan cobalah untuk mengedit data.

Hasil update data

*Nama Lia di-update menjadi Priscilia Yuliani.

Source code dari tutorial ini tersedia di github: https://github.com/petanikode/tutorial-php-mysql

Akhir Kata…

Terima kasih sudah mengikuti tutorial ini sampai akhir.

Kalau ada yang belum jelas, silahkan diskusikan melalui komentar.

Selamat belajar. 😄