我有一张表格。
当客户提交表格时,我会将发票发送到他的电子邮箱和我们的网站电子邮件(info@example.com)。
我在客户提交表单时为每张发票生成一个随机数。发票编号看起来像#502689
。
因此,我正在使用像兰德一样的随机函数(99,999999)。我不想再次重复这个随机数。
两天前,我收到了#125459的发票号码,两天后,当另一位客户提交表格时,我再次将发票号码设为#125459
。
那我怎么能忽略这个随机数的重复。请帮帮我。
答案 0 :(得分:0)
使用增量ID的最佳方法。例如,如果你使用mysql,你可以设置为主键,如果它是int自动增量。因此,当您创建新发票时,它将生成下一个id =>没有重复。
如果您想使用随机ID,则必须保持重新输入以生成发票编号,直到不使用当前发票编号。为此,您可以使用以下代码:
do {
$invoice_id = rand(99, 99999);
if(invoice number already exists) { //Use your code here to check if number is unique.
$ok = false; //Invoice number is used. try again a new number
} else {
$ok = true; //Invoice number is not used
}
} while(!$ok)
如果您不生成超过1个发票/秒,则可以使用time()作为id(以秒为单位的unixtimestamp)。但如果你在同一秒内生成2张发票,这对你没有帮助。
如果您不想成为数字,可以使用php的uniqid()方法。
答案 1 :(得分:0)
您必须检查现有的发票号码,以及@ daniel-dudas'解决方案也意味着我也建议使用自动增量数据库解决方案。
不过,您还应该考虑到,在某些国家/地区,法律强制要求发票号码不断增加,而不是随机增加。