เทคโนโลยี: PHP + MySQL

ฟีเจอร์ของระบบ

  1. 👗 ระบบเพิ่ม/จัดการชุดให้เช่า
  2. 🗓 ลูกค้าจองชุด พร้อมระบุวันรับและวันคืน
  3. 🏷 ออกใบจองชุด (PDF)
  4. 💰 ชำระเงินและออกใบเสร็จ (PDF)
  5. 🔄 คืนชุดและอัปเดตสถานะ
  6. 📊 แสดงประวัติการเช่าและการคืนชุด

🚀 1. สร้างฐานข้อมูลและตาราง (MySQL)

CREATE DATABASE rental_shop;
USE rental_shop;

-- ตารางชุดให้เช่า
CREATE TABLE dresses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    size VARCHAR(50),
    price DECIMAL(10,2) NOT NULL,
    status ENUM('available', 'rented', 'reserved') DEFAULT 'available'
);

-- ตารางลูกค้า
CREATE TABLE customers (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255) NOT NULL,
    phone VARCHAR(15) NOT NULL
);

-- ตารางการจองและการเช่า
CREATE TABLE rentals (
    id INT AUTO_INCREMENT PRIMARY KEY,
    customer_id INT,
    dress_id INT,
    rent_date DATE NOT NULL,
    return_date DATE NOT NULL,
    status ENUM('reserved', 'rented', 'returned') DEFAULT 'reserved',
    total_price DECIMAL(10,2) NOT NULL,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (customer_id) REFERENCES customers(id),
    FOREIGN KEY (dress_id) REFERENCES dresses(id)
);

2. เชื่อมต่อฐานข้อมูล (db.php)

<?php
$host = "localhost";
$user = "root";
$pass = "";
$dbname = "rental_shop";

$conn = new mysqli($host, $user, $pass, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
?>

เพิ่มชุดให้เช่า (add_dress.php)

<?php
include 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $name = $_POST['name'];
    $size = $_POST['size'];
    $price = $_POST['price'];

    $stmt = $conn->prepare("INSERT INTO dresses (name, size, price) VALUES (?, ?, ?)");
    $stmt->bind_param("ssd", $name, $size, $price);
    $stmt->execute();

    echo "เพิ่มชุดสำเร็จ!";
}
?>
<form method="post">
    ชื่อชุด: <input type="text" name="name" required><br>
    ขนาด: <input type="text" name="size"><br>
    ราคาเช่า: <input type="number" name="price" required><br>
    <button type="submit">เพิ่มชุด</button>
</form>
<a href="index.php">กลับ</a>

จองชุด (reserve.php)

<?php
include 'db.php';

// ดึงข้อมูลชุดที่ว่าง
$dresses = $conn->query("SELECT * FROM dresses WHERE status = 'available'");

// ดึงข้อมูลลูกค้า
$customers = $conn->query("SELECT * FROM customers");

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $customer_id = $_POST['customer_id'];
    $dress_id = $_POST['dress_id'];
    $rent_date = $_POST['rent_date'];
    $return_date = $_POST['return_date'];

    // ดึงราคาชุด
    $price_query = $conn->query("SELECT price FROM dresses WHERE id = $dress_id");
    $dress = $price_query->fetch_assoc();
    $price = $dress['price'];

    // คำนวณราคาเช่า
    $days = (strtotime($return_date) - strtotime($rent_date)) / (60 * 60 * 24);
    $total_price = $price * $days;

    // บันทึกการจอง
    $stmt = $conn->prepare("INSERT INTO rentals (customer_id, dress_id, rent_date, return_date, total_price) VALUES (?, ?, ?, ?, ?)");
    $stmt->bind_param("iissd", $customer_id, $dress_id, $rent_date, $return_date, $total_price);
    $stmt->execute();

    // อัปเดตสถานะชุด
    $conn->query("UPDATE dresses SET status='reserved' WHERE id=$dress_id");

    echo "จองชุดสำเร็จ!";
}
?>
<form method="post">
    ลูกค้า: <select name="customer_id">
        <?php while ($row = $customers->fetch_assoc()): ?>
            <option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?></option>
        <?php endwhile; ?>
    </select><br>
    ชุด: <select name="dress_id">
        <?php while ($row = $dresses->fetch_assoc()): ?>
            <option value="<?php echo $row['id']; ?>"><?php echo $row['name']; ?> (฿<?php echo $row['price']; ?>)</option>
        <?php endwhile; ?>
    </select><br>
    วันรับชุด: <input type="date" name="rent_date" required><br>
    วันคืนชุด: <input type="date" name="return_date" required><br>
    <button type="submit">จองชุด</button>
</form>
<a href="index.php">กลับ</a>

คืนชุด (return.php)

<?php
include 'db.php';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    $rental_id = $_POST['rental_id'];

    // คืนชุด
    $stmt = $conn->prepare("UPDATE rentals SET status='returned' WHERE id=?");
    $stmt->bind_param("i", $rental_id);
    $stmt->execute();

    // อัปเดตสถานะชุดเป็น available
    $conn->query("UPDATE dresses SET status='available' WHERE id=(SELECT dress_id FROM rentals WHERE id=$rental_id)");

    echo "คืนชุดเรียบร้อย!";
}

$rented = $conn->query("SELECT * FROM rentals WHERE status='rented'");
?>
<form method="post">
    คืนชุด: <select name="rental_id">
        <?php while ($row = $rented->fetch_assoc()): ?>
            <option value="<?php echo $row['id']; ?>">ลูกค้า <?php echo $row['customer_id']; ?> - ชุด <?php echo $row['dress_id']; ?></option>
        <?php endwhile; ?>
    </select><br>
    <button type="submit">คืนชุด</button>
</form>
<a href="index.php">กลับ</a>

6. ออกใบเสร็จ (receipt.php)

<?php
require 'vendor/autoload.php';
use Dompdf\Dompdf;

include 'db.php';
$id = $_GET['id'];

$rental = $conn->query("SELECT customers.name AS customer, dresses.name AS dress, rentals.total_price, rentals.rent_date, rentals.return_date FROM rentals
JOIN customers ON rentals.customer_id = customers.id
JOIN dresses ON rentals.dress_id = dresses.id
WHERE rentals.id = $id")->fetch_assoc();

$dompdf = new Dompdf();
$html = "
    <h1>ใบเสร็จ</h1>
    <p>ลูกค้า: {$rental['customer']}</p>
    <p>ชุดที่เช่า: {$rental['dress']}</p>
    <p>เช่าวันที่: {$rental['rent_date']}</p>
    <p>คืนวันที่: {$rental['return_date']}</p>
    <h2>รวม: ฿{$rental['total_price']}</h2>
";
$dompdf->loadHtml($html);
$dompdf->render();
$dompdf->stream("receipt_$id.pdf");
?>

ฟีเจอร์เพิ่มเติม

  • 🛒 ระบบจองออนไลน์
  • 📢 แจ้งเตือนลูกค้าผ่าน SMS หรือ LINE
  • 📊 สร้างรายงานรายเดือน
  • 💳 รองรับการชำระเงินออนไลน์
,


ใส่ความเห็น

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