194
数据库技术
Database Technology
电子技术与软件工程
Electronic Technology & Software Engineering
随着学习的不断深入,在完成网页、数据库等课程的基础上,综合运用Web 表单和MySQL 数据库设计开发“许愿墙”阶段案例,将所学内容运用到实际案例中,达到学以致用的目的。1 需求分析1.1 实验背景
随着网络的普及,人们将许愿墙搬上网络,通过网页来管理愿望,这便是网络“许愿树”。1.2 功能描述
在本项目中,对于许愿墙的具体需求如下:(1)配置虚拟主机;(2)MySQL 保存数据;
(3)提供发布、展示、修改和删除功能;(4)提供红、绿、蓝、黄贴纸;(5)显示发布时间;(6)分页展示;
(7)密码保护可选项。1.3 开发环境
开发环境如下:
操作系统:Windows 7 旗舰版Apache :Apache2.4.41 PHP :PHP7.2.27
MySQL :mysql-8.0.192 案例实现2.1 前期准备2.1.1 创建虚拟机
虚拟主机又称共享主机,通过虚拟主机可在一台服务器上部署多个项目。首先,启用虚拟主机配置文件。打开Apache 配置文件f ,到f 所在的行,取消注释即可。
其次,配置虚拟主机文件。打开f 文件进行配置,其中域名如下:
ServerName www.wishingwall
最后,配置本地DNS 。打开C 盘下的系统文件hosts [2],添加:127.0.0.1 www.wishingwall 。重启Apache 服务确保配置生效,在主目录文件中编写测试文件,添加代码<?php echo "Hello World!";并通过浏览器访问www.wishingwall 进行测试,显示Hello World!表明配置成功。2.1.2 目录结构
项目的开发除必要的PHP 文件外,页面的前端展示还需要HTML 、CSS 、JavaScript 等[3]。本项目包括含目录common 、css 、js 、view ,基本文件function.php 、init.php 、save.php 、index.php ,自定义模板文件index.php 、add.html 、edit.html 、password.html 。其中的index.php 是项目主页,主要有展示、删除愿望及密码验证等功能,save.php 主要有添加、修改愿望等功能。2.1.3 连接数据库
连接数据库时使用MySQLi 扩展,打开PHP 配置文件php.
基于PHP+MySQL 许愿墙的设计与实现
王汝山  郭俊亮  张洪川
(铜仁职业技术学院  贵州省铜仁市  554300)
ini ,到mysqli 所在行并取消注释,重启Apache 服务即可生效。
在MySQL 中创建数据库,在init.php 文件中使用mysqli_connect()连接数据库。2.1.4 准备公共函数
将公共函数保存在function.php 文件中。input()函数根据$method 为get 或post 确定对应的超全局变量,根据$type 的值返回对应类型的数据,例如s 对应string ,d 对应int ,a 对应数组,若不存在,使用trigger_error()自定义错误。2.1.5 引入公共文件
为能够在index.php 和save.php 中使用定义在common 中的init.php 和function.php ,使用require 将其引入。2.2 数据库设计
在数据库wish 中创建数据表wall ,用于保存数据。表含有字段id 、name 、content 、time 、color 、
password ,数据类型分别为int 、varchar 、varchar 、int 、varchar 、varchar ,分别代表id 、姓名、内容、发布时间戳、颜、密码。其中发布时间time 使用整型表示,主要用于保存 Unix 时间戳。在命令行使用insert 插入几条测试数据。2.3 愿望展示
2.3.1 查询显示所有愿望
mysql下载到了c盘在首页index.php 中使用select 查询所有愿望贴纸,并使用mysqli_query()执行SQL 语句,使用mysqli_fetch_all()取出并显示所有愿望。2.3.2 日期格式化
由于表中保存的是Unix 时间戳,为让其以友好格式显示,在function.php 中添加format_date()函数,其实现思想是:计算当前时间戳与表中时间戳的差(秒数),该差值若超过1天则换算为天数;若不满一天且超过1小时则换算为小时数;若不满1小时且超过1分钟则换算为分钟数;若不满1分钟且超过1秒则返回秒数;若不满1秒则返回“1秒”。
其中$format 数组的键为对应单位时间内的秒数,例如1天为60*60*24秒,即86400秒。为以良好的格式显示贴纸,可将已取出的数据输出到指定的index.html 模板中。2.3.3 HTML 模板
打开index.html 文件,依次遍历取出的$data 数组并显示。对于name 和content 字段,由于是用户输入数据,使用htmlspecialchars()函数进行转义[4];time 字段是自动获取的系统时间,无需转义,使用format_date()和date()进行格式化输出;color 由单选按钮提供,也无需转义。2.4 分页查询2.4.1 原理
当表中的数据越来越多时,页面无法将其全部显示,为防止数据量过大,可使用分页功能。分页功能又分为“假分页”和“真分页”。所谓“假分页”是指一次性查询出全部数据,显示时依次取出部分数据。“真分页”是指查询时限定查询数量,将查询出的数据全部显示[5]。此处利用“真分页”减轻服务器负担。
摘 要:本文为了加强对Web 表单生成器的理解,在虚拟主机环境下利用PHP+MySQL 模拟实现许愿墙功能。利用数据库保存用户数据,提供发布、展示、修改、删除功能,提供不同颜的贴纸,以友好格式显示发布时间,实现分页功能,同时提供密码保护等可选功能。经部署和测试,该项目完全实现许愿墙相关功能。
关键词:PHP 语言;虚拟主机;许愿墙设计

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。