每年使用php mysql重置发票号码

时间:2013-08-14 05:41:59

标签: php mysql

我需要使用php mysql准备发票,我准备好了,我的问题是每年发票编号重置为第一位。

ex:2013 - 1,2013 - 2,2013 -3。 2014-1,2014-2,2014-3。

我的表

CREATE TABLE IF NOT EXISTS `gen` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`invno` int(11),
`prefix` varchar(500) DEFAULT NULL,
`year` year(4) DEFAULT NULL,
`created_at` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`invno`,`year`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1;

代码是

$year = date("Y", time());

$sql = "SELECT year FROM gen where year = '$year' ";
$result = mysql_query($sql);
$count = mysql_num_rows($result);
$inv = '0';

if ($count == 0) {
    $inv = '0';
} else {
    $list = mysql_fetch_assoc($result);
    $inv = $list['invno'];
}

if ($inv == '0') {
    $inv = '1';
} else {
    $inv++;
}

echo $inv;

当我执行时它显示'1',表中有更多的发票。我把年份放在了不同的领域。我认为sql查询检查表中的年份,如果在该年份发票编号中找不到任何行应该设置为1,其他明智的增加前一个数字。

2 个答案:

答案 0 :(得分:0)

您忘记初始化$inv

尝试

$count = mysql_num_rows($result);
$inv = '0';
if($count == '0')
{
$inv = '0';
.....

您也没有在查询中选择invno

$sql="SELECT year FROM gen where year = '$year' ";
$inv = $list['invno'];


$sql="SELECT max(invno) FROM gen where year = '$year' ";// may be this is what you want

答案 1 :(得分:0)

嘿,首先这个数字是一个字符串。删除''并仅输入数字。 if($ count == 0)