看板 PHP 關於我們 聯絡資訊
我的需求為用戶端送出一個表單時 編號為 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: 60.248.100.98
LPH66:如果時序是 查詢1>查詢2>存入1>存入2 這樣就重覆了 09/04 21:06
hom1130:Mysql本身就可以接字串,你要不要新增完取得自動編號 09/04 21:38
hom1130:再去更新寫那個特別的編號 09/04 21:39
koizumisyou:感謝L回覆,知道問題在哪了,H大,這樣就不會重複嗎? 09/04 21:42
koizumisyou:自動編號的話,我隔天要歸零...這個我不會~Sorry 09/04 21:43
chrisQQ:隔天要歸零,就把流水號跟日期建 index 起來,讓他自己算 09/05 01:48
tyf99:直接 concat(日期,流水號) 就行了,流水號不用歸零 09/05 02:34
tyf99:你之後要查詢,再group by date,一起減掉流水號最小值 09/05 02:35
tyf99:最後再處理流水號overflow的問題就好了 09/05 02:36