-->

Mengatasi bug Data terinput dua kali (double) ketika submit form di PHP dan MySQLi

Mengatasi bug Data terinput dua kali ketika submit form di PHP dan MySQLi
Pastinya anda mungkin pernah  mengalami bug dimana anda memiliki query insert yang seharusnya insert data 1 record tetapi jadi 2 baris record dengan data yang sama, ketika submit maka data terinput dengan benar tetapi ketika di cek data terinput 2 kali dengan record yang sama, sepeti anda lihat di bawah ini


Aneh dengan hal tersebut saya mencoba mengecek kembali code yang sudah saya buat seperti terlihat pada gambar di bawah ini :

<?php

            date_default_timezone_set('Asia/Jakarta');

            if(isset($_POST['kode'])){

                $sql = mysqli_query($koneksi, "SELECT * FROM kehadiran WHERE nik='$_POST[kode]' AND event='$event'") or die (mysqli_error($koneksi));

                if( mysqli_num_rows($sql);== 0){

                $kode = $_POST['kode'];

                  $acara= $event;

                  $status = "Hadir";

                  $tanggal = date("Y-m-d H:i:s");

                $insert = mysqli_query($koneksi, "INSERT INTO kehadiran (nik, tanggal, event, status) VALUES ('$kode', '$tanggal', '$acara', '$status')") or die (mysqli_error($koneksi));

                if($insert){

                    echo '<script>sweetAlert({

                                                       title: "Berhasil!", 

                                                        text: "Terimakasih sudah hadir!", 

                                                        type: "success",

                                                        timer : 2000

                                                        });</script>';

                }else{

                    echo '<script>sweetAlert({

                                                       title: "Gagal!", 

                                                        text: "Ups, Anda sudah terdaftar hadir!", 

                                                        type: "error",

                                                        timer : 2000

                                                        });</script>';

                    }

                

                    

            }else{

                  echo '<script>sweetAlert({

                                                       title: "Gagal!", 

                                                        text: "Ups, Anda sudah terdaftar hadir!", 

                                                        type: "error",

                                                        timer : 2000

                                                        });</script>';

                } 

            

   }

            

            ?>

Saya cek berkali kali kode tersebut normal dan tidak masalah, saya coba kembali berkali - kali namun masih mendapatkan bug yang sama, data masih terinput double, akhirnya setelah lama mencoba ternyata masalahkan adalah di conditional if yang saya buat untuk pengecekan data sebelum data terinput, kodenya seperti berikut

$sql = mysqli_query($koneksi, "SELECT * FROM kehadiran WHERE nik='$_POST[kode]' AND event='$event'") or die (mysqli_error($koneksi));

if( mysqli_num_rows($sql)== 0)

dari kode tersebut terlihat pengecekan query secara langsung dengan conditional if, ternyata jika kode if( mysqli_num_rows($sql);== 0) langsung dieksekusi tanpa membuat variabel terlebih dahulu membut data tersubmit dua kali, dan masuk kedalam database double dengan data yang sama, lalu saya perbaiki kode nya menjadi seperi di bawah ini

$sql = mysqli_query($koneksi, "SELECT * FROM kehadiran WHERE nik='$_POST[kode]' AND event='$event'") or die (mysqli_error($koneksi));

$hasilquery = mysqli_num_rows($sql);

if( $hasilquery == 0)

mysqli function saya buat menjadi sebuah variabel dengan kode lengkap seperti di bawah ini

<?php

            date_default_timezone_set('Asia/Jakarta');

            if(isset($_POST['kode'])){

                $sql = mysqli_query($koneksi, "SELECT * FROM kehadiran WHERE nik='$_POST[kode]' AND event='$event'") or die (mysqli_error($koneksi));

                $hasilquery = mysqli_num_rows($sql);

if( $hasilquery == 0){


                $kode = $_POST['kode'];

                  $acara= $event;

                  $status = "Hadir";

                  $tanggal = date("Y-m-d H:i:s");

                $insert = mysqli_query($koneksi, "INSERT INTO kehadiran (nik, tanggal, event, status) VALUES ('$kode', '$tanggal', '$acara', '$status')") or die (mysqli_error($koneksi));

                if($insert){

                    echo '<script>sweetAlert({

                                                       title: "Berhasil!", 

                                                        text: "Terimakasih sudah hadir!", 

                                                        type: "success",

                                                        timer : 2000

                                                        });</script>';

                }else{

                    echo '<script>sweetAlert({

                                                       title: "Gagal!", 

                                                        text: "Ups, Anda sudah terdaftar hadir!", 

                                                        type: "error",

                                                        timer : 2000

                                                        });</script>';

                    }

                

                    

            }else{

                  echo '<script>sweetAlert({

                                                       title: "Gagal!", 

                                                        text: "Ups, Anda sudah terdaftar hadir!", 

                                                        type: "error",

                                                        timer : 2000

                                                        });</script>';

                } 

            

   }

            

            ?>

Setelah saya perbaiki kode tersebut kemudian saya jalankan dan ketika submit, bug tersebut sudah tidak muncul lagi, data terinput 1 kali dan record yang masuk ke databse juga tidak double seperti sebelumnya.

Jadi jika anda mengalami bug yang sama seperti yang saya alami ada baiknya anda membuat variabel untuk function mysqli di conditional if, sebab jika tidak maka data akan otomatis terinput dua kali dan terecord di database double.

Semoga penjelasan singkat saya ini bkisa beguna dan bermanfaat untuk anda yang sedang mengalami bug Data terinput dua kali (double) ketika submit form di PHP dan MySQLi, silahkan anda coba dan ada praktekkan.

Happy Coding & Programming

Iklan Atas Artikel

Iklan Tengah Artikel 1

Iklan Tengah Artikel 2

Iklan Bawah Artikel