Kolom Form Sistem Update PHP Dikosongkan, Kenapa Database Jadi Kosong Juga ?

171

Banyak sekali yang bertanya di Facebook Page Rio Bermano tentang “Kenapa Data yang di Update ke Database di PHP tidak Update Ketika Salah Satu Data Dikosongkan ?“, kali ini kalian akan temukan jawabannya. Jawaban ini ternyata berkaitan dengan postingan sebelumnya tentang kondisi dasar if & else PHP, silahkan dibaca terlebih dahulu kalo belum tau kondisi if & else.

Cara kerja sistem UPDATE PHP itu mengambil semua data dari bidang/field yang ada di dalam form bersangkutan, gak peduli kosong atau berisi yang penting diambil datanya. Nah, misalnya pada akun member adik sudah mempunyai semua data di databasenya, kemudian ketika di edit dan akan di update tidak semuanya diisi hanya beberapa kolom saja maka artinya kolom yang lain dikosongkan.

Belum tau cara membuat sistem update PHP ? Lihat disini.

Jika seperti itu, semua bidang yang dikosongkan akan tetap di update kedatabase member adik dan menimpa data yang sudah ada. Itulah alasannya kenapa data yang sudah ada menjadi kosong ketika di UPDATE. Lalu bagaimana mengatasi hal ini ? Sudah baca kondisi if & else tadi ? Mari lanjutkan kebawah.

Solusi

Untuk mengatasi hal ini kita perlu mengatur kondisi pada sistem update nya, misalnya awalnya sistem update yang dibuat seperti ini (normal tanpa kondisi):

if(isset($_POST['submit'])) {
        $id_member = $_POST['id_member'];
        $username = $_POST['username'];
        $email = $_POST['email'];
        $password = md5($_POST['password']);
        $nama = $_POST['nama'];
        $id_statusakun = $_POST['id_statusakun'];
        $id_jurusan1 = $_POST['id_jurusan1'];
        $id_matakuliah1 = $_POST['id_matakuliah1'];
        $alamat = $_POST['alamat'];
        $tentang_saya = $_POST['tentang_saya'];
        $ttl = date($_POST['ttl']);
        $no_hp = $_POST['no_hp'];
        $semester1 = $_POST['semester1'];
        $profesi = $_POST['id_bidang_pekerjaan'];
        $id_lencana = $_POST['id_lencana'];
        $file_name = $_FILES['foto_profil']['name'];
        $tmp_name = $_FILES['foto_profil']['tmp_name'];
        move_uploaded_file($tmp_name, "assets/img/foto-profil/".$file_name);
        mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_jurusan2 = '$id_jurusan2', id_jurusan3 = '$id_jurusan3', id_jurusan4 = '$id_jurusan4', id_jurusan5 = '$id_jurusan5', id_jurusan6 = '$id_jurusan6', id_matakuliah1 = '$id_matakuliah1', alamat = '$alamat', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana', foto_profil = '$file_name' WHERE id = '$id_member'");
        }
        header("location: index.php?edit-profil&berhasilupdateprofil");
    }

Perhatikan pada sistem UPDATE ini tidak terdapat kondisi (mysqli_query($koneksi, “UPDATE member SET”)), artinya ketika mengedit/update data member ini dan mengosongkan salah satu bidang pasti bidang tersebut menjadi kosong di databasenya walaupun sebelumnya sudah lengkap semua tidak ada yang kosong.

Sekarang, buatlah kondisi supaya ketika salah satu bidang dikosongkan saat update (sebelumnya sudah ada datanya di database) tidak akan menjadi kosong. Contohnya kondisi untuk kolom alamat:

if(isset($_POST['submit'])) {
        $id_member = $_POST['id_member'];
        $username = $_POST['username'];
        $email = $_POST['email'];
        $password = md5($_POST['password']);
        $nama = $_POST['nama'];
        $id_statusakun = $_POST['id_statusakun'];
        $id_jurusan1 = $_POST['id_jurusan1'];
        $id_matakuliah1 = $_POST['id_matakuliah1'];
        $alamat = $_POST['alamat'];
        $tentang_saya = $_POST['tentang_saya'];
        $ttl = date($_POST['ttl']);
        $no_hp = $_POST['no_hp'];
        $semester1 = $_POST['semester1'];
        $profesi = $_POST['id_bidang_pekerjaan'];
        $id_lencana = $_POST['id_lencana'];
        $file_name = $_FILES['foto_profil']['name'];
        $tmp_name = $_FILES['foto_profil']['tmp_name'];
        if($alamat = $_POST['alamat'] == ""){
            move_uploaded_file($tmp_name, "assets/img/foto-profil/".$file_name);
            mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana', foto_profil = '$file_name' WHERE id = '$id_member'");
        else {
            move_uploaded_file($tmp_name, "assets/img/foto-profil/".$file_name);
            mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', alamat = '$alamat', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana', foto_profil = '$file_name' WHERE id = '$id_member'");
        }
        header("location: index.php?edit-profil&berhasilupdateprofil");
    }

Berbeda dengan kode sebelumnya, sekarang dalam sistem UPDATE nya terdapat kondisi if dan else. Bisa perhatikan pada bagian if terdapat $alamat dengan struktur seperti itu artinya ketika kolom bagian alamat dikosongkan tidak usah di UPDATE bagian alamat yang ada didatabase member adik ini. Ko bisa ? Lihat di bagian dalam UPDATE member SET nya tidak ada bagian $alamat = ‘alamat’.

Sedangkan dibagian else didalam UPDATE member SET nya terdapat $alamat = ‘alamat’, artinya jika tidak seperti kondisi diatas (if) gunakanlah else yang mengupdate semuanya. Tapi jika kolom alamat dikosongkan pada formulir maka gunakanlah sistem UPDATE yang didalam if.

Jadi, sekarang ketika member mengupdate profilnya dan mengosongkan bagian alamat tetap bagian alamat memiliki nilai di database (jika sebelumnya sudah ada isinya) dan tidak akan menjadi kosong gara-gara di form updatenya dikosongkan.

Condition ini bisa ditambahkan lagi jika ingin menggunakan banyak kondisi yaitu dengan menambahkan else if. Contoh:

if($alamat = $_POST['alamat'] == ""){
   move_uploaded_file($tmp_name, "assets/img/foto-profil/".$file_name);
   mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana', foto_profil = '$file_name' WHERE id = '$id_member'");
}else if($file_name=="" || empty($file_name)) {
   mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', alamat = '$alamat', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana' WHERE id = '$id_member'");
else {
   move_uploaded_file($tmp_name, "assets/img/foto-profil/".$file_name);
   mysqli_query($koneksi, "UPDATE member SET username = '$username', email = '$email', password = '$password', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', alamat = '$alamat', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana', foto_profil = '$file_name' WHERE id = '$id_member'");
}

Jika tadi hanya memiliki 2 sistem yaitu didalam if dan else, sekarang memiliki 3 sistem yaitu didalam if, else if dan else. Perhatikan tambahan baru ini didalam else if, mendefinisikan bahwa jika gambar / foto kosong maka tidak perlu di update (akan menggunakan gambar / foto yang sebelumnya jika sudah ada) caranya dengan menghilangkan move_uploaded_file().

Tidak hanya 3 sistem saja, kalian bisa terus tambahkan sesuai keperluan. Semakin banyak bidang didalam form yang ingin di kondisikan maka akan semakin banyak pula sistem pada bagian ini.

2 in 1

Selain itu, jika terlalu panjang atau memang sengaja ingin menggabungkan 2 bidang didalam 1 kondisi bisa gunakan cara ini. Membuat 2 bidang dalam satu kondisi dan menggunakan 1 sistem saja, contoh:

if($password = md5($_POST['password'] == "") && $_POST['email'] == ""){
   mysqli_query($koneksi, "UPDATE member SET username = '$username', nama = '$nama', id_statusakun = '$id_statusakun', id_jurusan1 = '$id_jurusan1', id_matakuliah1 = '$id_matakuliah1', alamat = '$alamat', tentang_saya = '$tentang_saya', ttl = '$ttl', no_hp = '$no_hp', semester1 = '$semester1', id_bidang_pekerjaan = '$profesi', id_lencana = '$id_lencana' WHERE id = '$id_member'");

Perhatikan pada bagian if, artinya jika kolom password dan kolom email dikosongkan (bersamaan) maka gunakan sistem ini. Kalianpun dapat menentukan hal lain yang ingin diterapkan bersamaan tidak hanya password dan email saja misalnya nama dan gambar/foto atau yang lainnya sesuai keperluan.

Begitulah cara membuat kondisi dalam sistem UPDATE, memerlukan perhatian khusus jika ingin membuat sistem UPDATE yang keren dan berkondisi. Karena jika tidak menggunakan ini ketika seseorang mengedit / update data didalam form dan mengosongkan salah satu atau beberapa kolom/field yang disediakan akan menjadi kosong di databasenya karena dianggap kosong oleh sistem PHP. Bahkan jika memang sebelumnya kolom tersebut sudah memiliki data akan terhapus.

Catatan: Setiap membuat kondisi seperti ini, pastikan mengosongkan bidang yang di update didalam UPDATESET nya. Misalnya membuat kondisi kosong seperti diatas untuk password maka kosongkan password didalam UPDATE member SET nya.

Kesimpulan

Kondisi if else PHP ini sudah dijelaskan sebelumnya di postingan sebelumnya seperti yang dijelaskan diawal artikel ini, tapi ada sedikit perbedaan dengan yang dijelaskan didalam artikel ini yaitu menggunakan else if yang mana else if ini menjadi tumpuan kedua dan berikutnya antara if dan else (ditengah).

Kondisi seperti ini juga tidak hanya untuk sistem UPDATE saja tapi bisa diterapkan untuk hal lainnya yang memerlukan kondisi PHP. Seperti biasa, penjelasan ini menggunakan MySQLi Statement supaya sesuai dengan tutorial-tutorial PHP sebelumnya.

Masih bingung ? Lihat video tutorialnya disini.

Selamat mencoba !

Lihat Post Lainnya:
Komentar