Postingan lainnya
Bagaimana cara membuat kode otomatis berdasarkan tanggal
mohon bantuannya gan. saya ingin membuat kode transaksi otomatis dimana kode transaksi itu gambungan antara kd_booking (auto increment) dan tanggal pesan. code yang saya tulis seperti ini
<?php
include '../config/connection.php';
$id_user = $_POST['id_user'];
$kd_paket = $_POST['kd_paket'];
$jml_org = $_POST['jml_org'];
$tgl_pesan = date("Y-m-d");
$tgl_wisata = $_POST['tgl_wisata'];
$wkt_wisata = $_POST['wkt_wisata'];
$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);
$cek = mysqli_query($conn, "SELECT max(kd_booking) AS kode FROM booking WHERE kd_booking LIKE '$tgl_pesan%'");
$row = mysqli_fetch_array($cek);
$kdMax = $row['kode'];
$nourut = substr($kdMax, 8, 4);
$nourut++;
$char = "BO";
$kd_transaksi = $char . $tgl_pesan .printf('%04s', $nourut);
$kd_booking = mysqli_insert_id($conn);
$pack = mysqli_query($conn,"SELECT harga FROM paket WHERE kd_paket='$kd_paket'");
$data = mysqli_fetch_array($pack);
$total_bayar = $data['harga'] * $jml_org;
$book = "INSERT INTO detail_booking (kd_booking,kd_transaksi,total_bayar) VALUES ('".$kd_booking."','$kd_transaksi',$total_bayar')";
$ok = mysqli_query($conn,$book);
if ($ok) {
header('location:../mybooking.php');
}else{
mysqli_close($conn);
}
?>
outputnya hanya 0000 dan tidak menyimpan ke database.
6 Jawaban:
logikanya seperti ini :
- hitung jumlah booking yang ada pada hari ini => $totalBooking
- buat format tgl hari ini. => $date = date("Ymd")
- generate kode booking => $booking_code = 'BO'.$date.($totalBooking+1).
- insert ke db
coba dulu query nya di mysql (SQLyog), manual. betul gak qurty insertnya bisa ke save dan auto increment nya otmatis bertambah waktu insert transaksi berikutnya.
kesalahan awalnya itu pertama disini mas
<pre> $cek = mysqli_query($conn, "SELECT max(kd_booking) AS kode FROM booking WHERE kd_booking LIKE '$tgl_pesan%'"); </pre> itu hasilnya bernilai Null kemudian saya rubah jadi
<pre> $cek = mysqli_query($conn, "SELECT max(kd_booking) AS kode FROM booking WHERE kd_booking LIKE '$tgl_pesan%'"); $row = mysqli_fetch_array($cek); $kdMax = $row['kode'];
$nourut = substr($kdMax, 8, 4); $nourut++; $char = 'BO'; $nourut = 0; if ($nourut==Null) { $kd_transaksi = $char.$tgl_pesan.printf('%04s', $nourut); $nourut = 0;
$kd_booking = mysqli_insert_id($conn);
$book = "INSERT INTO detail_booking (kd_booking,kd_transaksi,total_bayar) VALUES ('".$kd_booking."','$kd_transaksi',$total_bayar')";
$ok = mysqli_query($conn,$book);
if ($ok) {
header('location:../mybooking.php');
}else{
mysqli_close($conn);
}
}else{ $nourut = 1; } </pre> tapi ouputnya masih 0000. salahnya dimana ya mas?
Tanggapan
ya jelas 0 terus, itu no urutnya kan nilainya diubah ke 0. emg hasil yg diharapkan kyk gimana?
hasil yang diharapkan itu. misalkan di melakukan booking hari tanggal 5-12-2018 dan nomor kd_bookingnya 21. nanti kd_transaksinya jadi BO2018120521 mas
saya kasih $nourut itu 0 karena query select nya hasilnya Null mas. tapi penulisannya itu saya tidak tau apakah sudah benar/blm. mohon koreksinya mas
Itu $kodeMax hasilnya apa?
hasilnya ga muncul mas, soalnya query $cek bernilai Null. supaya ga bernilai null caranya gimana ya mas?
dari awal query mu salah, di tabel booking ndak ada field kd_booking. coba kamu cek lg
ok mas. Terima kasih koreksinya
hasil yang diharapkan itu. misalkan di melakukan booking hari ini tanggal 5-12-2018 dan nomor kd_bookingnya 21. nanti kd_transaksinya jadi BO2018120521
itu like nya salah. yang sekarang variabel $tgl_pesan jadi string.
contoh: $cek = "select * from tabel1 where field1 like '".$string."%'"
dan format tanggal yg di $tgl_pesan harus sesuai dengan yg di tabel. format tabel : mm/dd/yyyy yg di $tgl_pesan juga mesti sama.
Tanggapan
terima kasih banyak atas bantuannya mas
dan kalo tanggalnya ada di tengah like nya harus : %field%
- kalo field% berati yg depannya field belakangnya terserah
- kalo %field berarti yg depan terserah tapi belakangnya harus field
- kalo %field% berarti depan belakang terserah, yg ditengah field