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