มาทดลองสร้าง auto number ด้วยภาษา PHP โดยไม่ง้อ A_I (Auto Increment) จาก Mysql . เป็นตัวอย่างง่ายๆ สามารถนำไปใช้ได้จริง มาเริ่มกันเลยครับ
**ฟรีคลิปปรับพื้นฐานภาษา PHP คลิก
ตาราง *อย่างลืมสร้างฐานข้อมูลก่อนนะครับ เช่น workshop_bill
1 2 3 4 5 6 7 |
CREATE TABLE `tbl_bill1` ( `bill_no` int(4) UNSIGNED ZEROFILL NOT NULL, `bill_date` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; ALTER TABLE `tbl_bill1` ADD PRIMARY KEY (`bill_no`); |
ตารางจะสร้างตัวอย่างมาแค่ 2 คอลัมภ์ ดังนี้ (*สามารถเพิ่มภายหลังให้เหมาะกับงานของเราได้ครับ)
1.bill_no เป็น int และ PK
2.bill_date เป็น timestamp
Full code จะประกอบด้วย 6 ส่วนดังนี้
- การเชื่อมต่อฐานข้อมูล ผมตั้งชื่อมาให้คือ workshop_bill
- การคิวรี่หาเลขบิลล่าสุดจากตาราง
- สร้างเงื่อนไขตรวจสอบ ถ้าไม่มีเลขบิลในตารางมาก่อน จะกำหนดให้เท่ากับ 1 แต่ถ้าไม่ใช่ก็เอาเลขบิลล่าสุดในตารางมาบวกเพิ่มทีละ 1
- เพิ่มเลขบิลใหม่ไปที่ตาราง *ให้รีเฟรซหน้านี้บ่อยๆครับ จะมีข้อมูลเข้าไปที่ตารางของเรา ปล.รีเฟรซที่บราวเซอร์
- คิวรี่ข้อมูลจากตารางออกมาแสดง
- จากข้อ 5 ก็เอามาแสดงข้อมูลโดยใช้ foreach แสดงข้อมูลทั้งหมดที่มีในตาราง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
<?php //1 connect database $condb= mysqli_connect("localhost","root","yourpassword","workshop_bill") or die("Error: " . mysqli_error($condb)); mysqli_query($condb, "SET NAMES 'utf8' "); //2 query last bill no $query = "SELECT MAX(bill_no) as lastbill FROM tbl_bill1"; $resultlastbill = mysqli_query($condb, $query); $row = mysqli_fetch_array($resultlastbill); //3 ถ้า bill no เป็นค่าว่างให้เท่ากับ 1 ถ้าไม่ใช่ค่าว่าง ให้เอาเลขบิลล่าสุดไป +1 $lastbill = $row['lastbill']; if($lastbill==''){ $lastbill=1; }else{ $lastbill = ($lastbill + 1); } echo '<hr>'; echo $lastbill; echo '<hr>'; //4 เพิ่มเลขที่บิลใหม่ $sqlinsert = "INSERT INTO tbl_bill1 (bill_no) VALUES ($lastbill) "; $resultinsert = mysqli_query($condb, $sqlinsert); echo $sqlinsert; echo '<hr>'; //5 query from table $querydata = "SELECT * FROM tbl_bill1 ORDER BY bill_no DESC"; $rs = mysqli_query($condb, $querydata); //6 view data from table foreach ($rs as $v) { echo 'No. '.$v['bill_no']. ' date ' .$v['bill_date']; echo '<hr>'; } //devbanban.com ?> |
ผลการทำงาน
***ลองเอาไปประยุกต์ใช้ดูนะครับ
รายการระบบพร้อมใช้ ราคาถูก ได้โค้ดทั้งหมด
แฟนเพจ : https://www.facebook.com/sornwebsites/
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com และทีมงานได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
————————————————————————————
ธนาคารกสิกร สาขาเออร์เบิร์น สแควร์ ประชาชื่น
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 048-1-17571-2
อีก 1 ตัวอย่าง กรณีเอาปีปัจจุบันมาทำเลขบิลด้วย จะใช้ พศ. เป็นเลขหน้าและต่อด้วยเลขบิล
*ใช้ตารางเดิมได้เลยนะครับ แต่ปรับขนาดของคอลัมภ์บิลให้เพียงพอต่อขนาดของเลขบิลด้วยนะครับ (ตารางข้างบนขนาด 4 แก้เป็น 9 หรือ 11 ก็ได้ครับ)
Full Code *รันและรีเฟรซหน้านี้ไปเรื่อยๆครับ จะมีข้อมูลเพิ่มเข้าในตาราง
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
<?php //connect database $condb= mysqli_connect("localhost","root","","workshop_bill") or die("Error: " . mysqli_error($condb)); mysqli_query($condb, "SET NAMES 'utf8' "); //ประกาศตัวแปรปี แปลง คศ. เป็น พ.ศ. $y = (date('Y')+543); echo $y; echo '<hr>'; //query last bill no $query = "SELECT MAX(bill_no) as lastbill FROM tbl_bill1 WHERE bill_no LIKE '%$y%'"; $resultlastbill = mysqli_query($condb, $query); $row = mysqli_fetch_array($resultlastbill); echo $query; echo '<hr>'; $lastbill = $row['lastbill']; if($lastbill==''){ $lastbill=$y.'0001'; }else{ $lastbill = ($lastbill + 1); } echo '<hr>'; echo $lastbill; echo '<hr>'; //insert new bill $sqlinsert = "INSERT INTO tbl_bill1 (bill_no) VALUES ($lastbill) "; $resultinsert = mysqli_query($condb, $sqlinsert); echo $sqlinsert; echo '<hr>'; //query $querydata = "SELECT * FROM tbl_bill1 ORDER BY bill_no DESC"; $rs = mysqli_query($condb, $querydata); //view data from table foreach ($rs as $v) { echo 'No. '.$v['bill_no']. ' date ' .$v['bill_date']; echo '<hr>'; } //devbanban.com ?> |
ผลการทำงาน
***ลองเอาไปประยุกต์ใช้ดูนะครับ