2014-09-03 14 views
0
  1. 我想爲每個表單創建一個帶有參考編號或運行編號的表單。例如,第一種形式的參考號是「PPKT/01/14」,第二種形式是「PPKT/02/14」,第三種形式是「PPKT/03/14」等等。使用PHP創建運行編號到表單

  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); 
    

回答

0

將行:

$j=number($mystr)+1; 

與測試一年一個條件語句。如果年份不同,那麼$j爲1,否則,您可以添加1到$mystr獲得$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); 

} 
+0

我不明白你的意思。請詳細解釋一下。謝謝 – neo 2014-09-04 02:49:19

+0

我會盡快修改併發布。 – 2014-09-04 12:47:28