สวัสดีครับ ในบทความนี้ผมจะแจกระบบลงชื่อเข้าห้อง/เช็คอิน พิมพ์รหัสนักเรียน/สแกนบาร์โค้ด ระบบเขียนขึ้นมาง่ายๆ ครับเป็นแนวทางให้นำไปต่อยอดในอนาคต ระบบรองรับการทำงานบน PHP7 – PHP8 อีกด้วย *ศึกษาไว้ครับเผื่อได้ทำ
โค้ดประกอบด้วย
- PHP เขียนในรูปแบบ PDO
- ฐานข้อมูลใช้ MySQL บนโปรแกรม phpMyAdmin
- CONDITION (เงื่อนไข)
- HTML
- Bootstrap5
- Sweet Alert
- SQL Insert , Query
- Try Catch
0.รวม Workshop PHP PDO ก่อนหน้าคลิก
1. Database (ฐานข้อมูลที่ใช้ชื่อ db_rollCall มี 2 ตารางด้วยกัน คือ ตารางเก็บข้อมูลนักเรียน และเก็บข้อมูลการเช็คชื่อ)
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 |
-- phpMyAdmin SQL Dump -- version 5.2.1 -- https://www.phpmyadmin.net/ -- -- Host: localhost -- Generation Time: Dec 10, 2024 at 08:41 AM -- Server version: 10.4.28-MariaDB -- PHP Version: 8.1.17 SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; START TRANSACTION; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8mb4 */; -- -- Database: `db_rollCall` -- CREATE DATABASE IF NOT EXISTS `db_rollCall` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; USE `db_rollCall`; -- -------------------------------------------------------- -- -- Table structure for table `tbl_checkIn` -- CREATE TABLE `tbl_checkIn` ( `no` int(11) NOT NULL, `std_code` int(11) NOT NULL, `dateCreate` timestamp NOT NULL DEFAULT current_timestamp() ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -------------------------------------------------------- -- -- Table structure for table `tbl_std` -- CREATE TABLE `tbl_std` ( `std_code` int(11) NOT NULL, `std_name` varchar(100) NOT NULL, `std_class` varchar(50) NOT NULL, `std_sex` int(1) NOT NULL COMMENT '1 ชาย, 0 หญิง' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci; -- -- Dumping data for table `tbl_std` -- INSERT INTO `tbl_std` (`std_code`, `std_name`, `std_class`, `std_sex`) VALUES (1001, 'ดช. devbanban 1', 'ป.6', 1), (1002, 'ดช. devbanban 2', 'ป.6', 0), (1003, 'ดช. devbanban 3', 'ป.6', 1), (1004, 'ดช. devbanban 4', 'ป.6', 0), (1005, 'ดญ.devbanban 5', 'ป.6', 0), (1006, 'ดญ.devbanban 6', 'ป.6', 0); -- -- Indexes for dumped tables -- -- -- Indexes for table `tbl_checkIn` -- ALTER TABLE `tbl_checkIn` ADD PRIMARY KEY (`no`); -- -- Indexes for table `tbl_std` -- ALTER TABLE `tbl_std` ADD PRIMARY KEY (`std_code`); -- -- AUTO_INCREMENT for dumped tables -- -- -- AUTO_INCREMENT for table `tbl_checkIn` -- ALTER TABLE `tbl_checkIn` MODIFY `no` int(11) NOT NULL AUTO_INCREMENT; -- -- AUTO_INCREMENT for table `tbl_std` -- ALTER TABLE `tbl_std` MODIFY `std_code` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=1007; COMMIT; /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; |
2.ไฟล์เชื่อมต่อฐานข้อมูล condb.php
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 |
<?php // Turn off all error reporting //error_reporting(0); //จ้างพัฒนาเพิ่มเติม ติดต่อมาที่แฟนเพจ : https://www.facebook.com/sornwebsites $servername = "localhost"; $username = "root"; $password = ""; try { $condb = new PDO("mysql:host=$servername;dbname=db_rollCall;charset=utf8", $username, $password); // set the PDO error mode to exception //$condb->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); //echo "Connected successfully"; } catch(PDOException $e) { echo "Connection failed: " . $e->getMessage(); } //Set ว/ด/ป เวลา ให้เป็นของประเทศไทย date_default_timezone_set('Asia/Bangkok'); // ขายระบบ ลด 80% link https://devbanban.com/?p=4425 ?> |
3.หน้าแรกของระบบ index.php
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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 |
<?php // ขายระบบ ลด 80% link https://devbanban.com/?p=4425 //ไฟล์เชื่อมต่อฐานข้อมูล require_once 'condb.php'; //https://devbanban.com/?p=4425 //คิวรี่ข้อมูลมาแสดงในตาราง $stmtChIn = $condb->prepare("SELECT * FROM tbl_checkIn as c INNER JOIN tbl_std as s ON c.std_code=s.std_code ORDER BY c.no DESC"); $stmtChIn->execute(); $result = $stmtChIn->fetchAll(); //https://devbanban.com/?p=4425 ?> <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>ระบบเช็คชื่อเข้าห้อง ระบบเช็คอินเข้าห้องสมุด by devbanban.com 2024</title> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <!-- sweet alert --> <script src="https://code.jquery.com/jquery-2.1.3.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert-dev.js"></script> <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/1.1.3/sweetalert.css"> </head> <body> <!-- start menu --> <nav class="navbar navbar-expand-lg" style="background-color: green"> <div class="container"> <a class="navbar-brand text-white" href="https://devbanban.com/?p=4425">home</a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav me-auto mb-2 mb-lg-0"> <li class="nav-item"> <a class="nav-link active text-white" aria-current="page" href="https://devbanban.com/?p=4425">ขายระบบ ลด 80%</a> </li> <li class="nav-item"> <a class="nav-link text-white" href="https://www.facebook.com/sornwebsites/">จ้างพัฒนาต่อคลิก</a> </li> <li class="nav-item"> <a class="nav-link text-white" href="https://devbanban.com/?p=4797">ระบบห้องสมุด</a> </li> </ul> </div> </div> </nav> <!-- end menu https://devbanban.com/?p=4425--> <!-- start show check in https://devbanban.com/?p=4425--> <div class="container"> <div class="row"> <div class="col-sm-2 mt-3"> </div> <div class="col-sm-8 mt-3"> <form action="" method="post"> <div class="form-group row mb-2"> <h4> พิมพ์รหัสนักเรียน/สแกนบาร์โค้ด</h4> <div class="col-sm-7"> <input type="text" name="std_code" class="form-control form-control-lg" placeholder="รหัสนักเรียน/นักศึกษา" required minlength="2" style="background-color: #d7edca;" autofocus="on"> </div> <div class="col-sm-5"> <button type="submit" name="action" value="save" class="btn btn-primary btn-lg" style="width: 100%">ลงชื่อเข้าห้องเรียน/ห้องสมุด</button> </div> </div> </form> <br> <b>รายการลงชื่อเข้าห้องสมุด/ห้องเรียน </b> <table class="table table-striped table-hover table-responsive table-bordered"> <thead> <tr class="table-danger"> <th width="5%">ลำดับ</th> <th width="5%">รหัส</th> <th width="45%">ชื่อ - สกุล</th> <th width="5%">ชั้น</th> <th width="5%">เพศ</th> <th width="30%">ว/ด/ป</th> </tr> </thead> <tbody> <?php foreach($result as $row) { ?> <tr> <td align="center"><?=$row['no'];?></td> <td><?=$row['std_code'];?></td> <td><?=$row['std_name'];?></td> <td><?=$row['std_class'];?></td> <td><?php if($row['std_sex']==1){ echo 'ชาย';}else{ echo 'หญิง'; }?></td> <td><?=date('d/m/Y H:i:s', strtotime($row['dateCreate']));?> น.</td> </tr> <?php } ?> </tbody> </table> </div> </div> </div> <!-- end show check in https://devbanban.com/?p=4425 --> <p class="text-center mt-5 mb-5"> develop by devbanban.com @ 2024 <br> พัฒนาเป็นระบบตัวอย่าง แจกให้ศึกษาและพัฒนาต่อยอด <br> more info <a href="https://devbanban.com/?p=4425"> click</a> </p> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> </body> </html> <?php //จ้างพัฒนาเพิ่มเติม ติดต่อมาที่แฟนเพจ : https://www.facebook.com/sornwebsites // echo '<pre>'; // print_r($_POST); //exit(); //สร้างเงื่อนไขตรวจสอบการส่งข้อมูลมาจากฟอร์ฒ if(isset($_POST['std_code']) && isset($_POST['action']) && $_POST['action']=='save'){ //trigger exception in a "try" block try { //ตรวจสอบว่ามีรหัสนักเรียนอยู่ในระบบหรือไม่ $stmtChkID = $condb->prepare("SELECT* FROM tbl_std WHERE std_code=:std_code"); //bindparam STR // INT $stmtChkID->bindParam(':std_code', $_POST['std_code'], PDO::PARAM_INT); $stmtChkID->execute(); $rowChk = $stmtChkID->fetch(PDO::FETCH_ASSOC); //นับจำนวนการคิวรี่ if($stmtChkID->rowCount() !=1){ echo '<script> setTimeout(function() { swal({ title: "ไม่พบรหัสนักศึกษาในระบบ", text: "กรุณาพิมพ์/สแกนใหม่อีกครั้ง", type: "error" }, function() { window.location = "index.php"; }); }, 1000); </script>'; }else{ //ประกาศตัวแปรรับค่าจากฟอร์ม $std_code = $_POST['std_code']; //sql insert $stmtInsert = $condb->prepare("INSERT INTO tbl_checkIn (std_code) VALUES (:std_code) "); //bindparam STR // INT $stmtInsert->bindParam(':std_code', $std_code, PDO::PARAM_INT); //จ้างพัฒนาเพิ่มเติม ติดต่อมาที่แฟนเพจ : https://www.facebook.com/sornwebsites //ถ้า stmt ทำงานถูกต้อง if($stmtInsert->execute()){ echo ' <script> setTimeout(function() { swal({ title: "ลงชื่อเข้าใช้สำเร็จ!", //ข้อความ เปลี่ยนได้ เช่น บันทึกข้อมูลสำเร็จ!! text: "กำลังกลับไปหน้าหลัก", //ข้อความเปลี่ยนได้ตามการใช้งาน type: "success", //success, warning, danger timer: 1000, //ระยะเวลา redirect 3000 = 3 วิ เพิ่มลดได้ showConfirmButton: false //ปิดการแสดงปุ่มคอนเฟิร์ม ถ้าแก้เป็น true จะแสดงปุ่ม ok ให้คลิกเหมือนเดิม }, function(){ window.location.href = "index.php"; //หน้าเพจที่เราต้องการให้ redirect ไป อาจใส่เป็นชื่อไฟล์ภายในโปรเจคเราก็ได้ครับ เช่น admin.php }); }); </script>'; } //if } //rowcount } //catch exception catch(Exception $e) { //echo 'Message: ' .$e->getMessage(); //exit; echo '<script> setTimeout(function() { swal({ title: "เกิดข้อผิดพลาด", text: "กรุณาติดต่อผู้ดูแลระบบ", type: "error" }, function() { window.location = "index.php"; }); }, 1000); </script>'; } //catch } //isset devbanban.com ?> |
4.ขอแนะนำระบบสอนออนไลน์ (รายละเอียดใต้คลิป)
5. ขอแนะนำระบบห้องสมุด ราคาเบาๆ
6.แนวทางการนำไปต่อยอด
- พัฒนาร่วมกับระบบห้องสมุด นอกจากจะมียืมคืนหนังสือแล้ว มีลงชื่อเข้าห้องด้วย
- พัฒนาเป็นระบบเช็คชื่อเข้าห้องเรียนด้วยบาร์โค้ด / คิวอาร์โค้ด
- พัฒนาเพิ่มเป็นระบบลงชื่อเข้าร่วมกิจกรรม
- อื่นๆ
7. Hosting ปีละ 1200 บาท คลิก
หมายเหตุ แจกให้ศึกษาและพัฒนาต่อยอดนะครับ เอาไปปรับแต่งได้เต็มที่ หรือจ้างผมพัฒนาเพิ่มได้ครับ
ระบบพร้อมใช้ทั้งหมด คลิก
ร่วมสนับสนุน ค่ากาแฟ ค่าโฮส devbanban.com ได้ที่
ธนาคารกรุงไทย สาขาเดอะมอลล์ท่าพระ
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 878-0-17747-6
————————————————————————————
ธนาคารไทยพาณิชย์ สาขามหาวิทยาลัยราชภัฏธนบุรี
ชื่อบัญชี นายพิศิษฐ์ บวรเลิศสุธี เลขที่ 406-359094-1
fanpage : https://www.facebook.com/sornwebsites/