11.2 目录结构与通用模块
本节将介绍实例的目录结构与通用模块。
11.2.1 目录结构
可以从人民邮电出版社的网站下载本实例的源代码,实例的源代码保存在2shou目录下,包含下面的子目录。
• class:用于保存数据库访问类。
• admin:用于存储系统管理员的后台操作脚本,包括公告管理、用户信息管理、商品分类管理、商品管理等功能。
• images:用于存储网页中的图片文件。
• user:用于存储注册用户的前台操作脚本,包括查看公告、查看商品信息、发布商品信息、修改用户信息等。
• user\images:用于保存上传的商品照片。
其他PHP文件都保存在本实例的根目录下。在开发比较大的Web应用系统时,建议将不同功能的脚本文件存放在不同的目录下,这样可以使系统条理清晰,便于管理。
将2shou目录复制到EclipsePHP的工作空间目录(例如C:\workspace)下,在EclipsePHP Studio中创建工程2shou,工程目录为C:\workspace\2shou,即可在EclipsePHP Studio中查看和调试本实例的代码。
11.2.2 设计数据库访问类
为了使PHP程序条理更加清晰,本实例将对数据库表的访问操作封闭为一个类,每个类对应一个PHP文件,文件名与对应的数据库表名相同。例如,表Bulletin对应的类文件为Bulletin.php,代码如下:
<?PHP
//本类用于保存对表Bulletin的数据库访问操作
//表的每个字段对应类的一个成员变量
Class Bulletin
{
public $Id; // 记录编号
public $Title; // 公告标题
public $Content; // 公告内容
public $PostTime; // 发布日期
public $Poster; // 发布人
var $conn;
function __construct() {
//连接数据库,假定root用户的密码为pass
$this->conn = mysqli_connect("localhost", "root", "pass", "2shou");
mysqli_query($this->conn, "SET NAMES gbk");//设置编码格式,防止乱码
}
function __destruct() {
//关闭连接
mysqli_close($this->conn);
}
//获取公告信息
function GetBulletinInfo($bid) {
//设置查询的SELECT语句
$sql = "SELECT * FROM Bulletin WHERE Id='" . $bid . "'";
//打开记录集
$results = $this->conn->query($sql);
//读取公告数据
if($row = $results->fetch_row()) {
$this->Id = $bid;
$this->Title = $row[1];
$this->Content = $row[2];
$this->PostTime = $row[3];
$this->Poster = $row[4];
}
else {
$this->Id=0;
}
}
//获取所有公告信息,返回结果集
function GetBulletinlist() {
//设置查询的SELECT语句
$sql = "SELECT * FROM Bulletin ORDER BY PostTime DESC";
$results = $this->conn->query($sql);
return $results;
}
//获取所有公告信息,返回结果集
function GetRecentBulletinlist() {
//设置查询的SELECT语句
$sql = "SELECT * FROM Bulletin WHERE DateDiff(day, getdate(), Posttime)<=7";
$results = $this->conn->query($sql);
return $results;
}
//添加公告信息
function insert() {
$sql = "INSERT INTO Bulletin (Title, Content, PostTime, Poster) VALUES ('" . $this->Title . "','" . $this->Content . "','" . $this->PostTime . "','" . $this->Poster . "')";
//执行SQL语句
$this->conn->query($sql);
}
//修改公告信息
function update($bid) {
$sql ="UPDATE Bulletin SET Title='" . $this->Title . "', Content='" . $this->Content . "', PostTime='" . $this->PostTime . "', Poster='" . $this->Poster . "' WHERE Id=" . $bid;
//执行SQL语句
$this->conn->query($sql);
}
//批量删除公告信息
function delete($bid) {
$sql = "DELETE FROM Bulletin WHERE Id IN (" . $bid . ")";
//执行SQL语句
$this->conn->query($sql);
}
}
?>
在类Bulletin中为表Bulletin的每个字段定义了一个同名的成员变量,变量$conn是连接对象,用于连接数据库,执行SQL语句。
所有数据库操作类都保存在class目录下,请参照源代码和注释理解。下面介绍这些类中定义的成员函数。
1.Bulletin类
Bulletin类用来管理表Bulletin的数据库操作,类的成员函数如表11-5所示。
表11-5 Bulletin类的成员函数
2.GoodsType类
GoodsType类用来管理表GoodsType的数据库操作,类的成员函数如表11-6所示。
表11-6 GoodsType类的成员函数
3.Goods类
Goods类用来管理表Goods的数据库操作,类的成员函数如表11-7所示。
表11-7 Goods类的成员函数
4.Users类
Users类用来管理表Users的数据库操作,类的成员函数如表11-8所示。
表11-8 Users类的成员函数