Re: [請益] 請問關於不重複編號

看板PHP作者 (啃布先生)時間13年前 (2012/09/05 00:08), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串2/4 (看更多)
如果是我,我會這樣做 (但不一定是最好,現在腦海中閃過的方式) 我會有個資料表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

09/05 01:50, , 1F
這意思跟原來一樣,同時有多人讀取,就會讀到同樣值
09/05 01:50, 1F
文章代碼(AID): #1GHYTolG (PHP)
文章代碼(AID): #1GHYTolG (PHP)