Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 109,037

HOME > PHP > PHP Forum > ขอถามเรื่องที่ยากที่สุดหน่อยครับ....มีใครพอจารู้เรื่องการรันเลขอัตโนมัติแบบนี้บ้างครับ



 

ขอถามเรื่องที่ยากที่สุดหน่อยครับ....มีใครพอจารู้เรื่องการรันเลขอัตโนมัติแบบนี้บ้างครับ

 



Topic : 045162



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์




มีใครพอจารู้เรื่องการรันเลขอัตโนมัติแบบนี้บ้างครับ

ก็คือผมเจอโจทย์ให้รันเลขอัตโนมัติ เช่น 001 ต่อจากนั้นมันก็จะรันต่อไปเรื่อยๆเป็น 002 003 ไปเรื่อยๆ
แต่ประเด็นอยู่ที่ว่า

โจทย์บอกว่า พอถึง วันที่ 1 มกราคม ของทุกปี ให้ไปเริ่มรันเลขใหม่ หมายความว่า สมมุติเลขไปที่ 999 แล้ว พอถึง
วันที่ 1 มกราคม ของทุกปี ให้เลขมาเป็น 001 ใหม่ โดยฐานข้อมูลเดิมไม่ถูกลบ



ขอบพระคุณครับ



Tag : - - - -







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2010-07-08 15:32:40 By : นิทัศน์ View : 1707 Reply : 14
 

 

No. 1



โพสกระทู้ ( 1,751 )
บทความ ( 0 )



สถานะออฟไลน์


ลองเอานี้ไปเป็นตัวอย่างดูนะครับ เผื่อช่วยได้ครับ
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
 


 

No. 2



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ทำโจทย์ runnumber อัตโนแม้ดมาเยอะละ

ขอนั่งดูดีกว่าค่ะ

เพราะจะว่ายากมันก้อยากจะว่าง่ายมันก้อง่าย



แต่เลข RUN NUMER รันไปเรื่อยๆแล้ว RESET ตัวเองแบบนี้

ยังไม่เห็น มูลค่าใดๆตอนใช้งานและไม่ใช่ concept ที่ดีเท่าไหร่เลยไม่คิดจะทำค่ะ
Date : 2010-07-09 02:50:21 By : blurEyes
 

 

No. 3

Guest


http://www.firstmeditech.com/cakephp/post/mysql-order-id
ถ้าทำแบบนั้น key ก็ซ้ำกัน คงจะต้องแบ่งเป็นสองฟิล ฟิลปีกับ running แต่รวมเป็ฯฟิลเดียวอย่างลิงค์นี้ก็ได้ครับ
Date : 2010-07-09 07:22:41 By : -_-
 


 

No. 4



โพสกระทู้ ( 564 )
บทความ ( 0 )



สถานะออฟไลน์
Twitter Facebook

ผมไม่รู้ว่าแต่ละท่านทำอย่างไร แต่นี่คือแนวทางของผมครับ

โดยส่วนใหญ่เวลาที่ผมจะทำการสร้างรหัส ผมจะเอา ปี เข้าไปเก็บด้วย หรืออาจจะ เพิ่มคำบางคำที่บ่งบอกลักษณะของรหัสนั้น ๆ เช่น

ในตัวอย่างที่ผมจะนำแสดง มันเป็นรหัสเกี่ยวกับการสร้างรหัสของงานแจ้งซ่อม ซึ่ง รหัสของผมจะขึ้นต้นด้วย 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
 


 

No. 5



โพสกระทู้ ( 1,268 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

สามารถทำได้ค่ะ เพียงแต่คุณต้องใช้ ฟิวด์ 2 ฟิวด์ เป็นคีย์หลัก
เช่น ปี และ id แบบนี้ไม่ซ้ำกันแน่นอน

การออกแบบ ก็ขึ้นอยู่กับการใช้งาน
อาจไม่ใช่ concept ที่ดีสำหรับบางงาน
แต่มันก็อาจจะ perfect สำหรับงานนี้ก็ได้

ขึ้นอยู่กับว่า ทำไมต้อง reset ใหม่ทุกปี
Date : 2010-07-09 09:22:51 By : ultrasiam
 


 

No. 6



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์


ผมโดนสั่งทำระบบสารบัญออลไลน์
ให้ออกเลขหนังสือราชการอัตโนมัติ
สิ้นปีตัวเลขเริ่มใหม่
งงเลย ไม่รู้จาทามได้เปล่า
Date : 2010-07-09 10:12:16 By : นิทัศน์
 


 

No. 7



โพสกระทู้ ( 3,144 )
บทความ ( 1 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์


เก็บสองฟิลน่ะถูกต้องแล้วครับ ฟิลแรกก็ให้เป็น auto increament ส่วนฟิลที่สองก็ให้เป็น เลขที่หนังสือ

ควรมีวันที่ออกหนังสือไว้สำหรับตรวจสอบ ปี ด้วย เช่นถ้าวันที่ออกหนังสือล่าสุดเป็น ปีที่แล้ว

ให้ทำการ เริ่มนับใหม่
Date : 2010-07-09 10:21:26 By : tungman
 


 

No. 8



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


Quote:
การออกแบบ ก็ขึ้นอยู่กับการใช้งาน
อาจไม่ใช่ concept ที่ดีสำหรับบางงาน
แต่มันก็อาจจะ perfect สำหรับงานนี้ก็ได้


โทดค่ะ อ่านโจทย์ทีแรกคิดว่าเป็นการบ้านส่งอาจารย์อะค่ะ
มีจั่วว่ายากมาด้วย แบบว่าออกแนวท้าๆกะแนวผมสั้นๆ
เลยเกิดอาการไม่อยากทำขึ้นมาอะค่ะ
ตอนนี้ก้อยังคิดว่าเป็นโจทย์การบ้านอยู่ดีอะค่ะ
Date : 2010-07-09 11:52:32 By : blurEyes
 


 

No. 9



โพสกระทู้ ( 1,268 )
บทความ ( 0 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Blogger

Quote:
การออกแบบ ก็ขึ้นอยู่กับการใช้งาน
อาจไม่ใช่ concept ที่ดีสำหรับบางงาน
แต่มันก็อาจจะ perfect สำหรับงานนี้ก็ได้

ขึ้นอยู่กับว่า ทำไมต้อง reset ใหม่ทุกปี


ยืนยันตามนั้นค่ะ
เป็นการชี้แจงไม่ได้ว่าอะไรใครนะคะ
เดี๋ยวจะเข้าใจผิดกัน

Quote:
โทดค่ะ อ่านโจทย์ทีแรกคิดว่าเป็นการบ้านส่งอาจารย์อะค่ะ
มีจั่วว่ายากมาด้วย แบบว่าออกแนวท้าๆเลย เกิดอาการไม่อยากทำขึ้นมาอะค่ะ
ตอนนี้ก้อยังคิดว่าเป็นโจทย์การบ้านอยู่ดีอะค่ะ


คิดว่าเป็นการบ้านเหมือนกันค่ะ
อ่านที่ตั้งคำถามก็พอจะรู้ เพียงแต่เราอาจจะมองกันคนละมุมเท่านั้นค่ะ
มันเรื่องเล็ก เหมือนอย่างพี่ป๋อเค้่าว่า "จิ๊บๆ" อิอิ
Date : 2010-07-09 11:59:04 By : ultrasiam
 


 

No. 10



โพสกระทู้ ( 1,603 )
บทความ ( 1 )



สถานะออฟไลน์


ค่า ขอบคุณอาจารย์มากค่ะ
พักนี้จะรั่วๆนิสนุง ประทานโทดอย่างสูงค่ะ
Date : 2010-07-09 12:33:35 By : blurEyes
 


 

No. 11



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์


ขอบคุณมากครับสำหรับข้อมูลดีๆ
ผมจาลองทามไปเรื่อยๆ
จาได้เปล่าก็ม่ารู่
Date : 2010-07-09 23:20:51 By : นิทัศน์
 


 

No. 12



โพสกระทู้ ( 15 )
บทความ ( 0 )



สถานะออฟไลน์


สองฟิวนี่แบบนี้ใช่เปล่าครับ
เอาฟิวปี เป็นพายมาลี่คี
เอาฟิวไอดี เป็น auto increament แต่ไม่ต้องตั้งเป็นพายมาลี่คี


ขอบพระคุณครับ
Date : 2010-07-10 09:04:43 By : นิทัศน์
 


 

No. 13



โพสกระทู้ ( 1,242 )
บทความ ( 13 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

สองฟิวนี่แบบนี้ใช่เปล่าครับ
เอาฟิวปี เป็นพายมาลี่คี
เอาฟิวไอดี เป็น auto increament แต่ไม่ต้องตั้งเป็นพายมาลี่คี

Primary key หรือ เรียกย่อ PK

เง้อภาษาวัยรุ่น อ่านแล้วเกือบงง
Date : 2010-07-10 09:36:41 By : DownsTream
 


 

No. 14



โพสกระทู้ ( 74,058 )
บทความ ( 838 )

สมาชิกที่ใส่เสื้อไทยครีเอท

สถานะออฟไลน์
Twitter Facebook

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
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : ขอถามเรื่องที่ยากที่สุดหน่อยครับ....มีใครพอจารู้เรื่องการรันเลขอัตโนมัติแบบนี้บ้างครับ
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: นำเข้าสินค้าจากจีน, Taobao, เฟอร์นิเจอร์, ของพรีเมี่ยม, ร่ม, ปากกา, power bank, แฟลชไดร์ฟ, กระบอกน้ำ

Load balance : Server 00
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2024 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่