如何根据日期自动设置ID

时间:2018-12-05 00:03:29

标签: php database

我是PHP的新手。我希望有一个人可以帮助我。在此之前,对不起我的英语不好。

我想根据另一个表的日期和ID设置kd_transaksi。人们预订时,系统会自动设置kd_transaksi。

$tgl_pesan = date("Ymd");

$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);

$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);
}

但是查询$ cek中的结果为NULL。

$cek = mysqli_query($conn, "SELECT max(kd_booking) AS kode FROM booking WHERE kd_booking LIKE '$tgl_pesan%'");

我该如何解决?

预订表

CREATE TABLE `booking` (
  `kd_booking` int(11) NOT NULL,
  `id_user` int(11) NOT NULL,
  `kd_paket` int(11) NOT NULL,
  `jml_org` int(11) NOT NULL,
  `tgl_pesan` date NOT NULL,
  `tgl_wisata` date NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

我想要的是

如果某人今天预订并获得kd_booking 21,则输出为:BO2018120521。

1 个答案:

答案 0 :(得分:0)

首先,您的CREATE TABLE出了点问题。创建表时,您应该有一个AUTOINCREMENT主键,这是您的ID。所以会是这样:

CREATE TABLE `booking` ( `id` INT NOT NULL AUTO_INCREMENT , `id_user` INT(11) NOT NULL , `kd_paket` INT(11) NOT NULL , `jml_org` INT(11) NOT NULL , `tgl_wisata` DATE NOT NULL , `tgl_pesan` DATE NOT NULL , PRIMARY KEY (`id`)) ENGINE = InnoDB;

据我所知,您有两个错误:

  1. 日期应类似于date('Y-m-d')http://php.net/manual/en/function.date.php

  2. 您正试图插入仅适用于字符串的int值,例如““。$ kd_booking。””。

希望有帮助。