订单表需要一个字段叫订单号要求  日期+当天的单序比如  2009年5月1日  第1个订单:20090501001比如  2009年5月1日  第2个订单:20090501002比如  2009年5月2日  第1个订单:20090502001...
...如何实现?

解决方案 »

  1.   

    算法就是分隔当天日期,再加上后面的自增变量
    这也是订单ID生成最普遍的做法了,网上有很多做法的,我给楼主一个参考第一步:获得当天日期的字符串
    date("Ymd") 能得出类似于20090502这样的字符串第二步:生成自增的三位数字符串
    这个问题没有楼上几位说得那么简单,因为如果位数是1位的话,前面要补两位,两位的话,前面要补1位粗略算法是定义一个函数,入口是变量$i(这个变量最好是放到数据库中,因为你插入这些数据在时间上未必是连续的,在插入时用一段SQL获取上次最后插入这个变量)
    function genNum($i){
       $returnStr='';   if($i<10 && $i>0)
         $returnStr = '00'.$i;
       elseif($i>=10 && $i<100)
         $returnStr = '0'.$i
       else
         $returnStr = $i;
    }
    然后将1、2步的字符串用 . 符号连接起来,就形成了这种唯一的编号,再插入数据库中即可
      

  2.   


    $i=1;
    $a='2009年5月1日';
    $a=str_replace(array("年","月","日"),array("-","-","-"),$a);
    $date=date("Ymd",strtotime($a));
    $rs=$date.sprintf("%03d",$i);
    echo $rs;//20090501001