使用PHP为表单创建运行编号


Create running number to a form using PHP

  1. 我想为每个表单创建一个带有参考号或运行号的表单。例如,第一个表单的参考号是"PPKT/01/14",第二个表单是"PPKT/02/14",第三个表单是"PPKT/03/14",依此类推

  2. "PPKT"已修复。"01,02,03,.."是连续编号。"14"是年份。

  3. 这是我创建的代码。它有效。我的问题是:如果2014年结束,我如何才能停止运行数字"01,02,03,.."。我想把2015年的运行数字从"01"开始。示例"PPKT/01/15"代码下面是数据库。

    <?php
    $con=mysqli_connect("localhost","root","","info");
    // Check connection
    if (mysqli_connect_error()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    function number($str)
    {
    preg_match_all("/[0-9]/",$str, $num);
    $num = implode("",$num[0]);
    return $num;
    }
    //declare variable
    $x="PPKT";
    $y=date("y");
    $sql="Select mp_id, reference_no from information".
    " ORDER BY mp_id DESC";
    $result = mysqli_query($con,$sql) or die(mysqli_connect_error());
    if (mysqli_num_rows($result) > 0) 
    { 
        $row = mysqli_fetch_array($result);
        $mp_id=$row['mp_id'];
        $reference_no=$row['reference_no'];
            $mystr=$mp_id;
            $b=substr($mystr,0,2);
            $j=number($mystr)+1;
            $z=sprintf("%02s",$j);
            //$d=$b.$z;
    }
    else
    { 
    //will create if not in table
            //$b = $x;    
            $z=sprintf("%02s",1);
            //$d=$b.$z;
    }
    // output
    $reference_no="$x/$z/$y";
    echo "Reference Number => ".$reference_no;
    ?>
    
  4. 数据库信息:

    CREATE table information (
    mp_id int(4) NOT NULL, PRIMARY KEY'
    reference_no varchar(15) NOT NULL,
    name varchar(20) NOT NULL );
    

替换行:

$j=number($mystr)+1;

带有一个测试年份的条件语句。如果年份不同,则$j为1,否则,您可以像原始代码中那样,通过在$mystr中添加1来添加获取$j

新代码为:

if (mysqli_num_rows($result) > 0) 
{ 
    $row = mysqli_fetch_array($result);
    $mp_id=$row['mp_id'];
    $reference_no=$row['reference_no'];
        $mystr=substr($reference_no,5,2);
        $ref_year=substr($reference_no,-2);
        if ($ref_year == $y) { // Checks if the year changed
          $j=number($mystr)+1;
        } else {
          $j=1;
        }
        $z=sprintf("%02s",$j);
}