• สมัครสมาชิก: ลูกค้าสามารถลงทะเบียนเป็นสมาชิก
  • เข้าสู่ระบบ: สมาชิกสามารถล็อกอินเข้าสู่ระบบ
  • สะสมแต้ม: ระบบจะเพิ่มแต้มให้ลูกค้าตามยอดซื้อ
  • แลกของรางวัล: สมาชิกสามารถใช้แต้มสะสมแลกของรางวัล
  • แอดมินจัดการสมาชิก: ผู้ดูแลระบบสามารถจัดการข้อมูลสมาชิก

🔧 เทคโนโลยีที่ใช้

  • 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 สำหรับการล็อกอินและจัดการข้อมูล
  • มีระบบสมัครสมาชิก, ล็อกอิน, สะสมแต้ม, และแลกแต้ม
  • สามารถต่อยอดพัฒนาเพิ่มเติมได้ เช่น การเพิ่มฟีเจอร์แอดมิน



ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *