0

我正在生成参考编号REF-082013-001 (REF-mmyyyy-001) 并为每个条目增加最后一部分。第一个记录为 REF-082013-001,第二个记录为 REF-082013-002,依此类推。

我的问题是如何在每个新月通过 php 重置最后一个数字。假设 2013 年 9 月,我希望它是 REF-09-2013-001 并自动递增到 9 月底,然后在 11 月再次重置它。

有没有办法在 php.ini 中做到这一点?非常感谢您的帮助。谢谢

更新

目前'REF-'.date('mY').$maxnumberfromdb在名为 reference_no 的单列中,现在考虑将mm-yyyy ref1 和最后一个数字分别存储在 ref2 中,并在每个月的第一天启动 ref2。

4

2 回答 2

0

您可能可以使用单个表,使用 AUTO_INCREMENT 字段来处理参考号的最后部分,并使用日期/时间字段来跟踪上次重置的时间。

    CREATE TABLE track_reference
        ref_number  INT(11) AUTO_INCREMENT,
        last_reset  DATETIME;

然后你在 PHP 中编写一个函数来获取一个新的参考号,它(伪代码):

    if (MONTH(time()) > MONTH(last_reset)) {
       reset ref_number to 0 (use ALTER TABLE);
    }
    select (ref_number) into $variable;
    return 'REF_<month><year>_$variable;

}

这很粗糙,但你明白了。我还会在MONTH之前出现YEAR,以便以后更容易按参考编号进行排序。

于 2013-08-18T14:38:38.127 回答
0
This is my code for reset counter and update last_reset, this is effective for me

<pre>
$date2 = new DateTime("now", new DateTimeZone('America/New_York') );
        $month_end = strtotime('last day of this month', time());
        $count = $data['sim_tarif_count'];
        $date3=$date2->format('Y-m-d');

        foreach ( $count as $r2 ){
        $counts[] = $r2['count'];
        $last_reset[] = $r2['last_reset'];}

        $paddedNum = sprintf("%04d", $counts[0]);

        $reg_id =  'SEQ'.$date2->format('Ymd').$paddedNum;
        echo " ";
        echo date('j', $month_end); 
        $counter = $counts[0]+1;

//for reset
if($date2->format('Y-m') > $last_reset[0])
{
            $counter = 0;
            $counting_update=$this->docs_model->update_time_counter($counter,$date3);
            echo $counter = 0;
        } else
{
            $counting_update=$this->docs_model->update_time_count($counter);
}
</pre>
于 2016-06-13T09:02:23.247 回答