2014-01-30 102 views
0

我試圖生成自定義訂單號。我的MySQL表如下: tblOrder id int(11)AI; ordno varchar(50);生成自定義訂單號

爲了實現這個目的,我嘗試在記錄添加事件之前使用下面的函數在php塊中使用

{ 

$sql="select max(substr(ordno,9)) as mx from ord where substr(ordno,7,2)=month(now()) order by mx"; 
$rs=CustomQuery($sql); 
$data=db_fetch_array($rs); 
$str="OR-"; 
$str2=date("Ymd"); 
$str3=($data["mx"]+1); 
$values["ordno"]="$str$str2".str_pad($str3, 5, 0, STR_PAD_LEFT);} 

問題是,當我運行此代碼它總是給我同樣的順序號,如OR-2014013000001的所有記錄條目。它不會改變。你能幫我解決嗎?提前致謝。

回答

0

我認爲真正的問題正在被解析複合ordno列的方式隱藏。請記住,SUBSTRING是基於1的,而不是從零開始的索引。

$sql="select max(substring(ordno,12, 5)) as mx from ord where 
     substring(ordno, 8, 2)=month(now()) order by mx"; 

...似乎是得到你想要的值的正確解析。

將訂單數據存儲在單獨的字段中而不是將含義編碼到單個列中真的會更好。您可能會被這種方式困住,但如果您可以對其進行編輯,那麼爲什麼不通過抓取結構良好的date訂單日期列和int訂單序列欄來即時計算訂單號?

+0

完美。它正在工作。謝謝你的幫助。 – Kortoa

+0

@Kortoa歡迎來到Stack Overflow!請接受這個答案,如果它正在工作(以及您提出的其他問題)。 –

+0

我感謝你的不錯的提示。我不太瞭解php程序,但學習。我通常按​​日期進行編號(「ymdHis」)功能。我不清楚你的解釋的第二部分,我可以如何使用訂單日期與orderid一起來創建自定義數字。再次感謝。 – Kortoa