在这个数字化时代,线上购物已成为人们生活的一部分。鲜花作为表达情感和祝福的佳品,其在线预订系统的需求也日益增长。本文将带你一步步用PHP构建一个功能完善的在线鲜花预订系统。
项目准备
首先,确保你的开发环境已安装以下工具:
- PHP 7.4或更高版本
- MySQL数据库
- Apache或Nginx服务器
- 文本编辑器(如VSCode)
1. 数据库设计
在MySQL中创建一个名为flower_shop
的数据库,并设计以下表结构:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100),
password VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE flowers (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
description TEXT,
price DECIMAL(10, 2),
image VARCHAR(255),
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE TABLE orders (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT,
flower_id INT,
quantity INT,
total_price DECIMAL(10, 2),
order_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
FOREIGN KEY (user_id) REFERENCES users(id),
FOREIGN KEY (flower_id) REFERENCES flowers(id)
);
2. 项目结构
创建以下文件和目录结构:
/flower_shop
/includes
config.php
db.php
/public
index.php
login.php
register.php
checkout.php
/admin
dashboard.php
/assets
/css
/js
/images
核心功能实现
1. 数据库连接
在includes/db.php
中配置数据库连接:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "flower_shop";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
?>
2. 用户注册与登录
注册功能
在public/register.php
中实现用户注册:
<?php
include '../includes/db.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$sql = "INSERT INTO users (name, email, password) VALUES ('$name', '$email', '$password')";
if ($conn->query($sql) === TRUE) {
header('Location: login.php');
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
?>
登录功能
在public/login.php
中实现用户登录:
<?php
include '../includes/db.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$email = $_POST['email'];
$password = $_POST['password'];
$sql = "SELECT * FROM users WHERE email='$email'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$user = $result->fetch_assoc();
if (password_verify($password, $user['password'])) {
session_start();
$_SESSION['user_id'] = $user['id'];
header('Location: index.php');
} else {
echo "Invalid password";
}
} else {
echo "User not found";
}
}
?>
3. 鲜花展示与预订
展示鲜花
在public/index.php
中展示鲜花列表:
<?php
include '../includes/db.php';
$sql = "SELECT * FROM flowers";
$result = $conn->query($sql);
?>
<!DOCTYPE html>
<html>
<head>
<title>Online Flower Shop</title>
</head>
<body>
<h1>Welcome to Our Flower Shop</h1>
<div class="flower-list">
<?php while($flower = $result->fetch_assoc()): ?>
<div class="flower">
<img src="<?php echo $flower['image']; ?>" alt="<?php echo $flower['name']; ?>">
<h2><?php echo $flower['name']; ?></h2>
<p><?php echo $flower['description']; ?></p>
<p>$<?php echo $flower['price']; ?></p>
<a href="checkout.php?flower_id=<?php echo $flower['id']; ?>">Buy Now</a>
</div>
<?php endwhile; ?>
</div>
</body>
</
评论(0)