รหัสอัตโนมัตินี้ จะเป็นรหัสที่ไม่ซ้ำกัน เพื่อใช้อ้างอิงเอกสารแต่ละรายการที่พิมพ์ออกมา ซึ่งอาจจะเป็นรหัสที่ใช้สร้างบาร์โค๊ดด้วย
การสร้างตารางเก็บข้อมูลจะมีฟิลด์ที่เป็น Primary Key อยู่สองฟิลด์คือ ฟิลด์ id กับ ฟิลด์ doc_no
ฟิลด์ id จะกำหนด type เป็น int(11) และเพิ่มค่าอัตโนมัติ (Auto Increment)
ฟิลด์ doc_no จะกำหนดเป็น varchar(11)
<?php $code = "A"; $yearMonth = substr(date("Y")+543, -2).date("m"); //query MAX ID //$sql = "SELECT MAX(id) AS last_id FROM my_table"; //$qry = mysql_query($sql) or die(mysql_error()); //$rs = mysql_fetch_assoc($qry); //$maxId = substr($rs['last_id'], -5); //ข้อมูลนี้จะติดรหัสตัวอักษรด้วย ตัดเอาเฉพาะตัวเลขท้ายนะครับ $maxId = 237; //<--- บรรทัดนี้เป็นเลขทดสอบ ตอนใช้จริงให้ ลบ! ออกด้วยนะครับ $maxId = ($maxId + 1); $maxId = substr("00000".$maxId, -5); $nextId = $code.$yearMonth.$maxId; ?>
การทำงานของโค๊ด
1. กำหนดอักษรนำหน้า
2. ดึงค่าปี เดือน ปัจจุบัน
3. ดึงค่าไอดีล่าสุดจากตารางข้อมูลที่จะบันทึก
4. บวกค่าเพิ่มอีก 1
5. นำข้อมูลทั้งหมดมารวมกัน
ฟังก์ชั่น substr("00000".$maxId, -5); คือเพิ่มศูนย์ไว้ด้านหน้า ซึ่งจะเพิ่มเท่าไหร่ก็ได้ แต่จะตัดเอาเฉพาะตัวเลข 5 หลักสุดท้าย ก็จะได้เลขที่มีเลขศูนย์นำหน้ามาใช้งาน
มาดูหลักการกันหน่อยว่าทำไม ต้องเอาตัวอักษร หรือวันเดือนปีมาต่อกันให้ยุ่งยากด้วย
เพราะการใช้เลขล้วนมันไม่สื่อความหมายอะไรน่ะครับ บางทีเราก็อยากจะมองที่รหัสเอกสารแล้วทราบข้อมูลเบื้องต้นในทันทีเลย เช่น เอกสารนี้เป็นของฝ่ายไหน สร้างขึ้นปีไหน เดือนไหน ก็ไม่ต้องไล่หาในเอกสารให้ยุ่งยาก ดูแล้วสบายตาดีครับ ^^"
"PHP ไม่ได้สร้างสุดยอดโปรแกรมแต่ PHP ช่วยให้งานคุณง่ายขึ้นต่างหาก"
PHP CI MANIA - PHP Code Generatorโปรแกรมช่วยสร้างโค้ด ลดเวลาการเขียนโปรแกรม
สนใจสั่งซื้อเพียง 3,990 บาท
PHP CI MANIA - PHP Code Generator
โปรแกรมช่วยสร้างโค้ด "ลดเวลาการเขียนโปรแกรม"
แล้วถ้าอยากจะดึงค่าไอดี มาใส่ข้างหน้าทำไงหรอคะ
ตอบลบในโค๊ดตัวอย่าง บรรทัดที่ 14 ครับ
ตอบลบ$nextId = $code.$yearMonth.$maxId;
เราสามารถเชื่อมตัวแปรได้ด้วยเครื่องหมาย . ถ้าต้องการให้ไอดีอยู่ด้านหน้า
ก็เอาไอดีมาวางด้านหน้าสุด แล้วเชื่อมด้วยจุดครับ
$nextId = $maxId.$code.$yearMonth;
เวลาใช้ จะใช้งานยังไงครับ
ตอบลบถ้าต้องการให้ทุกเดือนเริ่มนับ00001ใหม่ ต้องทำอย่างไรครับ
ตอบลบ