ต้องการให้รันเลข ออโต้นัมเบอร์ ตั้งแต่001 ไปเรื่อยๆค่ะ พอขึ้น ปี66 ก็ต้องการให้กลับมารัน เลข 001 ใหม่
ไม่บอกปัญหา งั้นลองศึกษาฟังก์ชัน date()
สามารถยึดวันที่ 1 ม.ค.(md) เป็นวันปีใหม่ หรือ นับวันของปี (ปี)
ส่วน leading zero number
แสดง - printf()
เก็บเป็นตัวแปร - sprintf(), str_pad()
เช่น printf("%05d", 123); // 00123
Date :
2022-02-07 09:39:45
By :
009
เป็นแบบนี้ค่ะ 64 รัน 001 และ 002 อยู่
พอทดลองให้เป็น 65 จะรันแค่ 001 พอกเพิ่มอีกครั้ง
จะรันเป็น 003 ต่อจาก 64 แต่มาบันทึกเป็น 65
Date :
2022-02-07 09:40:04
By :
maisudarat1818
กำหนด data type เป็น INT หรือ numeric แล้วตั้งเป็น ZEROFILL อย่าเก็บเป็น string + auto increment แต่นับแถวก่อน insert เอา
ส่วนการรีเซ็ตวันปีใหม่ กำหนดเงื่อนไขใน php ตาม #1
Date :
2022-02-07 09:49:23
By :
009
ถ้าจะใช้ SELECT Max(No) + 1 ...
ต้องเพิ่มเงื่อนไข ว่า Max(Year) ด้วย ไม่งั้นมันจะเช็ค max ทั้งคอลัมน์ซึ่งก็คือ 2 และ +1 จึงเป็นสาม
จึงต้องเช็คเฉพาะปีล่าสุด
Date :
2022-02-07 10:55:58
By :
009
เงื่อนไขใน sql คือ where...
เงื่อนไขใน php คือ if...else...
ว่าแต่ไม่เหนื่อยกับการโพสต์โค้ดด้วยรูปภาพหรือ กว่าจะแคป อัปโหลดแล้วแปะลิงค์
ไม่ copy+paste โค้ดเป็น text ครั้งเดียวไปเลย
Date :
2022-02-07 11:14:10
By :
009
บรรทัด 14 ตรง where เปลี่ยนเป็น
SELECT...WHERE YEAR(Date) = YEAR(CURDATE())
Date :
2022-02-07 11:44:48
By :
009
ใช้ trigger before insert
Code (SQL)
declare @new_no as int;
select @new_no := x_no
from (
select if(Year(Date)<Year(), no + 1 , 1) x_no from tablename order by Date desc, No desc limit 1
union
select 1 x_no
) limit 1
;
set new.No = @new_no;
แล้ว ก็สั่ง insert ไป ธรรมดา โดยไม่ต้อง กำหนด ค่า No
ประวัติการแก้ไข 2022-02-07 11:54:26 2022-02-07 12:06:03 2022-02-07 12:06:29 2022-02-07 12:16:30
Date :
2022-02-07 11:52:50
By :
Chaidhanan
ก่อนใช้วิชามาร เอาพื้นฐานก่อนดีกว่า
Date :
2022-02-07 12:54:18
By :
009
Load balance : Server 03