【问题标题】:i'm trying to increase the invoice number automatically我正在尝试自动增加发票编号
【发布时间】:2019-11-12 15:57:51
【问题描述】:

大家好,我正在尝试自动增加发票号码,问题是当涉及到 2019-10 时自动返回到 2019-01,她没有完成增加可以有人帮助我

<?php  

    $value2='';
    //Query to fetch last inserted invoice number
    $query = "SELECT numfacturation from facturation order by numfacturation DESC LIMIT 1";
    $stmt = $con->query($query);
    if(mysqli_num_rows($stmt) > 0) {
        if ($row = mysqli_fetch_assoc($stmt)) {
            $value2 = $row['numfacturation'];
            $value2 = substr($value2, 6, 13);//separating numeric part
            $value2 = $value2 + 1;//Incrementing numeric part
            $value2 = "2019-" . sprintf('%02s', $value2);//concatenating incremented value
            $value = $value2; 
        }
    } 
    else {
        $value2 = "2019-01";
        $value = $value2;
    }

?>

【问题讨论】:

  • 什么不起作用?当您收到 100 张发票时会发生什么?
  • 我想知道facturation表的结构和数据是什么。嘿,你的发票号码有primary keyauto_increment 吗?当您向客户展示它时,您可以随时将日期添加到它的前面。
  • -后面的数字是年内的序号吗?
  • 是的,我将在这一年成为今年之后的一年

标签: php mysql invoice


【解决方案1】:

查看substr()的手册;

substr ( string $string , int $start [, int $length ] ) : string

返回由开始和长度指定的字符串部分 参数。

字符串

输入字符串。必须为一个字符或更长。

开始

如果 start 为非负数,则返回的字符串将 startstring 中的第 start 位置,从零开始计数。为了 例如,在字符串 'abcdef' 中,位置 0 处的字符是 'a',位置2的字符是'c',以此类推。

注意“从零开始计数”部分。

考虑两个例子:

$value2 = '2019-XY';
$value2 = substr($value2, 6, 13);
var_dump($value2);

结果:string(1) "Y"

$value2 = '2019-XY';
$value2 = substr($value2, 5, 13);
var_dump($value2);

结果:string(2) "XY"

所以你需要计算从位置0开始的字符。

string:   2019-10
position: 0123456

如您所见,您的号码从位置5(不是6)开始。

另请注意,您使用13 作为长度。但如果你的号码总是两位数,你应该使用:

$value2 = substr($value2, 5, 2);

【讨论】:

  • 非常感谢,它现在可以工作了,我想让 2019 年成为今年,我该怎么做,我会搜索再次感谢您的帮助
  • @BoularhrassNisrine 如果date('Y') 没有回答您的评论,请考虑发布一个新问题。
猜你喜欢
  • 2015-03-27
  • 2012-02-23
  • 2019-05-10
  • 1970-01-01
  • 1970-01-01
  • 2018-11-23
  • 2021-10-26
  • 2021-09-11
  • 1970-01-01
相关资源
最近更新 更多