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,027

HOME > PHP > PHP Forum > อยากให้เก็บ ID ให้เป็นอัติโนมัติค่ะ (ID มีทั้งตัวเลขและตัวอักษร)



 

อยากให้เก็บ ID ให้เป็นอัติโนมัติค่ะ (ID มีทั้งตัวเลขและตัวอักษร)

 



Topic : 103012

Guest




คืออยากเก็บรหัสข้อมูลลูกค้าให้เป็นอัติโนมัติน่ะ แบบว่าเราเพิ่มข้อมูลลูกค้าเข้ามา ID ก็จะรันอัติโนมัติน่ะค่ะ แต่ประเด็นอยู่ตรงที่ว่า ID ของเรามีทั้งตัวเลขและตัวอักษรค่ะ เช่น S001, S002 เป็นต้น คืออยากรู้ว่าเราจะมีวิธีการเก็บอย่างไร และแสดงผลออกมาอย่างไรอ่ะค่ะ

ข้อมูล
อันนี้เป็นตัวอย่างข้อมูลค่ะ พอเราพิมพ์ชื่อไปมันก็จะรันรหัสให้อัติโนมัติ

base
อันนี้เป็นตารางที่สร้างขึ้น ไม่รู้ว่าสร้างถูกป่าวอ่ะค่ะ

ลองดูตัวอย่างโค้ดในเว็บก็รันไม่ขึ้นน่ะค่ะ ยอมรับว่าโง่เรื่องนี้จริง ยังศึกษาน้อยอยู่ แต่รบกวนผู้รู้ช่วยหน่อยนะคะ ขอบคุณค่ะ



Tag : PHP, MySQL, HTML/CSS, jQuery, CakePHP, Yii PHP Framework







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2013-11-24 17:32:26 By : yoyo View : 1098 Reply : 13
 

 

No. 1



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



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

รหัสอักษร 2 ตัวแรกฟิกซ์รึเปล่าครับ?






แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-24 18:58:00 By : itpcc
 


 

No. 2

Guest


ตอบความคิดเห็นที่ : 1 เขียนโดย : itpcc เมื่อวันที่ 2013-11-24 18:58:00
รายละเอียดของการตอบ ::
ต้องฟิกซ์ด้วยอ่าค่ะ แหะๆ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-24 23:20:38 By : yoyo
 

 

No. 3



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

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

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


แล้วต้อง fix เป็น CS ตลอด หรือ อนาคตมันจะต้องเปลี่ยนเป็น CZ จนกระโดด เป็น DA แบบทะเบียนรถหรือเปล่าครับ...
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 08:35:01 By : apisitp
 


 

No. 4

Guest


select IFNULL(CONCAT('CS',case when (select max(CONVERT(replace(id,'CS',''), SIGNED INTEGER))+1 from tablename) < 10 then CONCAT('00',(select max(CONVERT(replace(id,'CS',''), SIGNED INTEGER))+1 from tablename)) when (select max(CONVERT(replace(id,'CS',''), SIGNED INTEGER))+1 from tablename) < 100 then CONCAT('0',(select max(CONVERT(replace(id,'CS',''), SIGNED INTEGER))+1 from tablename)) else (select max(CONVERT(replace(id,'CS',''), SIGNED INTEGER))+1 from tablename) end),CONCAT('CS','001') )
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 09:38:36 By : เรก
 


 

No. 5

Guest


ตอบความคิดเห็นที่ : 3 เขียนโดย : apisitp เมื่อวันที่ 2013-11-25 08:35:01
รายละเอียดของการตอบ ::
เป็น CS ตลอดค่ะ แต่ตัวเลขจะรันไปเรื่อยๆค่ะ ยัน 999 (สมมุติค่ะ อิอิ) ประมาณนั้นอ่ะค่ะ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 17:55:01 By : yoyo
 


 

No. 6

Guest


ตอบความคิดเห็นที่ : 4 เขียนโดย : เรก เมื่อวันที่ 2013-11-25 09:38:36
รายละเอียดของการตอบ ::
(id,'CS','') id คือเป็นชื่อเราตั้งตั้งขึ้นมาหรือว่าเป็น ID_Cs ในตารางอ่ะค่ะ อันนี้เป็นการ select ออกมาดูใช่มั้ยอ่ะคะ แล้วถ้าเก็บใน databae มันก็จะเก็บเป็น 00001 เหมือนเดิมใช่มั้ยค่ะ เค้าเข้าใจถูกมั้ยเอ้ยย (อาจจะถามแบบกำปั้นทุบดินหน่อยน้าาา )

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 17:58:50 By : yoyo
 


 

No. 7



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



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


ไม่เอาเอาคอมเม้นด้านล่างดีกว่า

DSSDAD001

แยกให้ออกว่า
- DSSDAD00 มันคือ TEXT จะเห็นได้ว่ามันตายตัวและมี 8 ตำแหน่ง
- 1 ตัวสุดท้ายคือ int

ฟังชั่นที่เรียกใช้งาน
- preg_replace
- substr ไว้ตัด text ออกจากเลข

ทดสอบ
<?
$TEST=  "SXSADSA001";
$text=substr($TEST,0,9);
$i = 0;
while ($i<150) {
$TEST=preg_replace('/[^\d]/','', $TEST);
$XX+=$TEST;
echo $text,$XX."<BR>";
$i++; }
?>



-ข้อเสีย เมื่อ DSSDAD009 แล้วตัวต่อไปจะเป็น DSSDAD0010 มิไช่ DSSDAD010 ในอนาคตหากมีการ order by ส่วนนี้อาจจะมีปัญหาได้ วิธีแก้มีแต่จะยาวหน่อย



ประวัติการแก้ไข
2013-11-25 18:24:23
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 18:14:05 By : meannerss
 


 

No. 8



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



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


เอาใหม่ดีกว่ามันซับซ้อนเกินไปใช้ substr อย่างเดียวพอ.
<?
$TEST="SXSADSA001";
$text1=substr($TEST,0,9);
$text2=substr($TEST,10,999);

$i = 0;
while ($i<150) {
$xx=$text+1;
$result+=$xx;
echo $text1,$result."<BR>";
$i++; }
?>


- ข้อดีได้จำนวน id ที่ไม่จำกัด
-ข้อเสีย เมื่อ DSSDAD009 แล้วตัวต่อไปจะเป็น DSSDAD0010 มิไช่ DSSDAD010 ในอนาคตหากมีการ order by ส่วนนี้อาจจะมีปัญหาได้


วิธีแก้ข้อเสียมีแต่ไม่ทำเพราะ ถ้าืำทำจะทำให้เกิดการจำกัด limit ของ id ในระบบ
- ถ้า DSSDAD001 จะบรรจุไอดีได้แค่ 999 เท่าตัวนั้น
- ถ้า DSSDAD0001 จะบรรจุไอดีได้แค่ 9999 เท่าตัวนั้น
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 18:23:46 By : meannerss
 


 

No. 9



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



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

โดยส่วนตัวขอแนะนำว่าใช้ Primary Key เป็น Int+Auto Increment ดีกว่าครับ ส่วน รหัส หรือ ID Auto run ที่ทำเองนั้น ให้เป็น Candidate Key ก็ได้ นะ เพราะเอาไว้ตอนค้นหาข้อมูล หนะ

ความคิดส่วนตัวครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 18:26:06 By : geidtiphong
 


 

No. 10



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



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

ควรจะมีฟิลด์ที่เป็น Auto Id อีกฟิลด์ครับ
จากนั้นทุกครั้งที่ INSERT ก็ใช้ mysql_insert_id(); รับค่าที่เพิ่งบันทึกไป
แล้วก็ไปหาค่า MAX ของรหัสลูกค้าที่ตัดตัวอักษรออกไปแล้ว (ถ้ามีตัวอักษรค่าอาจเพี้ยน)
เมื่อได้ค่า MAX ก็เอามา +1
จากนั้นก็นำค่าใหม่ไปอัพเดตให้ mysql_insert_id(); ที่ได้มานั่นเอง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 19:00:29 By : {Cyberman}
 


 

No. 11



โพสกระทู้ ( 5,105 )
บทความ ( 4 )

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

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


ตอบความคิดเห็นที่ : 9 เขียนโดย : geidtiphong เมื่อวันที่ 2013-11-25 18:26:06
รายละเอียดของการตอบ ::
ใช่...


ตอบความคิดเห็นที่ : 10 เขียนโดย : {Cyberman} เมื่อวันที่ 2013-11-25 19:00:29
รายละเอียดของการตอบ ::
และใช่....

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 19:02:00 By : apisitp
 


 

No. 12

Guest


อ๋อๆ พอเข้าใจระบบแล้วค่ะ เด๋วจะลองทำดู ถ้ายังไงทำไม่ได้จะแวะมาถามใหม่นะคะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 19:13:37 By : yoyo
 


 

No. 13

Guest


ขอขอบคุณมากมายนะคะ (จะทำได้มั้ยน้อออ)
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2013-11-25 19:14:28 By : yoyo
 

   

ค้นหาข้อมูล


   
 

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