|
|
|
ขอถามเรื่องที่ยากที่สุดหน่อยครับ....มีใครพอจารู้เรื่องการรันเลขอัตโนมัติแบบนี้บ้างครับ |
|
|
|
|
|
|
|
ลองเอานี้ไปเป็นตัวอย่างดูนะครับ เผื่อช่วยได้ครับ
Code (PHP)
$sql =" select * from $Excelrice_order order by Id_no desc";
$query = mysql_query($sql);
$num = mysql_num_rows($query);
if($num<=0){
$Id_order ="5300001"; //กำหนดค่าเริ่มค้น
} else{
$Id_order = mysql_result($query,0,"Id_order") ;
$Id_order++;
}
|
|
|
|
|
Date :
2010-07-08 16:03:49 |
By :
SOUL |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ทำโจทย์ runnumber อัตโนแม้ดมาเยอะละ
ขอนั่งดูดีกว่าค่ะ
เพราะจะว่ายากมันก้อยากจะว่าง่ายมันก้อง่าย
แต่เลข RUN NUMER รันไปเรื่อยๆแล้ว RESET ตัวเองแบบนี้
ยังไม่เห็น มูลค่าใดๆตอนใช้งานและไม่ใช่ concept ที่ดีเท่าไหร่เลยไม่คิดจะทำค่ะ
|
|
|
|
|
Date :
2010-07-09 02:50:21 |
By :
blurEyes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
http://www.firstmeditech.com/cakephp/post/mysql-order-id
ถ้าทำแบบนั้น key ก็ซ้ำกัน คงจะต้องแบ่งเป็นสองฟิล ฟิลปีกับ running แต่รวมเป็ฯฟิลเดียวอย่างลิงค์นี้ก็ได้ครับ
|
|
|
|
|
Date :
2010-07-09 07:22:41 |
By :
-_- |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมไม่รู้ว่าแต่ละท่านทำอย่างไร แต่นี่คือแนวทางของผมครับ
โดยส่วนใหญ่เวลาที่ผมจะทำการสร้างรหัส ผมจะเอา ปี เข้าไปเก็บด้วย หรืออาจจะ เพิ่มคำบางคำที่บ่งบอกลักษณะของรหัสนั้น ๆ เช่น
ในตัวอย่างที่ผมจะนำแสดง มันเป็นรหัสเกี่ยวกับการสร้างรหัสของงานแจ้งซ่อม ซึ่ง รหัสของผมจะขึ้นต้นด้วย SV (Service) แล้วต่อท้ายด้วย ปี เดือน วัน จากนั้น ค่อยใส่รหัสให้มันรัน 0001 - 9999 ไปเรื่อย ๆ ของแต่ละวันนะครับ ซึ่งรูปแบบของรหัสของผมจะเป็นดังนี้คือ
SV20100507XXXX
ทำแบบกำปั้นทุปดินคือ ผมจะหาก่อนว่าวันนี้ มีการสร้าง รหัสของกลุ่มสีแดงแล้วหรือยัง โดยอาศัยหลักการ query แบบ like ตามกลุ่มแรก ผมก็เลยสร้างตัวแปรมาเพื่อเช็คเลย อิอิ จะได้
$svid="SV".date("Ymd");
จากนั้นผมก็ทำการสร้าง ตัวแปร เพื่อจะไป query กับฐานข้อมูล ในตัวอย่างจะเป็นชื่อ เทเบิลของ service
$sql="Select serviceid From tbl_service Where serviceid like '$svid%' Order by serviceid DESC limit 0,1";
คุณจะเห็นว่า ผมสั่งให้ order by ตัวล่า สุด และ เอามาแค่ ตัวเดียวคือ
Order by serviceid DESC limit 0,1
จากนั้น ผมก็ทำการ query เลย
$rsid=rsquery($sql); // rsquery คือ function การquery ของผมครับ
จากนั้น ผมจะทำการเช็คเลยว่า มี หรือ เปล่า หากไม่มี ก็ใส่มันรันตัวเลขที่ 0001 จะได้
if(mysql_num_rows($rsid)==0){
$genid=$svid."0001"; // ผมสร้างตัวแปร $genid เพื่อจะรองรับารสร้างรหัส
แต่ถ้ามี เรารู้อยู่แล้วนี่ครับ ว่า เราต้องการจะกระทำกับรหัส สี่ตัวท้าย สีเหลือง ผมก็ทำการ ตัด เอาเฉพาะ สี่ตัวท้ายมาทำการบวก 1 ให้มันก่อน จากนั้นก็มาเช็คค่าของมัน เพื่อทำการ ใส่ 0 ไว้ข้างหน้า ถ้าน้อยกว่า 10 ก็คือ 1 - 9 ผมจะใส่ 0 ให้ 3 ตัว น้อยกว่า 100 คือ 10 - 99 ผมจะใส่ให้ 2 ตัว น้อยกว่า 1000 จะใส่ให้ 1 ตัว เกินกว่า นี้ก็ไม่ใส่ ( แต่ในหลักความจริงของผมนะครับ คงไม่มีการแจ้งซ่อมวันละ 9999 ครั้งหรอก เหอ ๆ จะได้
}else{
$fid=mysql_fetch_array($rsid);
$genid=substr($fid['serviceid'],-4);
$genid = $genid+1;
if($genid<10){
$genid="000".$genid;
}elseif($genid<100){
$genid="00".$genid;
}elseif($genid<1000){
$genid="0".$genid;
}else{
$genid=$genid;
}
$genid=$svid.$genid; // จากนั้นก็เอามันประกอบกัน
}
เสร็จแล้วครับ เราก็จะได้รหัสที่ไล่ต่อ ๆ กันไปเรื่อย ๆ แล้ว หวังว่ามันคงมีประโยชน์อยู่บ้างนะครับ อันนี้เป็นแนวทางของผมครับ แต่ถ้าท่านอื่นต่างจากนี้ก็แล้วแต่ของใครครับ หรือจะเอาไปปรับอะไรก็ได้อีกนะครับ ลองดู
สู้ ๆ
Code เต็ม ๆ
$svid="SV".date("Ymd");
$sql="Select serviceid From tbl_service Where serviceid like '$svid%' Order by serviceid DESC limit 0,1";
$rsid=rsquery($sql);
if(mysql_num_rows($rsid)==0){
$genid=$svid."0001";
}else{
$fid=mysql_fetch_array($rsid);
$genid=substr($fid['serviceid'],-4);
$genid = $genid+1;
if($genid<10){
$genid="000".$genid;
}elseif($genid<100){
$genid="00".$genid;
}elseif($genid<1000){
$genid="0".$genid;
}else{
$genid=$genid;
}
$genid=$svid.$genid;
}
สวัสดี
[email protected]
|
|
|
|
|
Date :
2010-07-09 08:41:44 |
By :
kalamell |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สามารถทำได้ค่ะ เพียงแต่คุณต้องใช้ ฟิวด์ 2 ฟิวด์ เป็นคีย์หลัก
เช่น ปี และ id แบบนี้ไม่ซ้ำกันแน่นอน
การออกแบบ ก็ขึ้นอยู่กับการใช้งาน
อาจไม่ใช่ concept ที่ดีสำหรับบางงาน
แต่มันก็อาจจะ perfect สำหรับงานนี้ก็ได้
ขึ้นอยู่กับว่า ทำไมต้อง reset ใหม่ทุกปี
|
|
|
|
|
Date :
2010-07-09 09:22:51 |
By :
ultrasiam |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ผมโดนสั่งทำระบบสารบัญออลไลน์
ให้ออกเลขหนังสือราชการอัตโนมัติ
สิ้นปีตัวเลขเริ่มใหม่
งงเลย ไม่รู้จาทามได้เปล่า
|
|
|
|
|
Date :
2010-07-09 10:12:16 |
By :
นิทัศน์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เก็บสองฟิลน่ะถูกต้องแล้วครับ ฟิลแรกก็ให้เป็น auto increament ส่วนฟิลที่สองก็ให้เป็น เลขที่หนังสือ
ควรมีวันที่ออกหนังสือไว้สำหรับตรวจสอบ ปี ด้วย เช่นถ้าวันที่ออกหนังสือล่าสุดเป็น ปีที่แล้ว
ให้ทำการ เริ่มนับใหม่
|
|
|
|
|
Date :
2010-07-09 10:21:26 |
By :
tungman |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ค่า ขอบคุณอาจารย์มากค่ะ
พักนี้จะรั่วๆนิสนุง ประทานโทดอย่างสูงค่ะ
|
|
|
|
|
Date :
2010-07-09 12:33:35 |
By :
blurEyes |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ขอบคุณมากครับสำหรับข้อมูลดีๆ
ผมจาลองทามไปเรื่อยๆ
จาได้เปล่าก็ม่ารู่
|
|
|
|
|
Date :
2010-07-09 23:20:51 |
By :
นิทัศน์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สองฟิวนี่แบบนี้ใช่เปล่าครับ
เอาฟิวปี เป็นพายมาลี่คี
เอาฟิวไอดี เป็น auto increament แต่ไม่ต้องตั้งเป็นพายมาลี่คี
ขอบพระคุณครับ
|
|
|
|
|
Date :
2010-07-10 09:04:43 |
By :
นิทัศน์ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สองฟิวนี่แบบนี้ใช่เปล่าครับ
เอาฟิวปี เป็นพายมาลี่คี
เอาฟิวไอดี เป็น auto increament แต่ไม่ต้องตั้งเป็นพายมาลี่คี
Primary key หรือ เรียกย่อ PK
เง้อภาษาวัยรุ่น อ่านแล้วเกือบงง
|
|
|
|
|
Date :
2010-07-10 09:36:41 |
By :
DownsTream |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Code (PHP)
<html>
<head>
<title>ThaiCreate.Com Tutorial</title>
</head>
<body>
<?
//*** Connect to Database **//
$objConnect = mysql_connect("localhost","root","root") or die("Error Connect to Database");
$objDB = mysql_select_db("mydatabase");
$strNextSeq = "";
//*** Check Year ***//
$strSQL = "SELECT * FROM prefix WHERE 1 ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
$objResult = mysql_fetch_array($objQuery);
//*** Check val = year now ***//
if($objResult["val"] == date("Y"))
{
$Seq = substr("00000".$objResult["seq"],-5,5); //*** Replace Zero Fill ***//
$strNextSeq = $objResult["val"]."-".$Seq;
//*** Update Next Seq ***//
$strSQL = "UPDATE prefix SET seq= seq+1 ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
}
else //*** Check val != year now ***//
{
$Seq = substr("000001",-5,5); //*** Replace Zero Fill ***//
$strNextSeq = date("Y")."-".$Seq;
//*** Update New Seq ***//
$strSQL = "UPDATE prefix SET val = '".date("Y")."' , seq = '1' ";
$objQuery = mysql_query($strSQL) or die ("Error Query [".$strSQL."]");
}
echo $strNextSeq;
mysql_close($objConnect);
?>
</body>
</html>
Go to : PHP Auto Generate Number ตัวอย่างการทำ Auto Number แบบมี รหัส/ตัวอักษร/ปี/เดือน ข้างหน้า
|
|
|
|
|
Date :
2011-06-02 22:27:37 |
By :
webmaster |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 00
|