【问题标题】:Reset of Serial Numbers By Each Number by each month in phpphp中每个月按每个数字重置序列号
【发布时间】:2015-04-24 03:34:42
【问题描述】:

我想通过以下方式创建序列号。

序列号应在每个月初回到 01。

$stockno=dofetch(doquery("Select count(id) from vehicle",$dblink));
$stock_no= date("Ymd")."-".$stockno=$stockno["count(id)"]+1;

输出是

20150424-01

20150424-02

20150424-03

...

20150430-120

20150501-121

20150501-122

20150502-122

但需要以下格式的结果,当新的月份开始序列将被重置

20150424-01

20150424-02

20150424-03

...

20150430-120

20150501-01

20150501-02

20150502-03

新月份开始重新设置为 1

20150601-01

等等

【问题讨论】:

  • 使用车辆表中的日期列,之后您将能够获得基于日期的计数,如果一个月结束,您将获得一个计数为零,该计数将相应增加
  • 只需使用一个循环并有一个变量存储上个月。如果月份发生变化,则初始化计数。
  • ‐1 为我工作

标签: php date datetime strtotime


【解决方案1】:

给你,

您只需要获取最后插入的序列号值。

$dateString = "20150424-03"; // get Last entry's date from database. ( date("Ymd"). Ex. 20150424-03
$dtData = split('-',$dateString); // $dtData[0] = date part, $dtData[1] = Prefix part
$month1 = date("m",strtotime($dtData[0])); //Get the month of retrived date

//$date2 = date("Ymd"); // Get current date
// OR 
$date2 = date("Ymd", strtotime("+1 day", strtotime($dtData[0]))); // OR Increment last-date by one day
$month2 = date("m",strtotime($date2));  // Get updated date's  month

// now calculate month difference between dates. if months are same, prefix will be increased else prefix will be reset to 1
$prefix = (($month2-$month1) == 0) ? str_pad(++$dtData[1], 2, '0', STR_PAD_LEFT) : str_pad(1, 2, '0', STR_PAD_LEFT);
echo $date2. '-'. $prefix;

简单,不需要对数据库进行任何更改

【讨论】:

    猜你喜欢
    • 2014-11-24
    • 2022-01-11
    • 2020-05-29
    • 2017-10-24
    • 1970-01-01
    • 2016-09-12
    • 1970-01-01
    • 2020-08-28
    • 2014-09-13
    相关资源
    最近更新 更多