เทคโนโลยี: PHP + MySQL
ฟีเจอร์ของระบบ
- 👗 ระบบเพิ่ม/จัดการชุดให้เช่า
- 🗓 ลูกค้าจองชุด พร้อมระบุวันรับและวันคืน
- 🏷 ออกใบจองชุด (PDF)
- 💰 ชำระเงินและออกใบเสร็จ (PDF)
- 🔄 คืนชุดและอัปเดตสถานะ
- 📊 แสดงประวัติการเช่าและการคืนชุด
🚀 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
- 📊 สร้างรายงานรายเดือน
- 💳 รองรับการชำระเงินออนไลน์