我正在尝试自动增加发票编号

时间:2019-11-12 15:57:51

标签: php mysql invoice

你好,我尝试自动增加发票编号,问题是当到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;
    }

?>

1 个答案:

答案 0 :(得分:0)

请参见手册substr()

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

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

     

字符串

     

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

     

开始

     

如果开始为非负数,则返回的字符串将开始于   在字符串中位于开始的位置,从零开始计数。对于   例如,在字符串“ 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);