Workshop สอนทำระบบเบิกจ่ายวัสดุอุปกรณ์ PHP8 PDO MySQL AdminLTE
แจกฟรี ระบบ ShoppingCart ที่พัฒนาด้วยภาษา PHP 8
- ตัวอย่างโค้ดการดึงข้อมูลผู้ใช้ทั้งหมดจากฐานข้อมูล พร้อมชื่อแผนก
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php // เชื่อมต่อฐานข้อมูล require_once '../condb.php'; // เตรียมคำสั่ง SQL $sql = "SELECT u.user_id, u.username, u.full_name, u.phone, u.email, u.role, u.status, u.created_at, d.d_name AS department_name FROM users u LEFT JOIN departments d ON u.department_id = d.d_id ORDER BY u.user_id ASC"; $stmt = $con->prepare($sql); $stmt->execute(); $users = $stmt->fetchAll(PDO::FETCH_ASSOC); // echo "<pre>"; // print_r($users); // echo "</pre>"; ?> |
-
-
สร้าง คำสั่ง SQL สำหรับดึงข้อมูลผู้ใช้ (
users) -
เลือกฟิลด์จาก
usersเช่นuser_id, username, full_name, phone, email, role, status, created_at -
ใช้
LEFT JOIN departments d ON u.department_id = d.d_idเพื่อดึงชื่อแผนก (d_name) จากตารางdepartmentsมาแมปกับdepartment_id -
ตั้งชื่อ alias ว่า
department_nameเพื่อเอาไปใช้ง่าย ๆ -
จัดเรียงข้อมูล (
ORDER BY) ตามuser_idจากน้อยไปมาก (ASC)
-
- ปรับหน้า user_add.php ดึงข้อมูลแผนกมาให้เลือก
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<?php require_once '../condb.php'; $sql = "SELECT d_id, d_name FROM departments"; $stmt = $con->prepare($sql); $stmt->execute(); $departments = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <div class="form-group col-6"> <label for="department_id">แผนก</label> <select name="department_id" class="form-control" required> <option value="">-- เลือกแผนก --</option> <?php foreach($departments as $dep): ?> <option value="<?= $dep['d_id']; ?>"><?= htmlspecialchars($dep['d_name']); ?></option> <?php endforeach; ?> </select> </div> |
- ปรับหน้าแก้ไข user_edit.php ดึงข้อมูลแผนกมาให้แก้ไข
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<div class="form-group col-6"> <label>แผนก</label> <select name="department_id" id="edit_department_id" class="form-control" required> <option value="">-- เลือกแผนก --</option> <?php require_once "../condb.php"; // ไฟล์เชื่อมต่อ DB $stmt = $con->query("SELECT d_id, d_name FROM departments ORDER BY d_name ASC"); while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { echo '<option value="' . htmlspecialchars($row['d_id']) . '">' . htmlspecialchars($row['d_name']) . '</option>'; } ?> </select> </div> |
- ปรับหน้าสมัครสมาชิก register.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 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Register | Material</title> <!-- Google Font --> <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,400i,700&display=fallback"> <!-- Font Awesome --> <link rel="stylesheet" href="plugins/fontawesome-free/css/all.min.css"> <!-- icheck bootstrap --> <link rel="stylesheet" href="plugins/icheck-bootstrap/icheck-bootstrap.min.css"> <!-- Theme style --> <link rel="stylesheet" href="dist/css/adminlte.min.css"> <!-- toastr --> <link rel="stylesheet" href="plugins/toastr/toastr.min.css"> </head> <body class="hold-transition register-page"> <div class="register-box"> <div class="register-logo"> <a href="#"><b>Register</b> Account</a> </div> <?php require_once 'condb.php'; // เชื่อมต่อฐานข้อมูล // ดึงข้อมูลแผนกทั้งหมด $stmt = $con->prepare("SELECT d_id, d_name FROM departments ORDER BY d_name ASC"); $stmt->execute(); $departments = $stmt->fetchAll(PDO::FETCH_ASSOC); ?> <div class="card"> <div class="card-body register-card-body"> <p class="login-box-msg">Register a new membership</p> <form action="register_save.php" method="post"> <div class="input-group mb-3"> <input type="text" class="form-control" placeholder="Username" name="username" required> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-user"></span></div> </div> </div> <div class="input-group mb-3"> <input type="password" class="form-control" placeholder="Password" name="password" required> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-lock"></span></div> </div> </div> <div class="input-group mb-3"> <input type="text" class="form-control" placeholder="Full Name" name="full_name" required> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-id-card"></span></div> </div> </div> <div class="input-group mb-3"> <input type="email" class="form-control" placeholder="Email" name="email"> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-envelope"></span></div> </div> </div> <div class="input-group mb-3"> <input type="text" class="form-control" placeholder="Phone" name="phone"> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-phone"></span></div> </div> </div> <div class="input-group mb-3"> <select class="form-control" name="department_id" required> <option value="">-- เลือกแผนก --</option> <?php foreach ($departments as $dep): ?> <option value="<?= $dep['d_id'] ?>"><?= htmlspecialchars($dep['d_name']) ?></option> <?php endforeach; ?> </select> <div class="input-group-append"> <div class="input-group-text"><span class="fas fa-building"></span></div> </div> </div> <!-- บังคับ Role = user --> <input type="hidden" name="role" value="user"> <!-- บังคับ Status = active --> <input type="hidden" name="status" value="active"> <input type="hidden" name="created_at" value="<?= date('Y-m-d H:i:s') ?>"> <div class="row"> <div class="col-12"> <button type="submit" class="btn btn-primary btn-block">Register</button> </div> </div> </form> <a href="index.php" class="text-center">I already have a membership</a> </div> </div> </div> <!-- jQuery --> <script src="plugins/jquery/jquery.min.js"></script> <!-- Bootstrap 4 --> <script src="plugins/bootstrap/js/bootstrap.bundle.min.js"></script> <!-- AdminLTE App --> <script src="dist/js/adminlte.min.js"></script> <!-- toastr App --> <script src="plugins/toastr/toastr.min.js"></script> <script> $(function() { <?php if (isset($_GET['register']) && $_GET['register'] === 'success'): ?> toastr.success('สมัครสมาชิกสำเร็จ', 'สำเร็จ'); <?php elseif (isset($_GET['error'])): ?> toastr.error("<?php echo addslashes($_GET['error']); ?>", 'เกิดข้อผิดพลาด'); <?php endif; ?> }); </script> </body> </html> |
- บันทึกลงฐานข้อมูล register_save.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 |
<?php require_once 'condb.php'; // เชื่อมต่อฐานข้อมูล if ($_SERVER['REQUEST_METHOD'] === 'POST') { // ประกาศตัวแปร รับค่า POST $username = trim($_POST['username']); $password = $_POST['password']; $full_name = trim($_POST['full_name']); $email = $_POST['email'] ?? null; $phone = $_POST['phone'] ?? null; $department_id = $_POST['department_id'] ?? null; // กำหนดค่า Role และ Status อัตโนมัติ $role = 'user'; $status = 'active'; // เข้ารหัสรหัสผ่าน $hashedPassword = password_hash($password, PASSWORD_DEFAULT); // Prepare SQL $sql = "INSERT INTO users (username, password, full_name, email, phone, department_id, role, status, created_at) VALUES (:username, :password, :full_name, :email, :phone, :department_id, :role, :status, NOW())"; $stmt = $con->prepare($sql); // Bind parameters $stmt->bindParam(':username', $username, PDO::PARAM_STR); $stmt->bindParam(':password', $hashedPassword, PDO::PARAM_STR); $stmt->bindParam(':full_name', $full_name, PDO::PARAM_STR); $stmt->bindParam(':email', $email, PDO::PARAM_STR); $stmt->bindParam(':phone', $phone, PDO::PARAM_STR); $stmt->bindParam(':department_id', $department_id, PDO::PARAM_INT); $stmt->bindParam(':role', $role, PDO::PARAM_STR); $stmt->bindParam(':status', $status, PDO::PARAM_STR); try { $stmt->execute(); header("Location: register.php?register=success"); exit; } catch (PDOException $e) { $error = urlencode($e->getMessage()); header("Location: register.php?error=$error"); exit; } } |

สนใจจ้างพัฒนาระบบ เขียนระบบ
ทำเว็บไซต์ รับสอนเขียนโปรแกรม
inbox มาที่เพจ หรือติดต่อ 098-373-8651
ช่องทางการชำระเงิน
เงินสด หรือ e-banking
ธนาคารกสิกรไทย
เลขบัญชี : 0951168564
ชื่อบัญชี : นายวัยวุฒิ ชุมเมืองปัก
