点击按钮,生成一个序列号,按日期和序号排列,序号初始值为0001。例如今天是9月30日,则生成序列号20110930 0001.请问这个序号如何生成?

解决方案 »

  1.   

    数据库  表:link   字段:id,serilize_num,time(date)index.php<a href ='index.php?action=add'>点击我</a>if(isset($_GET['action']) && $_GET['action']=='add'){
     $date = date("Y-m-d"); 
     $sql = "select * from link where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";
     $res = mysql_query($sql);
     $result = mysql_fetch_array($sql);
     if(!$result){
       $num = "0001";
       $serilize = $date.$num;
       mysql_query("insert into link(serilize,time) values('$serilize','$date')");
      }
     else{
       $num = substr($result['serilize_num'],8,4);
       $serilize = $date.$num;
       mysql_query("update link set serilize='$serilize' where id=$result['id']");
     }
     echo $serilize;
    }示例代码。
     
      

  2.   


    不是很明白这个意思啊。 $sql = "select * from link where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";这句何解啊?
      

  3.   


    查询当天的数据记录是否存在,不存在的话插入当天的记录,存在的话update为最新的。
      

  4.   

    我是否能获得记录查询的次数?通过session。
      

  5.   

    如果你要获取查询总次数的话,每次查询都入库,不要更新,最后取count(0)就可以。session是不可靠的,可能被清除。
      

  6.   

    5楼的代码挺清楚的了
    那句sql的意义是 先查询有没有今天的日期 没有的设为 0001 
      

  7.   

    其实是这样的,我通过按钮查询数据库库获得相应的数据并生成表单,并生成一个查询表单的记录号。形式”Y-m-d 0001“,初始值为”0001“,根据查询的次数递增(+1)。生成的总数不会超过4位。
      

  8.   

    现在第一次的结果已记录,$serilize结果为201110100001,如何在下一次查询的结果为201110100002?
      

  9.   

    以上是改过的代码,但是在原来查询的基础上再查询和刷新,结果$serilize还是201110100001不变,如何能让其自增1,变成201110100002
    if ($is_query)
    {
    $date = date("Y-m-d"); 
    $sql = "select * from link_rk where date_format(time ,'%Y-&m-%d')='".$date."' order by time desc limit 1";
    $date2 = date("Ymd");
    // echo $sql;
    $res = mysql_query($sql);
    $result = mysql_fetch_array($res);
    if(!$result){
    $num = "0001";
    $serilize = $date2.$num;
    mysql_query("insert into link_rk(serilize_num,time) values('".$serilize."','".$date."')");
    }
    else{
    $num = substr($result['serilize_num'],8,4);
    $serilize = $date2.$num;
    mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id']."");
    }
    echo $serilize;
    echo '<br />';
    }
      

  10.   

    else这里更新的时候没有+1    else{
            $num = intval(substr($result,8,4)) + 1;
    $num = sprintf("%04d",$num);
            $serilize = $date.$num;
            mysql_query("update link_rk set serilize_num='".$serilize."' where id=".$result['id']."");
        }
      

  11.   

    还在纠结这个问题呀先建一个表
    CREATE TABLE IF NOT EXISTS `serial` (
      `prefix` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `id` int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
      PRIMARY KEY (`id`)
    )
    插入时执行INSERT INTO `test`.`serial` (`prefix`, `id`) VALUES (CURRENT_TIMESTAMP, NULL);
    取回时执行
    SELECT concat(date_format(prefix,'%Y%m%d'),id) as No FROM `serial` order by id desc limit 1
    每天第一次插入时先执行
    TRUNCATE TABLE  `serial`
      

  12.   

    问题已找到,将date_format(time ,'%Y-&m-%d')换成time即可。