สวัสดีครับในบทความนี้จะแนะนำระบบเช็คชื่อออนไลน์ที่เขียนด้วยภาษา PHP โดยใช้เฟรมเวิร์ค Codeigniter 3.1.11 รองรับการทำงานบน PHP7 จาก devbanban.com ครับ จะมีแจก code ตั้งต้นให้และต้องทำตามคลิปสอนเพิ่มเติมเพื่อให้ระบบสมบูรณ์มากยิ่งขึ้น *และต้องดูคลิปสอนระบบแจ้งซ่อมมาก่อน ตั้งแต่ v0.2 ไปจนถึง v0.5 ถึงจะมีโค้ดตัวอย่างบางส่วนด้วยครับ
คลิปสอนระบบแจ้งซ่อม https://bit.ly/32IaNaf
ระบบเช็คชื่อออนไลน์ พัฒนาด้วย Codeigniter 3.1.11 รองรับ PHP5.6 – 7.4
ตารางมี 5 ตาราง : ตารางเก็บข้อมูลอาจารย์, ตารางเก็บข้อมูลวิชา, ตารางเก็บข้อมูลนักศึกษา, ตารางเก็บข้อมูลการลงทะเบียน, ตารางเก็บข้อมูลการเช็คชื่อ
ขอบเขตระบบ
*นักศึกษา : ดูข้อมูลวิชา, ลงทะเบียนสำหรับให้อาจารย์เช็คชื่อแต่ละวิชา (หนึ่งวิชาลงได้ 1 ครั้ง)
*อาจารย์ : Login-Logout, แก้ไขโปรไฟล์, แก้ไขรหัสผ่าน, เพิ่ม ลบ แก้ไข ข้อมูลวิชา, เช็คชื่อ และดูประวัติ, ดูรายงาน dashboard
*ระบบนี้ใช้ได้กับอาจารย์ 1 คนเท่านั้น และส่วนอื่นๆ ที่ไม่ได้กล่าวข้างต้น คือ ยังไม่มี ต้องนำไปพัฒนาเพิ่มครับ
demo : https://devbanban.com/app/makub/
สอบถามข้อมูลเพิ่มเติม inbox มาที่แฟนเพจ . https://www.facebook.com/sornwebsites
________________
สนใจ Code ตัวเต็ม (Ep.1-29) สนับสนุน 2,500 บาท ได้ code & database ทั้งหมด
โอนเงินมาที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
————————————————————————————
ธนาคารกสิกร สาขาเออร์เบิร์น สแควร์ ประชาชื่น
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 048-1-17571-2
ส่งหลักฐานการโอนเงินมาที่ https://www.facebook.com/sornwebsites
เมื่อตรวจสอบเสร็จจะรีบส่งลิงค์โค้ดให้ดาวน์โหลดครับ
หรือโทร. 0948616709 เวลา 10.00 – 20.00 น.
ปล. ไม่อยากเสียเงินให้ทำตามฟรีคลิปได้เลยครับ
คลิปสอนทั้งหมด : คลิก.
รายชื่อคลิปสอนดังต่อไปนี้
**กรุณาดูคลิป และทำตามไปด้วยครับ ถึงจะใช้งานได้
-Ep.1 แสดงการทำงานของระบบเบื้องต้น
-Ep.2 อธิบายฐานข้อมูล
-Ep.3 แนะนำการ Config และติดตั้งระบบ
-Ep.4 แนะนำโค้ดแต่ละส่วน และแจกโค้ดตั้งต้น Code ตั้งต้น : Download Click
-Ep.5 สอนทำหน้าแสดงรายละเอียดการเช็คชื่อจากฐานข้อมูล
-Ep.6 สอนทำระบบแก้ไขการเช็คชื่อ
-Ep.6.1 แก้ bug คิวรี่ระบบแก้ไขการเช็คชื่อ
-Ep.7 redirect ไปหน้าแสดงรายละเอียดการเช็คชื่อกรณีเช็คชื่อซ้ำ
-Ep.8 สอนออกแบบเทมเพลตเข้าดูประวัติการเช็คชื่อ
-Ep.9 Query ข้อมูลวันที่เช็คชื่อมาแสดง
-Ep.10 สอนทำหน้าแสดงประวัติการเช็คชื่อ
-Ep.11 สอนทำสรุปข้อมูลการมาเรียน
-Ep.12 แนะนำคลิปและโค้ดทำระบบเพิ่ม ลบ แก้ไข แสดง (CRUD)
-Ep.13 แนะนำคลิปและโค้ดทำระบบ Login-Logout
-Ep.14.1 สอนทำระบบเพิ่มข้อมูลวิชา
-Ep.14.2 สอนทำระบบแก้ไขข้อมูลวิชา
-Ep.14.3 สอนทำระบบลบข้อมูลวิชา
-Ep.14.4 สอนสร้างเงื่อนไขซ่อนปุ่มลบข้อมูลวิชา
-Ep.15.1 สอนสร้างฟอร์ม Login
-Ep.15.2 สอนทำระบบ Login
-Ep.15.3 สอนทำระบบกำหนดสิทธิ์การเข้าใช้งาน User Role
-Ep.15.4 สอนทำระบบ Logout
-Ep.15.5 สอนสร้างเงื่อนไขซ่อน/แสดงเมนู Login – Logout
-Ep.16 ระบบแก้ไขโปรไฟล์อาจารย์
-Ep.17 ระบบแก้ไขรหัสผ่าน
-Ep.18 เรียกข้อมูลรายวิชามาแสดงหน้าบ้าน
-Ep.19 หน้าแสดงรายละเอียดวิชา
-Ep.20.1 สอนทำระบบบลงทะเบียน
-Ep.20.2 สอนทำระบบบลงทะเบียน และป้องกันข้อมูลซ้ำ
-Ep.20.3 สอนทำระบบบลงทะเบียน เพิ่มข้อมูลเข้า 2 ตาราง
-Ep.21 แก้ไขการแสดงข้อมูล นศ. (แสดงรหัส นศ.)
-Ep.22 ระบบลบข้อมูล นศ.
-Ep.23 ระบบกำหนดเวลาลงทะเบียน เพิ่มคอลัมภ์ และ สร้างเงื่อนไข (หน้าบ้าน)
-Ep.24 ระบบเพิ่มข้อมูลกำหนดเวลาลงทะเบียน
-Ep.25 ระบบแก้ไขกำหนดเวลาลงทะเบียน
-Ep.26.1 แนะนำตัวอย่างหน้า Dashboard
-Ep.26.2 สอนออกแบบหน้า Dashboard
-Ep.26.3 สอนทำ Dashboard – คิวรี่ข้อมูลบน phpmyadmin
-Ep.26.4 สอนทำ Dashboard เรียกข้อมูลจาก database
-Ep.26.5 สอนทำ Dashboard เรียกข้อมูลจาก database มาแสดงในกราฟเส้น
-Ep.27 สรุป
-Ep.28 แนะนำส่วนที่มีการอัพเดทเพิ่ม หน้าแสดงสรุปการเช็คชื่อ
-Ep.29 หน้าสรุปการเช็คชื่อ (มี code ให้)
-Ep.30 สรุป V1.0
———–
คลิปพิเศษเพิ่มเติม (ไม่ต้องทำตามก็ได้)
-Ep.31 แก้ระบบเช็คชื่อ บันทึกรหัสนักศึกษาแทนการเก็บไอดีนักศึกษา
-Ep.32-1 แก้ไขหน้าแสดงรายละเอียดการเช็คชื่อ (หลังจากเช็คชื่อแล้ว)
-Ep.32-2 แก้ไขหน้าแสดงประวัติการเช็คชื่อ
-Ep.32-3 แก้ไขหน้าแสดงประวัติการเช็คชื่อแบบรายวัน
คลิปสอนทั้งหมด :
Code EP29 ดูคลิปด้วยครับ
Models
1 2 3 4 5 6 7 8 9 10 11 |
public function querySummary($ref_s_id) { $this->db->select('c.*,s.*'); $this->db->from('tbl_checkin as c '); $this->db->join('tbl_std as s','c.ref_std_id=s.std_id'); $this->db->where('c.ref_s_id', $ref_s_id); $this->db->group_by('c.ref_std_id, c.check_in_date'); $this->db->order_by('c.ref_std_id, c.check_in_date', 'ASC'); $query = $this->db->get(); return $query->result(); } |
Controllers
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 |
public function checkInHistory($s_id) { $teacher_id = $_SESSION['teacher_id']; $data['rsteacher']=$this->data_model->queryTeacherDetail($teacher_id); $data['rssubject']=$this->data_model->querySubjectDetail($s_id); $data['rsdate']=$this->data_model->queryListDate($s_id); //summary $data['rs']=$this->data_model->querySummary($s_id); //จัดการข้อมูลหน้าแสดงรายการสรุป $data_date = []; $data_array = []; foreach($data['rs'] as $key => $row) { $data_array[$row->std_code.' '.$row->std_name][$row->check_in_date][] = $row->check_in_status; if(!empty($data_date)){ if(!in_array($row->check_in_date, $data_date)){ $data_date[] = $row->check_in_date; }else{ continue; } }else{ $data_date[] = $row->check_in_date; } } //ส่ง data ไปใช้ใน view $data['data_date'] = $data_date; $data['data_array'] = $data_array; // print_r($data_date); // exit; $this->load->view('template/header'); $this->load->view('history_checkin_view', $data); $this->load->view('template/footer'); } |
views
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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
<!-- start summary --> <h3>ตารางสรุปการมาเรียน วิชา <?=$rssubject->s_name;?></h3> <table class="table table-bordered table-striped"> <thead> <tr class="danger"> <th>ชื่อ สกุล</th> <?php //date chekckin foreach ($data_date as $key => $rowx) { ?> <th class="text-center"><?php echo date('d/m/Y', strtotime($rowx));?></th> <?php }?> <th class="text-center">รวม(มา)</th> <th class="text-center">รวม(ขาด)</th> </tr> </thead> <tbody> <?php //มา/ ขาด foreach ($data_array as $key1 => $std) { ?> <tr> <td><?php echo $key1;?></td> <?php //ประกาศตัวแปรเพื่อเอาไปหาผลรวม $totalCamex=0; $totalAbsentx=0; foreach ($std as $key2 => $checkx) { ?> <td align="center"> <?php //มา if($checkx[0] == 1){ $totalCame = $checkx[0] == 1; $totalCame=1; $totalCamex += $totalCame; ?> <font color="green"> มา </font> <?php }else{ //ขาด $totalAbsent = $checkx[0] == 0; $totalAbsent=1; $totalAbsentx += $totalAbsent; ?> <font color="red"> ขาด </font> <?php } ?> </td> <?php } ?> <td align="center"><font color="green"><b><?=$totalCamex;?></b></font></td> <td align="center"><font color="red"><b><?=$totalAbsentx;?></b></font></td> </tr> <?php } ?> </tr> </tbody> </table> <!-- end summary --> |
Note เทคนิคเพิ่มเติมสำหรับ Codeigniter 3.1.11 * form validation ทำอะไรได้หลายอย่างมากๆ ไปดูกัน
- แสดง error จาก form validation เป็นภาษาไทย
จากเดิมใช้
1 |
$this->form_validation->set_rules('Username', 'Username', 'trim|required|min_length[3]'); |
ถ้าไม่เป็นไปตามกฎจะแสดง error เป็นภาษาอังกฤษ
แต่ต้องการแสดงเป็นภาษาไทยเปลี่ยนเป็น
1 2 |
$this->form_validation->set_rules('Username', 'Username', 'trim|required|min_length[4]', array('required' => 'กรุณากรอกข้อมูล %s.', 'min_length' => 'กรุณากรอกข้อมูลขั้นต่ำ 4 ตัว')); |
อย่าลืม echo ใน views ด้วยละ
1 2 3 4 |
//ไว้ใต้ input <?php echo form_error('Username'); ?> //หรือโค้ดนี้วางไวับน tag form จะแสดง error ทั้งหมดที่ผิดกฏ form validation <?php echo validation_errors(); ?> |
- ป้องกันเพิ่มข้อมูลซ้ำด้วย form validation เช่น ป้องกันเพิ่ม Username ซ้ำ ให้ใช้ code ตามด้านล่างนี้ หรืออาจปรับคอลัมภ์นี้เป็น Unique ก็สามารถใช้ได้เหมือนกัน คือ ห้ามเหมือน ห้ามซ้ำนั้นเอง และใน 1 ฟอร์มสามารถเช็คได้หลายคอลัมภ์ และอย่าลืมไป echo ใน views ตามข้อด้านบนด้วยจ้า
1 2 |
$this->form_validation->set_rules('Username', 'Username', 'trim|required|is_unique[tbl_member.Username]', array('required' => 'กรุณากรอกข้อมูล %s.', 'is_unique' =>'Username ซ้ำ ')); |
- แสดง erorr กรอกรหัสผ่านไม่ตรงกัน
1 2 3 |
$this->form_validation->set_rules('Password', 'Password', 'trim|required|min_length[3]'); $this->form_validation->set_rules('Password2', 'Password Confirmation', 'trim|required|matches[Password]', array('required' => 'กรุณากรอกข้อมูล %s.', 'matches' =>'Password ไม่ตรงกัน')); |
- ตัวอย่างการสร้างฟังก์ชั่นคิวรี่เหมือนบน phpMyAdmin
1 2 3 4 5 6 7 |
//แสดงข้อมูลการเช็คชื่อเฉพาะวันที่ปัจจุบัน public function EasyQuery() { $sql ="SELECT * FROM tbl_checkin WHERE check_in_date= curdate()"; $rs = $this->db->query($sql)->result(); return $rs; } |
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
fanpage : https://www.facebook.com/sornwebsites/