2014-11-05 71 views
0

我試圖用固定的字母數字部分和可變的3位數字部分生成一個標識符。 也就是說,ID將看起來像:用固定的字母數字字符串和可變的整數部分生成一個標識符php

LAB-SER-420316-1415-000 
LAB-SER-420316-1415-001 
... 
LAB-SER-420316-1415-010 
LAB-SER-420316-1415-020 
... 
LAB-SER-420316-1415-110 
LAB-SER-420316-1415-210 
..... 

我的任務是產生這個ID只有一次,那就是重複的ID必須避免。也一旦加載頁面,它應該生成一個id。這就像給一個賬單號碼或類似的東西。我創建了一個函數來產生這個字符串達到極限。但是每次頁面加載時我都需要它。

代碼:

<?php 
function generatebillno() 
{ 
$saved="LAB-SER-420316-1415-"; 
for($count = 0; $count <= 999; $count++) 
{ 
     $var= str_pad($count, 3, '0', STR_PAD_LEFT); 
     return $saved.$var; 
} 

} 
echo generatebillno(); 
?> 

誰能幫我做這件事。我在這裏停留..

+0

在我心中,你最明顯的解決方案將被存儲在最後一個ID在cookie中,文本文件或數據庫,以便下一次頁面加載可以從最後存儲的ID讀取並相應增加。這是你問的嗎? – David 2014-11-05 06:18:16

+0

的ID將存儲在DB? – 2014-11-05 06:21:19

+0

是的..該ID將被存儲在分貝以及其他細節。 – Aishwaryas 2014-11-05 06:22:41

回答

1

試試這個 -

//fetch the max id (the last digit as number) 
$sql = $mysqli->query('select max(cast(substring(demo_field, 21) as unsigned)) as digit, 

demo_field from demo'); 
$res = $sql->fetch_assoc(); 
//check for empty valyues 
if (empty($res['demo_field'])) { 
    $str = "LAB-SER-420316-1415"; 
    $res['digit'] = 0; 
} else { 
    $str = substr($res['demo_field'], 0, 19); 
} 
$dig = $res['digit'] + 1; 
//add padding if needed 
$dig= str_pad($dig, 3, '0', STR_PAD_LEFT); 
$newStr = $str.'-'.$dig; 

var_dump($newStr); 
+0

感謝您的建議..它幫助我.. – Aishwaryas 2014-11-05 08:06:54

相關問題