如何使用PHP中的给定序列生成票号

时间:2016-01-21 10:32:47

标签: javascript php

我需要一个帮助。我需要使用给定的序列生成一个票号,这个序列在PHP下面给出。

1-W1(mandotary).
2-date(yy-dd-mm)format.
3-001-999(each day it will start from 001).

下面给出一个例子。

e.g-W120160121001

我做了以下不完整的部分。

if($_REQUEST['typeOfApp']=="WEB"){
        $ticket_id='W1'.date("Y-m-d").'';
    }

假设一次点击事件我将生成此票号,每天该票号的最后3位数将从001开始到999.请帮助我。

4 个答案:

答案 0 :(得分:0)

可能你只需要这样的东西:

$ticketnumber = 'W1'.date('YdM' time()).str_pad($value, 3, '0', STR_PAD_LEFT);

$ value是当天输入的最后一张票证密钥。这可以通过检查最后一个票务日的功能来处理。如果同一日期+1计数。如果不是相同的日期重置计数器。

因此,假设您有以下功能来生成故障单代码:

function ticket_id_generator($ticketnumber){
    $dateline = intval(substr($ticketnumber, 2, 8));
    $value = intval(substr($ticketnumber, -3));
    if($dateline == date('YdM', time())
        return $value++;
    else 
        return '1'; 
}

答案 1 :(得分:0)

在表格中再添加一个类似id的字段,该字段存储您的机票预订的ID号。以及在表中插入记录之前必须添加的另一个查询。

首先检查同一日期的记录数量是多少?然后递增该记录的计数并附加动态生成票证代码,如下所示。

$ticketnumber = 'W1' . date('YdM'). str_pad(($tempid + 1), 3, '0', STR_PAD_LEFT);
$tempid is the key which is added/started from 1 for the same date.

答案 2 :(得分:0)

PHP 没有用于同步块代码执行的机制
2个用户可以获得相同的票号!! 另外,你必须将当前的票号存储在某个地方!!

就个人而言,我写过一个开源项目,它持有ans同步变量的访问权限,你可以从github这里得到它:PHP - Synchronized Data Structure Server

还有其他解决方案,例如使用数据库存储和增加同步风格

答案 3 :(得分:0)

$file = 'ticketfile.txt';
// Open the file to get existing content
$current = file_get_contents($file);

// Increase ticket number
$current=$current+1;

// Write the contents back to the file
file_put_contents($file, $current);

$ticketNum = "W1".date('dmy').$current;

echo($ticketNum);

// This will echo out something like this 
// W121012016001

您还可以将票号保存到数据库,并在创建新票证之前调用最后一次。