Mencegah Input Data Yang Sama ke MySQL Menggunakan PHP

Update : Cara dibawah ini sebenarnya kurang praktis, Anda bisa menggunakan cara berikut yang lebih praktis, Baca : Mencegah Input Data Yang Sama ke MySQL Menggunakan PHP Part 2
Mencegah Input Data Yang Sama ke MySQL Menggunakan PHP

Terkadang  ada beberapa data – data tertentu yang pada saat di input oleh user tidak boleh sama dengan user lainnya, misalnya seperti data untuk Username, Email, NISN atau NIK. Dengan tidak adanya data ganda, maka tentunya akan sangat membantu untuk mempermudah administrator dalam proses mengidentifikasi, mencari ataupun memfilter data berdasarkan jenis data tertentu.

Baca juga :

Upaya untuk mencegah terjadinya input data yang sama ke Database MySQL juga merupakan salah satu bentuk/bagian dari validasi data. Dalam tahap validasi ini tentu akan terjadi sebuah proses yang memerintahkan PHP untuk terlebih dahulu untuk mengecek apakah ada data yang sama di Database MySQL. Data akan dicek didalam percabangan terlebih dahulu sebelum akhirnya disimpan ke Database, jika kondisinya terpenuhi maka kita bisa mengeset pada percabangan untuk melanjutkan proses penyimpan data, jika tidak terpenuhi maka akan ditampilkan pesan error untuk memberi tahu user bahwa data yang dimasukannya sudah terdapat di Database.

Jadi intinya nanti kita perlu membuat sebuah query yang bertugas untuk mengecek data apakah sudah da didatabase atau belum, nanti proses pengecekannya ditambahkan didalam percabangan lain yang bertugas untuk melakukan pengecekan data

Mencegah Input Data yang Sama ke MySQL Menggunakan PHP
Berikut ini saya akan memberikan contoh sederhana bagaimana untuk mengecek apakah data yang dikirim sudah ada sebelum didatabase atau belum. Dalam contoh ini saya akan mencoba mengecek sebuah data NISN siswa :

Contoh 1 :

<?php
$cek_nisn="SELECT nisn FROM ro_formulir WHERE nisn = '$_POST[nisn]'";
$cek_nisn_proses= mysqli_query($koneksi,$cek_nisn);
$data_nisn = mysqli_fetch_array($cek_nisn_proses, MYSQLI_NUM);
?>


Lalu nanti Anda bisa mengecek atau memanggil data diatas untuk dicek didalam percabangan, contohnya seperti berikut ini


if($data_nisn>0){
$nisnErr="NISN sudah digunakan";
}



Mencegah Input Data yang Sama ke MySQL Menggunakan PHP Prepared

Contoh diatas menggunakan cara biasa, jika kita ingin mengimplementasikan Prepared Statement, maka query atau susunan kodenya bisa dibuat seperti berikut ini

Contoh 2

<?php
//Use Prepare Data
$cek_nisn=mysqli_prepare($koneksi, "SELECT * FROM ro_formulir WHERE nisn = ?") or die(mysqli_error());
$nisnpost=mysqli_real_escape_string($koneksi,$_POST['nisn']);
//bind
mysqli_stmt_bind_param($cek_nisn,"s",$nisnpost);
//execute
mysqli_stmt_execute($cek_nisn);
//result
$result=mysqli_stmt_get_result($cek_nisn);
//fetch array
$data_nisn=mysqli_num_rows($result);

?>



Selanjutnya untuk memanggil pada percabanganya sama seperti pada contoh pertama, yaitu hanya cukup membuat atau menambah baris berikut pada percabangan

if($data_nisn>0){
$nisnErr="NISN sudah digunakan";
}



#Tambahan / Ralat
Pada query terkahir kalian juga bisa saja menggunakan mysqli_num_rows ($namavariabel); lalu panggil variabel pada percabanganny seperti berikut $nama_variabel>1. atau juga bisa mengeceknya secara manual menggunakan mysqli_num_rows pada percabangannya, seperti berikut ini

$sql = "SELECT nisn FROM ro_formulir WHERE username='$data'";
$cek_nisn = mysqli_query($koneksi, $sql);
     
 if (mysqli_num_rows($cek_nisn) > 0) {
 $nisnErr="pesan error";    
}

Perlu diingat bahwa ketika kalian berhasil submit ke database, dan kalian coba back halaman sebelumnya, dan melakukan submit ulang, maka secara otomatis data akan tersubmit kembali, sehingga akan ada data ganda. Seolah - olah percabangannya tidak jalan, jadi kalau sudah berhasi submit sebaiknya pada percabangan terakhir arahkan user ke halaman lain agar ada proses reload/refresh halaman. Soalnya kalau di percabangannya di panggil seperi ini $data_nisn[0]>1 kadang percabanganya tidak jalan, dan jika percabangannya tidak jalan atau tidak memvalidasi dengan baik, coba rubah pemanggilannya jadi seperti ini $data_nisn>0

Ketika saya coba buat dipercabangannya jadi $data_nisn>0 ternyata meskipun user melakukan back ke halaman sebelumny, dan melakukan submit ulang, jika ada data sebelumnya, dia tidak akan mensubmit data sebelumnya yang sama. Jadi sebaiknya nanti pada percabangan, pakai $nama_variabel>0



#CATATAN PENTING
kalau boleh saran pastikan untuk data NISN di set ke Char(10) dan pada waktu input, pastikan diset ke nilai benar, misalnya untuk nisn dengan char(10)  maka pas input jangan pakai %d untuk integer tapi pakai %s. Hal tersebut akan berakibat fatal pada saat pengecekan data. Jadi nanti misalnya ketika nilai input dimulai dari 1 atau 2, percabangan berfungsi dengan baik kalau ada data yang sama di DB, dia tidak akan submit. Tapi kalau data nisn-nya dimulai dari angka dengan input 3 atau 9, dia bisa submit data yang sama berkali - kali padahal sudah ada di Database, hal tersebut karena pada saat kita insert datanya dijadikan nilai INTEGER, maka tentu saja nanti tipe data bakal berubah jadi Integer di database dan nilainya pasti di set dari angka 2, dan si PHP tentu akan mensubmit data berkali - kali jika nilai inputnya dimulai dari 3 atau 9, sebab angka tersebut tidak ada di database, dan setelah berhasil disubmit pun angkanya akan berubah nilai.
http://php.net/manual/en/function.sprintf.php

KESIMPULAN :
  1. Lakukan Query seperti biasa,  bisa pakai num_rows atau fetch_array
  2. Selanjutnya  lakukan validasi dengan memanggilnya dipercabangan,bisa dengan cara seperti ini $data_nisn>1 atau $data_nisn>0
UPDATE :
Jika contoh diatas terlalu ribet untuk dipahami, pakai cara ini, intinya sama saja hahah ..
$sql = "SELECT nisn FROM ro_formulir WHERE nisn = ?";
        
        if($stmt = mysqli_prepare($koneksi, $sql)){
            mysqli_stmt_bind_param($stmt, "s", $param_nisn);
              $param_nisn = test_input($_POST["nisn"]);//test input function yang saya buat
               if(mysqli_stmt_execute($stmt)){
                mysqli_stmt_store_result($stmt);
                if(mysqli_stmt_num_rows($stmt) == 1){
                    $nisnErr = "Maaf NISN $param_nisn sudah terdaftar !";
                    $nisnClass=$class1;
                    $nisnClass_icon=$class2_icon;
                } else{
                    $nisn= test_input($_POST["nisn"]);
                    $nisn=mysqli_real_escape_string($koneksi,$nisn);
                }
            } else{
                echo "Terjadi kesalahan ! coba lagi nanti.";
            }
        }
         
        // Close statement
    
        mysqli_stmt_close($stmt);
    }

1 Response to "Mencegah Input Data Yang Sama ke MySQL Menggunakan PHP"

  1. Usuluddin, S.KomMarch 31, 2022 at 7:01 PM

    bagaimana untuk yg update?

    ReplyDelete

Komentar yang Anda kirim akan terlebih dahulu di moderasi oleh Admin

mahjongways menghadirkan evolusi visual digital melalui perpaduan animasi adaptif dan teknologi antarmuka modernintegrasi teknologi real time mengubah cara platform digital mengelola interaksi dan respons penggunaperan random number generator menjaga independensi hasil pada sistem permainan digital modernmengenal cara mahjongways mengembangkan pengalaman interaktif melalui sistem respons simbol dan desain grafis digitalarsitektur microservices menjadi fondasi penting dalam membangun infrastruktur platform digital yang lebih fleksibelmengenal volatilitas dan distribusi hasil dalam karakteristik matematis permainan digital berbasis rngmahjong ways dan evolusi budaya digital melalui perpaduan warisan tradisional dengan teknologi interaktif moderntransformasi infrastruktur digital memperlihatkan peran penting otomatisasi dalam menjaga stabilitas sistemmahjongways memperlihatkan perkembangan desain permainan digital melalui optimalisasi animasi dan transisi visualgame pg soft dan perubahan standar desain visual dalam industri hiburan digitalmengapa game pg soft sering dibahas dalam perkembangan permainan berbasis smartphonedi balik game pg soft bagaimana teknologi animasi membentuk pengalaman penggunagame pg soft dalam sorotan perbedaan antara fitur interaktif dan mekanisme acakketika tampilan game pg soft menjadi bahan diskusi tentang psikologi warnamengulas game pg soft dari sisi perkembangan antarmuka dan kenyamanan navigasigame pg soft dan tantangan membedakan informasi resmi dari klaim komunitasbagaimana game pg soft mengadaptasi elemen budaya dalam konsep visual permainangame pg soft dan pentingnya memahami perbedaan antara rtp serta hasil sesaatfenomena konten video pendek yang membentuk persepsi publik tentang game pg softgame online dan fenomena munculnya pemimpin komunitas dari kalangan pemain biasamengapa sistem reputasi menjadi bagian penting dalam interaksi game onlineketika game online menghadirkan tantangan baru dalam menjaga etika komunikasiperubahan pola kerja sama tim menjadi sorotan dalam perkembangan game onlinegame online dan peran sistem moderasi dalam membangun lingkungan bermain yang sehatbagaimana game online menghubungkan komunitas kecil menjadi jaringan globalfenomena pemain game online yang mengembangkan keterampilan organisasi komunitasgame online dalam kajian perubahan kebiasaan sosial di ruang virtualmengapa transparansi sistem peringkat menjadi perhatian dalam komunitas game onlineketika game online menjadi ruang kreatif bagi pembuat konten dan pemaingame digital dan perubahan cara pengembang membangun dunia virtual yang realistismengapa teknologi haptic feedback menjadi pembahasan menarik dalam game digitalketika game digital menghadirkan karakter yang bereaksi terhadap keputusan pemainperan pencahayaan dinamis dalam membangun suasana permainan game digitalgame digital dan tantangan menjaga identitas seni di tengah perkembangan aibagaimana sistem penyimpanan cloud mengubah pengalaman mengakses game digitalfenomena game digital yang mengangkat cerita rakyat menjadi petualangan interaktifgame digital dalam sorotan perubahan cara studio indie mengembangkan karyamengapa pelestarian game digital lama menjadi topik penting dalam arsip teknologiketika game digital digunakan untuk mengenalkan konsep sains melalui simulasigates of olympus dan kisah mitologi zeus yang diadaptasi menjadi hiburan digitalmengapa sweet bonanza menggunakan tema permen dalam membangun identitas visual gamestarlight princess dan peran karakter fantasi dalam perkembangan desain slot modernfenomena big bass bonanza yang menggabungkan tema memancing dengan mekanisme permainansugar rush 1000 dan cara animasi warna warni membentuk pengalaman visual penggunamengenal the dog house megaways dari sisi desain karakter dan variasi fitur gamegates of hades mengangkat dunia bawah mitologi yunani ke dalam konsep permainan digitaldi balik sweet rush bonanza ada konsep pengali yang menarik dibahas secara matematisfortune of olympus dan perbedaan desain mekanisme permainan bertema dewa yunanimengapa gates of olympus 2500 menarik dikaji dari sisi evolusi seri game digitalkasino online dan tantangan menjaga keamanan akun di tengah ancaman digitaldi balik istilah rtp kasino digital ada perhitungan yang sering disalahartikanketika kasino online menghadapi persoalan transparansi dalam penanganan keluhankasino digital dan fenomena kesalahan persepsi terhadap kemenangan beruntunmemahami peran autentikasi dua faktor dalam melindungi akun kasino onlinekasino online dalam sorotan praktik pengumpulan data dan persetujuan penggunaketika fitur batas pengeluaran menjadi bagian dari perlindungan pengguna kasino digitalkasino digital dan tantangan menjelaskan mekanisme permainan kepada pengguna barumenelusuri hubungan antara kasino online dan perubahan pola konsumsi konten videokasino online dan pentingnya memahami perbedaan antara risiko dan ketidakpastianmahjong ways 2 memiliki pengaturan animasi yang berkaitan dengan kelancaran tampilan pada smartphonepenggunaan refresh rate tinggi pada layar smartphone membawa perubahan dalam pengalaman game mobilemahjong ways menampilkan detail simbol yang dipengaruhi oleh pengaturan resolusi layar perangkatperkembangan teknologi browser membantu game berbasis web menampilkan konten lebih responsifmahjong ways 2 dan pengaruh koneksi internet terhadap kecepatan memuat elemen permainanpenggunaan mode hemat daya pada smartphone dapat memengaruhi kelancaran animasi game digitalmahjong ways menghadirkan tampilan bernuansa asia yang menarik dilihat dari sisi desain antarmukaperkembangan teknologi grafis mobile membuat efek transisi dalam game terlihat semakin haluspengelolaan cache browser menjadi bagian penting dalam menjaga pengalaman mengakses game digitalmahjong ways 2 memperlihatkan perpaduan mekanisme cascade dan penyajian informasi visualkasino online dan tantangan memahami syarat layanan di tengah kemudahan aksesdi balik tampilan kasino digital ada teknologi enkripsi yang melindungi informasiketika kasino online menjadi bagian dari diskusi tentang kecanduan digitalkasino digital dan peran pengawasan transaksi dalam mencegah penyalahgunaanmemahami mengapa klaim pola permainan kasino online perlu diperiksa secara kritiskasino online dalam sorotan perkembangan sistem pembayaran lintas negarafenomena kasino digital dan tantangan menjaga keseimbangan aktivitas sehari hariketika kasino online memanfaatkan desain responsif untuk berbagai ukuran layarkasino digital dan pentingnya memahami perbedaan antara privasi dan anonimitasmenelusuri hubungan antara kasino online dan perkembangan teknologi pencegahan penipuanmahjong ways 2 memiliki detail animasi yang bisa terlihat berbeda pada setiap jenis layar smartphonepenggunaan gpu pada smartphone memiliki peran penting dalam menampilkan efek visual game digitalmahjong ways menghadirkan susunan simbol yang menarik dipahami dari sisi desain antarmukaperkembangan teknologi layar oled membawa perubahan pada tampilan warna dalam game mobilemahjong ways 2 dan cara sistem permainan menampilkan perubahan simbol secara berurutanpengaturan kualitas grafis game mobile membantu menyesuaikan tampilan dengan kemampuan perangkatmahjong ways memadukan ornamen tradisional dengan elemen digital yang membentuk identitas visualperkembangan teknologi game berbasis browser membuka pilihan baru dalam hiburan digitalmahjong ways 2 menampilkan hubungan antara efek suara dan perubahan animasi selama permainanpenggunaan teknologi kompresi aset membantu game mobile mengurangi beban penyimpanan perangkatkasino online dan peran teknologi browser dalam menjaga kelancaran akses digitaldi balik sistem kasino digital ada proses sinkronisasi data yang jarang dibahasketika kasino online menghadapi tantangan keamanan pada perangkat selulermemahami pengaruh latensi jaringan terhadap respons layanan kasino digitalkasino digital dan fenomena penggunaan informasi pribadi dalam ekosistem internetmenelusuri cara sistem kasino online menangani gangguan koneksi mendadakkasino online dan pentingnya mengenali risiko ekstensi browser yang tidak terpercayaketika pembaruan sistem mengubah tampilan dan navigasi kasino digitalkasino digital dalam pembahasan tentang keamanan penyimpanan data penggunamemahami hubungan antara kasino online dan perkembangan teknologi deteksi aktivitas tidak wajar