ช่วยออกไอเดียหน่อยค่ะ รหัสแจ้งซ่อมต้องเป็นปีเดือนวันต่อด้วยตัวเลข 20100204001 แล้วนำไปเก็บในฐานข้อมูล
ผมคิดว่าเราน่าจะเก็บข้อมูลรหัสเป็น 2 field น่ะครับ โดยให้ 2 field นี้เป้น primary key ร่วมกับ
โดย field แรก เก็บ YYYYmmdd และอีก field นึงเก็บ sequence โดยเวลาเราจะเพิ่มรหัสว่อมเราก็
ไป select max(seq) from table where date = 'YYYYMMDD' และเอามาบวก 1 แล้วก็เก็บลง DB
ไปอะครับ
Date :
2010-02-04 11:51:49
By :
windersun
ถ้าหากอยากจะได้ ฟิว เด๋วต้องหลายขึ้นตอนนั้นนะคับ
เพราะว่าต้องแยกวัน กับรหัส แล้วค่อยมารวมกันอีกที
date('Ymd'); // จะได้ 8 ตัวแรก ตามด้วย รหัสอีก 3 ตัว
ซึ่งคุณต้องเช็คทุกครั้งว่าวันเปลี่ยนไปรึยังก่อนที่จะเก็บลง db
ปะมาน ว่า อันนี้ผมขอพูดแต่ฟิว id นะ
คือคุณต้องทำการแยก รหัสวันที่ออกจากรหัสก่อน โดยใช้ substr() หาดูใน gg
เสดแล้วคุณก็เอาวันที่มาเทียบกับวันที่ปัจจุบันว่ามันตรงกันรึป่าว
ถ้าตรงกันก็เก็บรหัส 001 ไล่ 002 ไปเรื่อยๆ
ถ้าไม่ตรงกันก็กลับมาเก็บเป็น 001 ใหม่
ออกจะรวบรัดไปหน่อยนะคับ ยังไงก็สู้ๆ
Date :
2010-02-04 12:03:21
By :
Po[k]@za
ขอบคุณค่ะที่ให้คำแนะนำ
จะลองดูค่ะ
Date :
2010-02-04 12:59:20
By :
Nicorobin
ช่วยดูโค๊ดหน่อยค่ะ ทำไมมันไม่ยอมบวกเพิ่มอะค่ะ
Code (PHP)
$date_ = date("Ymd");
$ff = mysql_query("select * from repair ") or die(mysql_error());
$num = mysql_num_rows($ff);
if($num > 0)
{
$lastid_sql = mysql_query("SELECT idrepair FROM repair WHERE idrepair LIKE '".$date_."%' ORDER BY idrepair DESC") or die(mysql_error());
$num_cus = mysql_num_rows($lastid_sql);
if($num_cus > 0)
{
$last_id = mysql_fetch_row($lastid_sql);
$lastid = $last_id[0];
$str = explode("E",$lastid);
$add_date = $str[0];
$customer_id = $str[1];
$i = $num_cus+1;
$idrepair=$date_."E".substr("00000".$i,-4,4);
}
else
{
$i=1;
$idrepair=$date_."E".substr("00000".$i,-4,4);
}
} else {
$i=1;
//$cus_number=$date_."E".$i;
$idrepair=$date_."E".substr("00000".$i,-4,4);
}
คำตอบที่คือ 20100204E0001
แต่เมื่อไปเพิ่มข้อมูลอีกก็จะขึ้นเออเรอค่ะว่า 20100204E0001 มีอยู่แล้ว
ช่วยดูหน่อยค่ะทำอย่างไรให้บวกเพิ่มเป็น 20100204E0002........n
Date :
2010-02-04 16:16:26
By :
Nicorobin
Load balance : Server 01