- PHP项目开发全程实录(第4版)
- 明日科技编著
- 2449字
- 2021-02-03 09:33:30
1.12 付费信息管理模块设计

视频讲解
1.12.1 付费信息管理模块概述
付费信息管理模块主要包括付费信息列表、付费信息审核和付费信息删除等3个功能,其框架如图1.39所示。

图1.39 付费信息管理模块的框架图
1.12.2 付费信息管理模块技术分析
付费信息管理页面在实现信息审核及删除的功能时应用到了UPDATE更新语句和DELETE删除语句。下面对这两个语句进行详细的讲解。
1.UPDATE语句
UPDATE语句用来改变单行上的一列或多列的值,或者改变单个表中选定的一些行上的多个列值。UPDATE语句的语法如下:
UPDATE<table_name | view_name> SET <column_name>=<expression> […,<last column_name>=<last expression>] [WHERE<search_condition>]
UPDATE语句的参数说明如表1.14所示。
表1.14 UPDATE语句的参数说明

注意
一定要确保不要忽略WHERE子句,除非想要更新表中的所有行。
下面应用UPDATE语句将指定职员的工资进行调整,例如,将“小璇”的基本工资由2600元修改为3000元。其SQL语句如下:
update tab_laborage set jbgz=3000 where name='小璇'
2.DELETE语句
DELETE语句实现删除数据记录。DELETE语句的语法如下:
DELETE FROM <table_name > [WHERE<search-condition>]
DELETE语句的参数说明如表1.15所示。
表1.15 DELETE语句的参数说明

下面应用DELETE语句删除“职员姓名=小璇”的员工基本信息。其SQL语句如下:
DELETE tab_staffer WHERE ygname='小璇'
1.12.3 付费信息显示的实现过程
付费信息显示页面使用的数据表:tb_leaguerinfo
管理员在后台功能导航区的“付费信息显示方式”栏中选择相应的信息类别,然后按“已付费”、“未付费”或“全部”中的任意一种状态对付费信息进行管理。例如,在“信息类别”下拉列表框中选择“公寓信息”,在“付费状态”选项组中选中“未付费”单选按钮,单击“检索”按钮提交表单,程序将按指定条件显示出符合条件的所有信息,运行结果如图1.40所示。

图1.40 付费信息显示页面的运行结果
本系统提供了一组单选按钮组成的“付费状态”选项组,分为已付费、未付费和全部3个选项。选中“未付费”单选按钮,则传递的值为0;选中“已付费”单选按钮,则传递的值为1;选中“全部”单选按钮,则传递的值为all。还提供了一个下拉列表框,供用户选择信息类别。将这些单选按钮与下拉列表框都在一个表单中实现,这样,当单击“检索”按钮提交表单后,选择的状态会通过表单进行传递。其表单代码如下:
例程15 代码位置:资源包\TM\01\cityinfo\admin\left.php

代码贴士
❶target = "mainFrame":指定链接的目标窗口,mainFrame为内容显示区的框架名称。另外,target有4个选项值,分别介绍如下。
_blank:指定将链接的目标文件加载到未命名的新浏览器窗口中。
_parent:指定将链接的目标文件加载到包含链接的父框架页或窗口中,如果包含链接的框不是嵌套的,则链接的目标文件加载到整个浏览器窗口中。
_self:指定将链接的目标文件加载到链接所在的同一框架或窗口中。
_top:指定将链接的目标文件加载到整个浏览器窗口中,并由此删除所有框架。
❷<fieldset><legend>…</legend></fieldset>标签:在字符集包含的文本和其他元素外面绘制一个方框。该元素是块元素,必须成对出现。需要注意的是,fieldset必须用在form表单中,一个表单可以有多个<fieldset>…</fieldset>,每对<fieldset>…</fieldset>为一组,每组的内容描述使用<legend>设置标题名称。
提交表单信息到find_fufei.php页,程序将按管理员选择的指定条件显示出符合条件的所有信息。如果管理员选中“全部”单选按钮,那么系统的代码如下:
例程16 代码位置:资源包\TM\01\cityinfo\admin\find_fufei.php

说明
限于篇幅,上面代码中省略了分页显示的代码部分,具体参见本书附赠资源包。
1.12.4 付费信息审核的实现过程
付费信息审核使用的数据表:tb_leaguerinfo
经过审核的信息说明该信息为已付款信息。如果企业或个人用户已登录供求信息但未直接付费,想要后期付款,那么管理员进行审核时,信息不能通过,要求必须进行付款,经过审核的信息才能在前台进行显示。“审核”超链接的代码如下:
例程17 代码位置:资源包\TM\01\cityinfo\admin\find_fufei.php
<a href="statefu_ok.php?id=<?php echo $info['id'];?>&type=<?php echo $type;?>&state=<?php echo $state;?>"> 审核</a>
管理员单击对应主题信息后面的“审核”超链接,将信息所对应的id值、信息类型及审核状态传递到数据处理页statefu_ok.php,用UPDATE语句将付费状态设置为1,说明该信息已经付款。数据处理页的代码如下:
例程18 代码位置:资源包\TM\01\cityinfo\admin\statefu_ok.php

代码贴士
❶update…set:用来修改指定表中的数据。UPDATE语句的使用方法参见1.12.2节。
❷type=$type&state=$state:将变量type与state的值重新传到find_fufei.php页,目的是为了使find_fufei.php页中的$type和$state变量重新获得信息类型和付费状态值(管理员选择的检索条件),从而返回到付费信息管理页,并更新数据信息。如果数据处理页不对这两个变量进行传值,那么在返回到付费信息管理页find_fufei.php时将会因为检索不到变量的值而出错。
1.12.5 付费信息删除的实现过程
付费信息删除使用的数据表:tb_leaguerinfo
付费信息管理页中“删除”超链接的代码如下:
例程19 代码位置:资源包\TM\01\cityinfo\admin\find_fufei.php
<a href="fudel_ok.php?id=<?php echo $info['id'];?>&type=<?php echo $type;?>&state=<?php echo $state;?>"> 删除</a>
管理员单击对应主题信息后面的“删除”超链接,将信息所对应的id值、信息类型及审核状态传递到数据处理页fudel_ok.php,用DELETE语句将id指定的供求信息删除。数据处理页的代码如下:
例程20 代码位置:资源包\TM\01\cityinfo\admin\fudel_ok.php

注意
在删除数据后,仍需要将变量$type和$state的值重新传递给付费信息管理页find_fufei.php,目的是返回到付费信息管理页,查看执行删除操作后的状态。
1.12.6 单元测试
在开发完管理员模块后,对该模块进行单元测试。当管理员对付费供求信息进行审核后,审核操作成功,但却弹出如图1.41所示的错误提示。

图1.41 审核付费供求信息的错误提示
在图1.41中的错误提示中可以看出,在付费信息管理页的第8行、第9行、第16行和第37行出现问题。下面看一下出现问题的这几行代码:

从代码中可以看出,SQL语句的书写并没有错误。根据图1.41所示页面的结果,当前信息类别为空,则说明管理员选择的信息类别没有传过来值。由此可以看出,这是由于在执行审核后页面重新刷新了,因此检索不到管理员选定的查询条件值。
“审核”超链接的源代码如下:
例程21 代码位置:资源包\TM\01\cityinfo\admin\find_fufei.php
<a href="statefu_ok.php?id=<?php echo $info['id'];?>">审核</a>
审核处理页的源代码如下:
例程22 代码位置:资源包\TM\01\cityinfo\admin\statefu_ok.php

解决该问题的方法需要在“审核”超链接传值时将管理员选定的“信息类型”和“审核状态”的变量值一同传递到数据处理页,当审核操作完成后,再将“信息类型”和“审核状态”的变量值重新传递给付费信息管理页find_fufei.php即可。
“审核”超链接修改后的代码(加粗的代码部分为修改的代码部分)如下:
例程23 代码位置:资源包\TM\01\cityinfo\admin\find_fufei.php
<a href="statefu_ok.php?id=<?php echo $info['id'];?>&type=<?php echo $type;?>&state=<?php echo $state;?>"> 审核</a>
技巧
在传递多个变量时,变量之间用“&”符号分隔。
管理员单击对应主题信息后面的“审核”超链接,将信息所对应的id值、信息类型及审核状态传递到数据处理页statefu_ok.php。在执行完更新操作后,需要将“信息类型”和“审核状态”的变量值重新传递到付费信息管理页find_fufei.php,加粗的代码部分为修改的代码部分。
例程24 代码位置:资源包\TM\01\cityinfo\admin\statefu_ok.php
