作者Canboo (啃布先生)
看板PHP
标题Re: [请益] 请问关於不重复编号
时间Wed Sep 5 00:08:14 2012
如果是我,我会这样做 (但不一定是最好,现在脑海中闪过的方式)
我会有个资料表A,两个栏位分别记录日期a和序号b
不同日期会有不同资料列
今天使用者送出表单,送到一个function去处理表单编号
先去select a,b from A where a=今天日期
如果有资料,就直接b值+1回传编号并update
如果没有资料,就回传b值=1并insert今天的资料
然後....这个表我可以直接当做每日表单统计用
(虽然表单那个表也可以group by出来...)
※ 引述《koizumisyou (不小的挑战)》之铭言:
: 我的需求为用户端送出一个表单时
: 编号为 920904001,若重复,则取该栏位最大值+1
: 9为固定号码,2为西元年最後一码,0904为日期,001是流水编
: 为了不重复,参考网路作法
: 1、变数C预设值是当天的001
: 2、假设经比对 变数 total不等於0,也就是里头已经有该编号
: 3、那麽就取最大值+1
: 我的问题是
: 问题1:为什麽多人使用时还是会重复编号??
: 问题1-1:重复的编号我观察结果发现,重复的编号都是我自己输入资料编号的最大值,不是整个资料库的
: 问题2:整个网页重新整理以後就好了
: 我该如处理??以下是我的程式码
: form action="<?php echo $editFormAction; ?>" id="form1" name="form1" method="POST">
: <?php
: $A = date("md") ;//变数A:9开头加上带零的月、日
: $B = substr(date('Y'),3,1);//变数B:取西元年第3个字元後1码
: $C = Sprintf("9$B$A%s",'001') ; //变数B前加9,变数A後加001
: ?>
: <?php
: mysql_select_db($database_AdvList, $AdvList);
: $sql = mysql_query("SELECT * FROM advlist WHERE advID=$C ORDER BY advID DESC");//找栏位内是否已经有$C的编号
: $total = mysql_num_rows($sql); //用mysql_num_rows将$sql查询笔数传至$total
: $advlist = mysql_query("SELECT * FROM advlist ORDER BY advID DESC"); //由大到小列出ID栏位内的值
: $Num = mysql_result($advlist,0,advID);
: if($total==0){$C=$C;}//记得echo 後面要加;,$total=0代表没有该编号,不等於但表有
: else{$C=$Num+1;}//不等於0的话,则$Num等於adblist里ID最大值
: ?>
: 新手发问请多指教~谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 111.240.105.1
1F:→ chrisQQ:这意思跟原来一样,同时有多人读取,就会读到同样值 09/05 01:50