ข้ามไปยังเนื้อหาหลัก
ProgrammerThailand

สังคมนักพัฒนาระบบ (Community) php php autonumber

ขอโค้ดการสร้าง autonumer id

ขอวิธีการเขียนโค้ด php auto id หน่อยครับ แบบว่าเมื่อเราต้องการเพิ่มข้อมูลลงในฐานข้อมูลแล้วในฟอร์มที่เป็น Textbox จะรันแสดงลำดับที่ หรือ รหัสสินค้าอัตโนมัติโดยที่เราไม่ต้องป้อนเองแล้วจัดเก็บลงฐานข้อมูล แบบนี้อ่ะคับพอมีใครแนะนำวิธีการเขียนบ้างไหมครับ 

0 คะแนน

5 คำตอบ

0
admin Lv.1 Hello World ตอบ · แก้ไข 15/8/18 12:14
//ถ้าเป็น Yii2
public function getNextId(){
    //ตัวอย่างหากต้องการ SN59-00001

    
    $year = substr(date('Y') + 543, 2);//หาจากปีปัจจุบับคือ 59
    $lastRecord= Model::find()->where(['like', 'id_case', 'SN'.$year.'-'])->orderBy(['id' => SORT_DESC])->one();//หาตัวล่าสุดก่อน

    if ($lastRecord) {

        $digit = explode('-', $lastRecord->id_case);
            
        $lastDigit = ((int) $digit[1]);  // เปลี่ยน string เป็น integer สำหรับคำนวณ +1
        $lastDigit++; //เพิ่ม 1
        $lastDigit = str_pad($lastDigit, 5, '0', STR_PAD_LEFT);//ใส่ 0 ข้างหน้าหน่อย
    } else {
        $lastDigit = '00001';
    }

    return 'SN'. $year . '-' . $lastDigit;

}

ตัวอย่างนี้ใช้กับ Yii Framework 2 นะครับ ลองประยุกต์เอานะครับ

0
Fashi Hippie Lv.1 Hello World ตอบ

code เอาไว้ที่ส่วนไหนคะ

0
admin Lv.1 Hello World ตอบ

ใน Yii2 เอาไว้ใน controller ได้ครับ ตอน actionCreate() ก็เรียกใช้งานใน actionCreate() ได้ครับ เช่น

public function actionCreate(){
    $model = new Post();
    $model->nextid = $this->getNextId();
//...
}

 

0
Fashi Hippie Lv.1 Hello World ตอบ

1. id_case ต้องเป็น int หรือ varchar คะ ต้อง auto number ด้วยหรือเปล่าค่ะ ในฐานข้อมูล

2. return $case // $case คืออะไรคะ

blushขอบคุณสำหรับคำตอบนะคะ..มือใหม่ค่ะ

0
admin Lv.1 Hello World ตอบ

id_case เป็น varchar นะครับ เนื่องจากเก็บเป็น SN61-00001

$case เป็นคำนำหน้า (แก้แล้วเป็น 'SN')

ตอบคำถามนี้

เข้าสู่ระบบเพื่อตอบคำถามและโหวต

เข้าสู่ระบบ สมัครสมาชิก