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 > Auto generate number ช่วยชี้แนะเรื่องนี้ด้วย (PHP, MySQL)



 

Auto generate number ช่วยชี้แนะเรื่องนี้ด้วย (PHP, MySQL)

 



Topic : 078856



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



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



Code (PHP)
$Generate_Job = "";
$Sql_genSLC = "SELECT * FROM order_messenger WHERE Job_Date = '".$dateInput."' AND Job_Time = '".$JobTime."' 
AND Job_Area = '".$JobArea."'";
$Qr_genSLC = mysql_query($Sql_genSLC) or die (mysql_error());
$Qr_rows = mysql_num_rows($Qr_genSLC);
$fetch_rs = mysql_fetch_array($Qr_genSLC);

$Row_plus = $Qr_rows+1;
$Genval = $fetch_rs["Job_Date"].$fetch_rs["Job_Time"].$fetch_rs["Job_Area"];
$Getval = $dateInput.$JobTime.$JobArea;
$Msn_Date = Msn_Date($dateInput);
if($Genval == $Getval){
	$Order_num = substr("0".$Row_plus,-2,2);   //*** Replace Zero Fill ***//
	$Generate_Job = $Msn_Date.$JobTime.$JobArea.$Order_num;
}else{
	$Order_num = substr("01",-2,2);   //*** Replace Zero Fill ***//
	$Generate_Job = $Msn_Date.$JobTime.$JobArea.$Order_num;
}
	return $Generate_Job;
	mysql_close($dbConn);
}


ข้างบนนี้เป็น function ที่ผมดัดแปลง มาจาก บทความในบอร์ดนี้ครับ น่าจะเป็นเรื่อง Auto number(ถ้าผมจำไม่ผิดนะครับ...)
แต่ที่ผมอยากจะถามก็คือ ตอนแรกที่ใช้งานนั้นสามารถ gen ค่าออกมาได้ปกติดีครับ แต่ที่ผ่านมานี้ 2-3 วันนี้ กลับ gen ค่า ซ้ำกันครับ เช่น
gen ค่าไปที่ลำดับประมาณ 25 ก็จะมี 25 ซ้ำอีก ครับ ซึ่งเมื่อก่อนนั้นไม่เกิดปัญหานี้ครับ

รบกวนพี่ๆ ช่วยแนะนำด้วยนะครับผม



Tag : PHP, MySQL







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2012-05-24 09:21:46 By : popnakub View : 2361 Reply : 11
 

 

No. 1



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



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

ผมลองปรัป code นิดหน่อยและกำลังทำการ รันครับ ได้ ผล ยังไง จะ มา แจ้ง อีก ครั้ง ครับ(น่าจะเย็นนี้ครับ..)

Code (PHP)
function GenReferenceSLC($dateInput, $JobTime, $JobArea){

$Generate_Job = "";
$Sql_genSLC = "SELECT * FROM order_messenger WHERE Job_Date = '".$dateInput."' AND Job_Time = '".$JobTime."' 
AND Job_Area = '".$JobArea."'";
$Qr_genSLC = mysql_query($Sql_genSLC) or die (mysql_error());
$Qr_rows = mysql_num_rows($Qr_genSLC);

$Row_plus = $Qr_rows+1;

$Msn_Date = Msn_Date($dateInput);
if($Qr_rows == 0){
	$Order_num = substr("01",-2);
	$Generate_Job = $Msn_Date.$JobTime.$JobArea.$Order_num;
}else{
	$Order_num = substr("0$Row_plus",-2);
	$Generate_Job = $Msn_Date.$JobTime.$JobArea.$Order_num;
}
	return $Generate_Job;
	mysql_close($dbConn);
}









ประวัติการแก้ไข
2012-05-24 14:58:47
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 10:11:39 By : popnakub
 


 

No. 2



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



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

พี่ๆคนไหน มีคำแนะเรื่องนี้ ก็ แนะนำผมด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 10:12:16 By : popnakub
 

 

No. 3



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

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

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


จุดอ่อนของโค้ดชุดนี้อยู่ที่ห้ามลบข้อมูลในตารางครับ
เพราะในโค้ดใช้วิธีนับข้อมูลทั้งหมด แล้วเพิ่มไปหนึ่งเพื่อ generate เลขล่าสุด
ถ้าลบข้อมูลไปจริง ก็จะทำให้ซ้ำอย่างที่เจอปัญหา

ทางออกคือให้เพิ่มฟิวด์ขึ้นมาหนึ่งฟิวด์เพื่อใช้เป็นตัวบ่งชี้ว่า เรคคอร์ดนี้ถูกลบแล้ว


เหมือนกับทำระบบให้มี trash bin สามารถกู้เรคคอร์ดที่ถูกลบไปแล้วได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 10:21:39 By : sakuraei
 


 

No. 4



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



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

ครับผมเข้าใจที่ คุณ Unidentifer พูดมานะครับ แต่ที่ผมบอก ว่ามันซ้ำคือ

2012-05-2420
2012-05-2420
มันซ้ำกันแบบนี้ครับ ไม่ได้ซ้ำ กับ เร็คคอร์ดที่ถูกลบไปแล้วครับ

ผมเลยอยากทราบว่าทำไม ถึง ซ้ำกันได้ครับผมเพราะ code ที่ผมเีขียนขึ้นมานี้ ก็ให้มัน +1 ตลอด แต่ เลขก็ยังมีซ้ำกันอยู่ผมก็เลยงงครับ


ยังไงก็แนะนำด้วยนะครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 13:56:06 By : popnakub
 


 

No. 5

Guest


$Qr_rows = mysql_num_rows($Qr_genSLC);

ถ้าไล่ๆดูก็จะเห็นว่ามันทำงานอย่างไร
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 14:03:31 By : rootElement@kmutnb
 


 

No. 6



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



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

สรุปแล้วเย็นนี้ ก็ยังมีซ้ำอยู่เช่นเคยครับ แต่น้อยลง เหลือ แค่ 1-2จ๊อบ

พี่ๆ มีไร แนะนำสำหรับเรื่องนี้ไหม ครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 20:56:07 By : popnakub
 


 

No. 7



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

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

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

เผื่อจะมีประโยชน์ครับ



Go to : PHP Auto Generate Number ตัวอย่างการทำ Auto Number แบบมี รหัส/ตัวอักษร/ปี/เดือน ข้างหน้า
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 21:24:13 By : mr.win
 


 

No. 8



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

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

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


2012-05-0001
2012-05-0002
2012-05-0003
2012-05-0004
2012-05-0005

ตอนนี้นับจำนวนได้ ห้าเรคคอร์ด

2012-05-0001
2012-05-0002
......................
2012-05-0004
2012-05-0005

ถูกลบออกไปหนึ่ง 2012-05-0003 ซึ่งนับตอนนี้ได้ สี่เรคคอร์ด
พอจะหาเลขใหม่ ก็จะได้ 4+1 = 5
ทีนี้ก็ไปซ้ำกับ 2012-05-0005 ล่ะครับ


แต่ถ้าคุณไม่ได้ลบจริงเพียงแต่ mark ไว้ว่าเรคคอร์ดไหนไม่ได้ใช้แล้ว
2012-05-0001
2012-05-0002
2012-05-0003 --> mark for deletion
2012-05-0004
2012-05-0005
คุณก็จะนับได้ ห้า แล้วเอามาบวกด้วยหนึ่ง จะเป็นหก ซึ่งจะได้ 2012-05-0006
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-24 21:34:24 By : sakuraei
 


 

No. 9



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



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

ขอบคุณ พี่ วิน ครับ ผม เอง ก็ ดัดแปลงมาจากตัวนั้นครับ
ขอบคุณ พี่ Unidentifer ครับ หลักการของพี่น่าสนใจดีเดียวครับ
ตอนนี้ กำลังคิด logic ใหม่ อยู่ครับ

ได้ผลยังไงจะแจ้งให้ทราบอีกครั้งครับผม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-25 10:24:44 By : popnakub
 


 

No. 10

Guest


ลองแบบนี้ดูไหมครับ
ใช้ SELECT id สุดท้ายออกมา แล้วนำมา +1 แทน

เช่น
A0001
A0010
A0005

select id from table order by id DESC ที่ไม่เพิ่ม limit 1 เพราะ จะใช้กับ database ตัวอื่นได้

ก็จะได้
A0010 <-- ให้ fetch เอาข้อมูลมาแค่ตัวเดียว

จากนั้นก็ตัดเอามาแค่ตัวเลย
จะได้ 0010

จากนั้นก็เอาไป +1
บางทีอาจมีปัญหา + ไม่ได้ ก็แปลงเป็นตัวเลขก่อน โดย
(int) คิดว่าทำได้ หรือ เอาไป 0010 +0 ก็ได้เช่นกัน

ไม่รู้ว่าเข้าใจรึป่าว เป็นแค่ Idea โดยไม่ต้องไปยึดกับจำนวนข้อมูล
แค่เอา Id ตัวสุดท้ายไปทำงาน

* PHP สามารถ + เลขฐานได้นะครับ
เช่น 1A+1=1B (ฐาน16)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-25 10:50:34 By : rootElement@kmutnb
 


 

No. 11



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



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

แนวคิดของคุณ rootElement@kmutnb น่าสนใจมากๆ ครับ

แต่ตอนนี้ผม คิด logic ของ ตัวเอง ได้แล้วครับ เดี๋ยวจะลองใช้ก่อนครับ ถ้าไม่ได้ อกี ก็ คงจะทำ ประมาณที่ คุณ rootElement@kmutnb แนะนำครับ แนวคิดของคุณ rootElement@kmutnb ผมเห็นภาพแล้วครับ

ขอบคุณครับ 1
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2012-05-25 12:06:45 By : popnakub
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : Auto generate number ช่วยชี้แนะเรื่องนี้ด้วย (PHP, MySQL)
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ 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 04
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 อัตราราคา คลิกที่นี่