- สมัครสมาชิก: ลูกค้าสามารถลงทะเบียนเป็นสมาชิก
- เข้าสู่ระบบ: สมาชิกสามารถล็อกอินเข้าสู่ระบบ
- สะสมแต้ม: ระบบจะเพิ่มแต้มให้ลูกค้าตามยอดซื้อ
- แลกของรางวัล: สมาชิกสามารถใช้แต้มสะสมแลกของรางวัล
- แอดมินจัดการสมาชิก: ผู้ดูแลระบบสามารถจัดการข้อมูลสมาชิก
🔧 เทคโนโลยีที่ใช้
- PHP (เวอร์ชัน 7.4 ขึ้นไป)
- MySQL
- Bootstrap (เพื่อความสวยงาม)
- jQuery (สำหรับ Ajax)
- Session (สำหรับการจัดการล็อกอิน)
🔹 1. สร้างฐานข้อมูล MySQL
ให้สร้างฐานข้อมูลใหม่ชื่อ loyalty_program
และใช้ตารางต่อไปนี้:
CREATE DATABASE loyalty_program;
USE loyalty_program;
-- ตารางสมาชิก
CREATE TABLE members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
points INT DEFAULT 0
);
-- ตารางการทำรายการสะสมแต้ม
CREATE TABLE transactions (
id INT AUTO_INCREMENT PRIMARY KEY,
member_id INT NOT NULL,
points INT NOT NULL,
transaction_type ENUM('earn', 'redeem') NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (member_id) REFERENCES members(id)
);
🔹 2. ไฟล์เชื่อมต่อฐานข้อมูล (db.php
)
<?php
$servername = "localhost";
$username = "root"; // ตั้งค่าตามเซิร์ฟเวอร์ของคุณ
$password = "";
$dbname = "loyalty_program";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("เชื่อมต่อฐานข้อมูลล้มเหลว: " . $conn->connect_error);
}
?>
🔹 3. ฟอร์มสมัครสมาชิก (register.php
)
<?php
include 'db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = $_POST['name'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$stmt = $conn->prepare("INSERT INTO members (name, email, password) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $name, $email, $password);
if ($stmt->execute()) {
echo "สมัครสมาชิกสำเร็จ!";
} else {
echo "เกิดข้อผิดพลาด: " . $stmt->error;
}
$stmt->close();
}
?>
<form method="post">
ชื่อ: <input type="text" name="name" required><br>
อีเมล: <input type="email" name="email" required><br>
รหัสผ่าน: <input type="password" name="password" required><br>
<button type="submit">สมัครสมาชิก</button>
</form>
🔹 4. ฟอร์มเข้าสู่ระบบ (login.php
)
<?php
session_start();
include 'db.php';
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$email = $_POST['email'];
$password = $_POST['password'];
$stmt = $conn->prepare("SELECT id, name, password, points FROM members WHERE email = ?");
$stmt->bind_param("s", $email);
$stmt->execute();
$stmt->store_result();
$stmt->bind_result($id, $name, $hashed_password, $points);
$stmt->fetch();
if (password_verify($password, $hashed_password)) {
$_SESSION['member_id'] = $id;
$_SESSION['member_name'] = $name;
$_SESSION['points'] = $points;
echo "เข้าสู่ระบบสำเร็จ! <a href='dashboard.php'>ไปที่หน้าหลัก</a>";
} else {
echo "อีเมลหรือรหัสผ่านไม่ถูกต้อง";
}
$stmt->close();
}
?>
<form method="post">
อีเมล: <input type="email" name="email" required><br>
รหัสผ่าน: <input type="password" name="password" required><br>
<button type="submit">เข้าสู่ระบบ</button>
</form>
🔹 5. หน้าแดชบอร์ด (dashboard.php
)
<?php
session_start();
if (!isset($_SESSION['member_id'])) {
header("Location: login.php");
exit();
}
echo "ยินดีต้อนรับ " . $_SESSION['member_name'];
echo "<br>แต้มสะสม: " . $_SESSION['points'];
?>
<br><a href="earn_points.php">สะสมแต้ม</a>
<br><a href="redeem_points.php">แลกของรางวัล</a>
<br><a href="logout.php">ออกจากระบบ</a>
🔹 6. ฟังก์ชันสะสมแต้ม (earn_points.php
)
<?php
session_start();
include 'db.php';
if (!isset($_SESSION['member_id'])) {
header("Location: login.php");
exit();
}
$points_to_add = 10; // ให้แต้ม 10 แต้มต่อการซื้อ
$stmt = $conn->prepare("UPDATE members SET points = points + ? WHERE id = ?");
$stmt->bind_param("ii", $points_to_add, $_SESSION['member_id']);
$stmt->execute();
$stmt = $conn->prepare("INSERT INTO transactions (member_id, points, transaction_type) VALUES (?, ?, 'earn')");
$stmt->bind_param("ii", $_SESSION['member_id'], $points_to_add);
$stmt->execute();
$_SESSION['points'] += $points_to_add;
echo "สะสมแต้มสำเร็จ! แต้มปัจจุบัน: " . $_SESSION['points'];
?>
<a href="dashboard.php">กลับหน้าหลัก</a>
🔹 7. ฟังก์ชันแลกของรางวัล (redeem_points.php
)
<?php
session_start();
include 'db.php';
if (!isset($_SESSION['member_id'])) {
header("Location: login.php");
exit();
}
$points_to_redeem = 50; // ต้องใช้ 50 แต้มในการแลกของรางวัล
if ($_SESSION['points'] >= $points_to_redeem) {
$stmt = $conn->prepare("UPDATE members SET points = points - ? WHERE id = ?");
$stmt->bind_param("ii", $points_to_redeem, $_SESSION['member_id']);
$stmt->execute();
$stmt = $conn->prepare("INSERT INTO transactions (member_id, points, transaction_type) VALUES (?, ?, 'redeem')");
$stmt->bind_param("ii", $_SESSION['member_id'], $points_to_redeem);
$stmt->execute();
$_SESSION['points'] -= $points_to_redeem;
echo "แลกของรางวัลสำเร็จ! แต้มคงเหลือ: " . $_SESSION['points'];
} else {
echo "แต้มไม่เพียงพอ!";
}
?>
<a href="dashboard.php">กลับหน้าหลัก</a>
🔹 8. ออกจากระบบ (logout.php
)
<?php
session_start();
session_destroy();
header("Location: login.php");
exit();
?>
📌 สรุป:
- ระบบนี้ช่วยให้ลูกค้าสะสมแต้มและแลกของรางวัลได้
- ใช้
session
สำหรับการล็อกอินและจัดการข้อมูล - มีระบบสมัครสมาชิก, ล็อกอิน, สะสมแต้ม, และแลกแต้ม
- สามารถต่อยอดพัฒนาเพิ่มเติมได้ เช่น การเพิ่มฟีเจอร์แอดมิน