รหัสสินค้าส่วนใหญ่จะเป็นแบบมีการกำหนดหลัก อาจจะ 5-6 หลัก และอาจมีคำย่อนำหน้า เช่น CP000045, CP000569 เป็นต้น
ซึ่งแน่นอนวิธีการออกแบบการเก็บข้อมูล เราก็ต้องใช้ฟิลด์นึงเก็บคำย่อ และอีกฟิลด์นึงเก็บหมายเลข ID ซึ่งหากข้อมูลออกมาโดยอิงจากตัวอย่างด้านบนก็จะเป็น CP45, CP569
สังเกตมั้ยครับว่าเลขศูนย์ข้างหน้ามันหายไป แล้วเราจะทำอย่างไรให้มันแสดงผลครบ มาดูตัวอย่างเช่น รหัสมี 6 หลัก โดยมีวิธีดังนี้
1. แก้ที่ MySQL ตรงๆ โดยเซ็ต Attributes ให้เป็น UNSIGNED ZEROFILL
CREATE TABLE `product` (
`id` INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
`PRODUCT_ID` INT(6) UNSIGNED ZEROFILL NOT NULL
) ENGINE = MYISAM;
2. ใช้ฟังก์ชัน str_pad ของ PHP ไม่ต้องยุ่งกับ Database
$input = 45;
echo str_pad($input, 6, "0", STR_PAD_LEFT);
// กำหนดให้เพิ่มเลขศูนย์จากทางซ้ายรวมกันแล้วครบ 6 หลัก
// จะได้เป็น 000045
ฟังก์ชัน str_pad สามารถเพิ่ม String ทางขวาหรือทั้งสองข้างได้ โดยการกำหนด pad_type ดังนี้:
| pad_type | ผลลัพธ์ | คำอธิบาย |
|---|---|---|
STR_PAD_RIGHT |
450000 |
เพิ่มจากขวา |
STR_PAD_LEFT |
000045 |
เพิ่มจากซ้าย |
STR_PAD_BOTH |
004500 |
เพิ่มทั้งสองข้าง |
หวังว่าคงมีประโยชน์ครับ