php程序设计简明教程(DOC格式)-第18部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
1 新闻 xw xwdm;bt;sj;rydm;ztdm;nr xwdm rydm;ztdm
2 新闻状态 xwzt ztdm;ztmc ztdm
3 人员 ry rydm;zh;mm;xm;lxfs;qxdmc rydm qxdmc
4 权限 qx qxdm;qxmc qxdm
5 操作记录 czjl jldm;rydm;czjq_ip;czsj;xwdm;qxdm jldm rydm;xwdm;qxdm
n 第三步:确定数据库名称
xwxt (新闻系统)
n 第四步:确定用户和权限方案
用户和权限设计
序 用户帐号 用户密码 登录主 用户权限 说明
号 机
1 root 自行设定 自行设 全局全部权限 超级用户
定
2 user_xwxt user_xwxt localhost 仅对数据库 xwxt 内所有表具有 SELECT , 受限用户,程序访
% UPDATE ,DELETE ,INSERT 权限 问数据库用
localhost :服务器所在机器。
% :除localhost 以外的任何一台机器。
n 第五步:实现——在具体的DBMS 中实现上面四步的设计方案
选定的DBMS :我们选择MySQL 为实现上述物理方案设计的DBMS 。
以超级用户身份,通过phpMyAdmin ,快速实现上述四步设定的方案。
具体步骤:自上而下
第一步:创建数据库xwxt
第二步:依次创建5 个表,完成每个表中的字段设计,主键、外键设计。
注意:凡是外键,不必设计成自动编号型(auto_increment )。
第三步:创建用户user_xwxt ,设定其密码为:user_xwxt ,设定其权限为:对数据库xwxt 内所有表具有全部权限,
无全局权限。关于超级用户root ,若已存在,则不必创建。
这三步的实现,用MySQL 的脚本命令描述如下:
CREATE DATABASE ‘xwxt‘;
USE ‘xwxt‘;
CREATE TABLE ‘xw‘ (
PHP 讲义 第 83 页 共 90 页
…………………………………………………………Page 84……………………………………………………………
‘xwdm‘ INT( 9 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
‘bt‘ VARCHAR( 50 ) NOT NULL ;
‘sj‘ DATETIME NOT NULL ;
‘rydm‘ TINYINT( 2 ) UNSIGNED NOT NULL ;
‘ztdm‘ TINYINT( 1 ) UNSIGNED NOT NULL ;
‘nr‘ TEXT NOT NULL ;
PRIMARY KEY ( ‘xwdm‘ )
);
CREATE TABLE ‘xwzt‘ (
‘ztdm‘ TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
‘ztmc‘ VARCHAR( 8 ) NOT NULL ;
PRIMARY KEY ( ‘ztdm‘ )
);
CREATE TABLE ‘ry‘ (
‘rydm‘ TINYINT( 2 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
‘zh‘ VARCHAR( 16 ) NOT NULL ;
‘mm‘ VARCHAR( 16 ) NOT NULL ;
‘xm‘ VARCHAR( 8 ) NOT NULL ;
‘lxfs‘ VARCHAR( 20 ) NOT NULL ;
‘qxdmc‘ VARCHAR( 7) NOT NULL ;
PRIMARY KEY ( ‘rydm‘ )
);
CREATE TABLE ‘qx‘ (
‘qxdm‘ TINYINT( 1 ) UNSIGNED NOT NULL AUTO_INCREMENT ;
‘qxmc‘ VARCHAR( 8 ) NOT NULL ;
PRIMARY KEY ( ‘qxdm‘ )
);
CREATE TABLE ‘czjl‘ (
‘jldm‘ INT( 9) UNSIGNED NOT NULL AUTO_INCREMENT ;
‘rydm‘ TINYINT( 2 ) UNSIGNED NOT NULL ;
‘czjq_ip‘ VARCHAR( 15 ) NOT NULL ;
‘czsj‘ DATETIME NOT NULL ;
‘xwdm‘ INT( 9 ) UNSIGNED NOT NULL ;
‘qxdm‘ TINYINT(1 ) UNSIGNED NOT NULL ;
PRIMARY KEY ( ‘jldm‘ )
);
GRANT SELECT ; INSERT ; UPDATE ; DELETE ON ‘xwxt‘。 * TO 〃user_xwxt〃@〃%〃 IDENTIFIED BY
〃user_xwxt〃;
FLUSH PRIVILEGES ;
GRANT SELECT ; INSERT ; UPDATE ; DELETE ON ‘xwxt‘。 * TO 〃user_xwxt〃@〃localhost〃 IDENTIFIED BY
〃user_xwxt〃;
FLUSH PRIVILEGES ;
将这些脚本命令存成。脚本文件(默认是。sql 文件,也可以是。txt 文件),使用客户端工具mysql。exe 或phpMyAdmin
执行脚本文件,可在MySQL 中迅速完成物理设计的实现。
(2 )功能的分析与设计
1)功能模块设计
确定功能模块的程序组成,及模块间调用关系。
序号 模块编号 功能模块名称 程序名
PHP 讲义 第 84 页 共 90 页
…………………………………………………………Page 85……………………………………………………………
1 q1 最新新闻 q1。php 浏览最新新闻标题,前台首页
2 q2 所有新闻 q2。php 浏览所有新闻标题
3 q3 查看新闻 q3。php 浏览某条新闻全文,是q1 和q2 的公共调用模块
4 h1 登录后台 h1。php 登录信息输入界面→h1_chuli。php 登录信息验证程序
5 h 后台首页 h。php ,链接h2,h3,h4,h5,h6,
6 h2 增加人员 h2。php 新人信息输入界面→h2_chuli。php 新人信息处理程序
7 h3 修改人员 h3。php 人员修改信息输入界面→h3_chuli。php 人员修改处理程序
8 h4 添加稿件 h4。php 添加稿件界面→h4_chuli。php 添加稿件处理程序
9 h5 修改稿件 h5。php 修改稿件界面→h5_chuli。php 修改稿件处理程序
10 h6 审核稿件 h6。php 审核稿件界面→h6_chuli。php 审核稿件处理程序
11 h7 业务查询 h8。php 查询信息录入界面→h8_chuli。php 查询程序
12 h8 退出后台 h9。php 销毁所有当前操作人员信息,安全退出后台,回到前台
13 h9 业务记录 h9。php 业务记录,是 h1_chuli。php ,h2_chuli。php ,h3_chuli。php ,
h4_chuli。php,h5_chuli。php,h6_chuli。php,h7_chuli。php,h8。php 的公
共调用模块。该模块无界面。
14 g1 连接服务器 g1。php
15 g2 关闭连接 g2。php
2 )模块间关系图示
3)文件部署
将程序文件、图片文件、SQL 脚本文件等,建立各自的文件夹,分门别类地存放于Web 发布文档目录下。
文件夹的名称按照见名知义的原则命名。
文件夹命名的一般做法:
PHP 讲义 第 85 页 共 90 页
…………………………………………………………Page 86……………………………………………………………
文件夹 用途
backup 备份资料
image 存放网页、程序引用的图片文件
inc 存放公用程序、自定义函数等
inc/js 存放公用JavaScript 程序脚本文件
script 存放程序脚本文件
script/q 存放所有前台程序
script/h 存放所有后台程序
设计结果如图所示:(abc 为发布文档根目录)
4 )程序设计
根据程序功能设计的要求,以及程序之间的调用关系,对程序进行具体设计。
n g1。php 连接服务器
本程序供其它程序调用,无界面。
本程序算法比较简单,直接用编码表示为:
n g2。php 关闭与服务器的连接
本程序供其它程序调用,无界面。
本程序算法比较简单,直接用编码表示为:
n q1。php 最新新闻:
①界面设计
PHP 讲义 第 86 页 共 90 页
…………………………………………………………Page 87……………………………………………………………
其中:
标题链接指向q3。php?xwdm=当前标题对应的新闻代码xwdm 值,打开链接的窗口是新窗口
“全部新闻”链接到q2。php
“登录后台”链接到h1。php
②动态构造新闻标题列表的算法
调用g1。php,连接数据库
查询已发布的10 条新闻的xwdm ,bt,sj,按sj 倒序排序
将查询结果装入数组
调用g2。php,关闭连接
遍历数组,以表格形式输出标题
标题链接指向q3。php?xwdm=数组当前行存有xwdm 的元素的值,打开链接的窗口是新窗口
n q2 所有新闻:
①界面设计
标题链接指向q3。php?xwdm=当前标题对应的新闻代码xwdm 值,打开链接的窗口是新窗口
“最新新闻”链接到q1。php
首页,上一页,下一页,尾页——的链接由程序根据当前页位置决定
②算法表述
约定:
用变量page 存储当前页码:page 为空则令page=0,表示当前为第1 页;page=n 则表示当前为第(n+1)页。
用变量pagesize 存储每页显示的记录数:本例中规定pagesize=25。
page 为空则令page=0
调用g1。php,连接数据库
取得属于当前页中的新闻代码xwdm ,标题bt:
查询已发布新闻的 xwdm ,bt,sj,按 sj 倒序排序,从结果集中的第page*pagesize 行开始取,最多取
pagesize 行。
PHP 讲义 第 87 页 共 90 页
…………………………………………………………Page 88……………………………………………………………
将取得的这些行中的xwdm ,bt 装入数组xw 。
取得已发布的新闻记录总数total_records 。
调用g2。php,关闭连接
计算总页数page_count:
若total_records==0,则page_count 为0;
若total_records0,则page_count= 向上取整(total_records/pagesize);
若total_records%pagesize==0,则page_count= total_records/pagesize。
构造导航条信息pageinfo (界面中倒数第二行):
pageinfo=”共”。 total_records。”条新闻 第”。(page+1)。”页 共”。page_count。”页”
下面确定:“首页”,“上一页”,“下一页”,“尾页”的链接的情况
若有链接,链接到什么地方,同时传递什么样的参数及参数值:
链接到本页即PHP_SELF,同时传递参数page,其值根据所链接的文字而定:
参数page=0,当链接文字为“首页”(也可省略传递参数)
参数page=page…1,当链接文字为“上一页”
参数page=page+1,当链接文字为“下一页”
参数page=page_count…1,当链接文字为“尾页”
下面确定何时应具有链接:
当page==0 时,当前页是首页,故“首页”,“上一页”不应具有链接
当page》0 时,当前页不是首页,故“首页”,“上一页”应具有链接
当page