Daftar dan Belajar Sekarang!

validasi duplicate data

foto irya
36 Kontribusi 5 Coto
1 minggu yang lalu
saya mau buat validasi agar user tidak bisa melakukan bookingan pada tanggal yang sama. misal budi dia melakukan bookingan paket untuk tanggal 25 desember. kemudian dia melakukan bookingan paket untuk tgl 25 desember lagi. maka disini sistem akan menolak karena tidak boleh melakukan booking pada tanggal yang sama.
session_start();
$id_user = $_POST['id_user'];
$kd_paket = $_POST['kd_paket'];
$jml_org = $_POST['jml_org'];
$tgl_pesan = date("Ymd");
$tgl_wisata = $_POST['tgl_wisata'];
$wkt_wisata = $_POST['wkt_wisata'];

$pack = mysqli_query($conn,"SELECT harga FROM paket WHERE kd_paket='$kd_paket'");
$data = mysqli_fetch_array($pack);
$bayar = $data['harga'] * $jml_org;

$cek = mysqli_query($conn,"SELECT uname,tgl_wisata FROM user JOIN booking USING (id_user) WHERE tgl_wisata='$tgl_wisata' AND uname='$_SESSION[uname]'");
$row = mysqli_fetch_array($cek);
if ($tgl_wisata == $row['tgl_wisata']){
	  echo "<script>window.alert('Maaf proses booking gagal. Anda telah memiliki bookingan lain pada tanggal tersebut')
    window.location='../haldesa.php'</script>";
}else{
	$sql = "INSERT INTO booking (id_user,kd_paket,jml_org,tgl_pesan,tgl_wisata,wkt_wisata) VALUES ('$id_user','$kd_paket','$jml_org','$tgl_pesan','$tgl_wisata','$wkt_wisata')";
	$query = mysqli_query($conn,$sql);
}
errornya progam diatas yaitu masih memproses bookingan untuk tanggal yang sama.

Tag: php database

✔ Forum ini sudah terjawab


Jawaban
foto kikimf
31 Kontribusi 15 Coto
1 minggu yang lalu
Query nya seperti ini :
"SELECT * FROM user JOIN booking USING (id_user) WHERE tgl_wisata='$tgl_wisata' AND uname='$_SESSION[uname]'"
$row>0, sebenarnya cara mudah nya cukup validasi lewat database seperti yang saya bilang, saya sarankan agan nya jg validasi lewat database dengan cara
CREATE UNIQUE INDEX index_booking ON booking(id_user, tgl_wisata);
answered icon
foto dianarifr
478 Kontribusi 211 Coto
1 minggu yang lalu
coba cek jml data user di tgl tsb
<?php 
session_start();
$id_user = $_POST['id_user'];
$kd_paket = $_POST['kd_paket'];
$jml_org = $_POST['jml_org'];
$tgl_pesan = date("Ymd");
$tgl_wisata = $_POST['tgl_wisata'];
$wkt_wisata = $_POST['wkt_wisata'];

$pack = mysqli_query($conn,"SELECT harga FROM paket WHERE kd_paket='$kd_paket'");
$data = mysqli_fetch_array($pack);
$bayar = $data['harga'] * $jml_org;

$cek = mysqli_query($conn,"SELECT count(tgl_wisata) FROM user JOIN booking USING (id_user) WHERE tgl_wisata='$tgl_wisata' AND uname='$_SESSION[uname]'");
$row = mysqli_num_rows($cek);
if ($row > 1){
	  echo "<script>window.alert('Maaf proses booking gagal. Anda telah memiliki bookingan lain pada tanggal tersebut')
    window.location='../haldesa.php'</script>";
}else{
	$sql = "INSERT INTO booking (id_user,kd_paket,jml_org,tgl_pesan,tgl_wisata,wkt_wisata) VALUES ('$id_user','$kd_paket','$jml_org','$tgl_pesan','$tgl_wisata','$wkt_wisata')";
	$query = mysqli_query($conn,$sql);
}

foto irya
36 Kontribusi 5 Coto
1 minggu yang lalu
Maaf mas dianarifr, kok ditanggal yang sama masih di proses ya mas?
<?php
include '../config/connection.php';
session_start();
$id_user = $_POST['id_user'];
$kd_paket = $_POST['kd_paket'];
$jml_org = $_POST['jml_org'];
$tgl_pesan = date("Ymd");
$tgl_wisata = $_POST['tgl_wisata'];
$wkt_wisata = $_POST['wkt_wisata'];

$pack = mysqli_query($conn,"SELECT harga FROM paket WHERE kd_paket='$kd_paket'");
$data = mysqli_fetch_array($pack);
$bayar = $data['harga'] * $jml_org;

$cek = mysqli_query($conn, "SELECT count(tgl_wisata) FROM user JOIN booking USING (id_user) WHERE tgl_wisata='$tgl_wisata' AND uname='$_SESSION[uname]'");
$row = mysqli_num_rows($cek);
if ($row > 1){
	  echo "<script>window.alert('Maaf proses booking gagal. Anda telah memiliki bookingan lain pada tanggal tersebut')
    window.location='../haldesa.php'</script>";
}else{
	$sql = "INSERT INTO booking (id_user,kd_paket,jml_org,tgl_pesan,tgl_wisata,wkt_wisata) VALUES ('$id_user','$kd_paket','$jml_org','$tgl_pesan','$tgl_wisata','$wkt_wisata')";
	$query = mysqli_query($conn,$sql);
	header("location:../mybooking.php");
}
?>
  • coba cek, format tanggal di database dengan format tanggal dari parameter sudah sama atau tidak, - dianarifr
  • formatnya udah sama mas. sama-sama yyyy/mm/dd - irya

Login untuk tulis komentar


foto kikimf
31 Kontribusi 15 Coto
1 minggu yang lalu
bisa divalidasi lewat back end atau dari database nya ditambahkan constraint unique kombinasi id_user dan tgl_pesan(dengan kondisi tgl_pesan type nya Date bukan Timestamp), untuk validasi back end seharusnya $row > 0
  • saya sudah rubah ke $row > 0 mas. ketika tanggal sama berhasil, hasilnya di tolak tapi permasalahannya ketika saya pilih tanggal yang berbeda juga di tolak. itu gimana ya mas? - irya

Login untuk tulis komentar


foto kikimf
31 Kontribusi 15 Coto
1 minggu yang lalu
Query nya seperti ini :
"SELECT * FROM user JOIN booking USING (id_user) WHERE tgl_wisata='$tgl_wisata' AND uname='$_SESSION[uname]'"
$row>0, sebenarnya cara mudah nya cukup validasi lewat database seperti yang saya bilang, saya sarankan agan nya jg validasi lewat database dengan cara
CREATE UNIQUE INDEX index_booking ON booking(id_user, tgl_wisata);
  • terima kasih banyak atas bantuannya mas - irya

Login untuk tulis komentar



Login untuk diksusi di forum sekolah koding