文章教程

3.3动态服务器行为

9/17/2020 9:45:44 PM 人评论 次浏览

3.3 动态服务器行为

在Dreamweaver中可以利用软件自带的动态服务器行为快速建立一些基本动态功能,本小节就介绍在Dreamweaver中与检查数据库记录相关的“服务器行为”,主要包括了记录集、插入记录、更新记录、重复区域、显示区域和记录集分页等常用的动态服务器行为。

3.3.1 创建新记录集

在每个需要查看数据库记录的页面中皆须为其建立一个“记录集(查询)”,从而可以让Dreamweaver知道,目前这个网页中所需要的是数据库中的哪些数据。即便需要的内容一样,在不同网页也需要单独建立。同一个数据库只需建立一次MySQL连接,但我们可为同一个MySQL数据库连接建立多个“记录集”,配合筛选的功能达到某个记录集只包含数据库中符合某些条件的记录。

打开index.php文件后,然后打开菜单栏上的“应用程序”→“绑定”面板,选择“记录集(查询)”便可以建立记录集。“绑定”面板中的“记录集(查询)”与“服务器行为”面板中“记录集”是相同的,如图3-26所示。

alt

图3-26 选择“记录集”命令

按说明设置各项字段(如图3-27所示),然后单击“测试”按钮,Dreamweaver会显示目前设置所返回的记录集内所有记录,字段的功能说明如表3-4所示。

表3-4 字段与功能说明

alt

alt

图3-27 设置记录集

记录集使用到的就是SELECT语句,因为查询出来的结果可能会有很多条,所以称为记录集(合),而“筛选”部分则对应WHERE子句。

单击“测试”按钮后,可以看到返回的记录。因为没有做任何筛选的处理,所以会返回完整的所有记录。

alt

图3-28 单击“测试”按钮浏览记录集

可以单击“高级”按钮查看该SQL语句。可以看到,Dreamweaver提供了一个基本的图形界面,实际上它会生成相应的程序代码。在“高级”窗口中可以看到相应的SQL语句,另外还提供加入变量、修改SQL语句的功能,用以满足使用简单图形界面设置无法满足的情况,如图3-29所示。

alt

图3-29 “高级”记录集窗口

在记录集建立完毕后,我们可以在“应用程序”→“绑定”面板中查看到目前页面里的所有记录集,以及各记录集中的字段,双击记录集可以重新打开图3-30所示的设置窗口。

alt

图3-30 绑定的记录集效果

建立记录集与直接写SELECT语句是相同的,将页面切换到“代码”视图,如图3-31所示。其中第1行的require_once函数是用来引入文件的,即前面介绍过的webconn.php。在Dreamweaver中,若是我们已经定义好数据库连接,那么在其他建立记录集、更新记录、插入记录、删除记录的页面中这个连接设置文件就会在页面的最前面被引入(这就是为什么在同一个站点中只需要定义一次MySQL数据库连接),因为该文件中所包括的与数据库连接相关的设置需要被使用。

alt

图3-31 自动生成的代码

其程序具体分析如下:


(1)第34行引用了webconn.php内的设置(变量$datebase_webconn与$webconn被定义在这个文件中)来选择数据库(mysql_select_db()),随后的mysql_query()所作用的都是此数据库。

(2)第35行定义了查询数据库的SQL语句。

(3)第36行使用35行所定义的SQL语句对数据库执行查询操作(mysql_query()),此时返回结果是资源标识符,还不能被使用。

(4)第37行将前面查询的结果以关系型数组的形式(mysql_fetch_assoc())传至变量$row_rsdb,然后就可以使用$row_记录集名称['字段名称']来取得记录集字段值。

(5)第38列取得查询结果的记录条数(mysql_num_rows())并赋给变量$totalRows_rsdb。

(6)最后mysql_free_result()释放查询结果与占用的内存资源。


上面是Dreamweaver连接数据库并执行查询的标准步骤,在mysql_query($query_rsdb,$webconn) or die(mysql_error())的部分,若or前面语句出现错误或失败,就执行or后面的程序。所以若数据库查询失败的时候就会产生错误信息,并终止程序的运行。

在一般PHP程序中,典型的连接与查询程序类似下面的例子。

alt

可能会觉得Dreamweaver产生出来的程序代码比较复杂,这是因为Dreamweaver建立的记录集需要搭配很多服务器行为来使用。

3.3.2 显示记录功能

要将记录集内的记录(即数据库中的数据)直接显示到网页上,实现的步骤如下:


01 在“文件”面板中打开index.php,在网页中制作一个如图3-32所示的2×4表格,然后在“应用程序”→“绑定”面板上选择所需的字段并拖动到表格中。

alt

图3-32 绑定字段

在使用鼠标拖动字段至页面上放开后,会出现{rsdb.name}的字样,其中rsdb为记录集名称,name为字段名称。将序号、姓名、年龄、成绩4个字段分别拖至相应的单元格后,单击alt按钮。

视图所呈现的效果与使用浏览器打开网页一样,原本仅显示{记录集名称.字段名称}的部分将会显示出记录集内的记录,如图3-33所示。

alt

图3-33 实时视图效果

再单击一次alt按钮,将页面切换到alt视图。我们来看{记录集名称.字段名称}的部分的代码。可以看到,程序代码中使用echo来输出字段值,如图3-34所示。

alt

图3-34 代码视图效果

3.3.3 重复区域功能

现在只能看到记录集中的第1条记录,那后面的记录怎么显示出来呢?Dreamweaver提供了“重复区域”及“记录集分页”的功能,只需要鼠标拖动就可以实现这个功能。

选取需要重复的部分,即表格中的第2行(如图3-35所示),然后在“服务器行为”面板中单击“+”按钮,从弹出的下拉菜单中选择“重复区域”如图3-36所示。

alt

图3-35 选取表格第2行

alt

图3-36 选择重复区域命令

之所以要确认选取的标签为<tr>,是因为重复区域会使用do…while循环包围所作用的范围。而需要重复的仅是第2行的表格,在HTML中表格的行是使用<tr >标签。确认选取的标签正确,执行时才不会发生错误。

此时会弹出一个窗口(如图3-37所示),要求我们选择要重复记录的记录集,以及需要重复几条记录或显示全部记录。同样地选择alt,这时就可以看到原来只有两行的表格已经增长到6行(如图3-38所示),而记录集内的前5条记录都显示在页面上了。

alt

图3-37 设置重复区域

alt

图3-38 实时预览效果

所有页面上的“服务器行为”都会被列在“窗口”→“服务器行为”面板的清单中,在本例中我们选择重复5条记录。若想要修改服务器行为的设置,则可以通过双击该服务器行为来进行。

alt

图3-39 服务器行为面板

将页面切换到“代码”视图,在套用了“重复区域”服务器行为后,在程序代码当中的变化便是这行单元格的上下被“do…while”循环包围了,而重复的条件为第84行语句(如图3-40所示),用这样的循环可以达到将记录集中的记录全部输出才停止循环。

alt

图3-40 循环语句

在建立记录集时我们就知道有10条记录都在记录集中,可是在这里怎么显示了5条记录呢?回头来检查下代码,如图3-41所示。

alt

图3-41 代码窗口

发现数据库查询语句被改写过,在第42行变量$query_rsdb所用的SQL语句是以前介绍过的,但在第43行该变量会放到字符串的第一个%s位置处。

alt

由上述代码可知,%s表示字符串,后面两个%d表示数值,所要代入的值是$startRow_rsdb与$maxRows_rsdb。$maxRows_rsdb这个变量值与我们前面在重复区域所选择的重复5条记录是同步的,可以看到第34行定义了这个变量的值。

alt

可以知道,Dreamweaver使用了一堆变量来记录在图形界面中所选择和设置的值,然后使用LIMIT子句来做到一次显示指定条数的记录。

3.3.4 记录集的分页

上一节已经可以浏览记录集中第1~5条记录了,那剩下的记录如何显示出来呢?下面就介绍记录集分页功能的实现方法。


01 在页面下方加上1×4的表格,接着在单元格中分别输入[第一页]、[上一页]、[下一页]、[最后一页]的文字,使用鼠标选取[第一页],然后在“服务器行为”面板单击“+”按钮,从弹出的下拉菜单中选择“记录集分页”→“移至第一页”命令,如图3-42所示。

alt

图3-42 设置为“移至第一页”

02 在弹出的对话框中选择记录集,以及确认链接所选的范围,如图3-43所示。

alt

图3-43 设置“移至第一页”对话框

03 分别为[上一页]、[下一页]、[最后一页]套用“移至上一页”、“移至下一页”、“移至最后一页”的服务器行为。然后按键盘上的F12键,在浏览器中检查输出结果,如图3-44所示。在页面中测试刚刚完成的导航条,可以看到网址后面加了pageNum_dbrs与totalRows_dbrs两个URL变量,它们被用来在分页浏览时与重复区域服务器行为相搭配。

alt

图3-44 分页浏览效果

也可以在Dreamweaver菜单中执行“插入”→“数据对象”→“记录集分页”→“记录集导航条”命令来快速地插入本范例中所建立的记录集导航条。

3.3.5 显示记录计数

在页面上方输入“共有*笔记录,目前查看第*笔至第*笔”,建立起记录集导航条,以便让用户了解有多少页记录,当前正在浏览第几页。


01 将插入点置于“共有”和“笔记录”之间,选择“服务器行为”面板,单击“+”按钮,从弹出的下拉菜单中选择“显示记录计数”→“显示总记录数”选项,然后同样要选择记录集,如图3-45所示。

alt

图3-45 显示总记录数

02 按同样的方式将插入点置于相应位置,按顺序加入“显示起始记录编号”及“显示结束记录编号”,完成后页面如图3-46所示。

alt

图3-46 加入统计记录

完成后,当我们浏览该网页时便会出现当前共有几笔记录,目前查看的是第几笔到第几笔的提示文字,如图3-47所示。

alt

图3-47 建立导航条效果

也可以在Dreamweaver菜单中执行“插入”→“数据对象”→“显示记录计数”→“记录集导航状态”命令来快速地插入本例中所建立记录集导航条。

3.3.6 显示区域功能

如果打开的是首页,那么“第一页”与“上一页”的文字链接是没有意义的。下面我们就来处理这个问题,当不是第一页时,显示“[第一页]”与“[上一页]”。当不是最后一页时,显示“[下一页]”与“[最后一页]”。


实现的步骤如下:


01 选择[第一页],在“服务器行为”面板中单击“+”按钮,从弹出的下拉菜单中选择“显示区域”→“如果不是第一页则显示”选项(如图3-48所示),打开“如果不是第一页则显示”对话框,选择“记录集”rsdb,再单击“确定”按钮,然后为[上一页]也做同样的设置,完成设置。

alt

图3-48 选择“如果不是第一页则显示”选项

02 选取[下一页]链接文字,在“服务器行为”面板中单击“+”按钮,从弹出的下拉菜单中选择“显示区域”→“如果不是最后一页则显示”选项,如图3-49所示。然后为[最后页]也做同样的设置,选择的命令为“如果是最后一页则显示”命令。

alt

图3-49 设置“如果不是最后一页则显示”

03 完成后在每个套用“显示区域”服务器行为的部分会出现“如果符合此条件则显示”的提示文字,如图3-50所示。

alt

图3-50 套用显示区域效果

04 最后按下F12键在浏览器中检查输出结果,如图3-51所示。

alt

图3-51 设置显示区域后的效果


注意

也可以在Dreamweaver菜单中执行“插入”→“数据对象”→“记录集(Recordset)分页”→“记录集导航条”命令来快速地插入一个分页区域。


3.3.7 显示详细信息

通常一个动态网站的数据量是比较大的,在很多时候并不会一开始就将数据库所有字段、记录都显示出来。例如一个新闻系统,在首页只会显示新闻的日期与标题,更详细的新闻内容需要选择标题后进入到另一个页面才能显示。假设显示新闻标题的页面是index.php,而显示详细新闻内容的网页名称为detail.php。当在index.php中单击标题的链接后,此时该超链接会带着一个参数到detail.php,网址类似于detail.php?ID=1。多出的ID=1是一个变量名为ID,值为1的URL参数。当detail.php收到ID=1的URL参数后,便利用这个URL参数在建立记录集时筛选所指定的新闻记录,并将记录详细信息显示在网页上。这样就构成了一个简单的新闻系统架构。要筛选指定的记录可以在SQL中使用WHERE子句,在Dreamweaver中有相应的图形界面可以方便使用。下面我们来看看Dreamweaver是如何运用传送与接收URL参数来筛选出指定的记录。


01 使用Dreamweaver创建一个空白detail.php页面并保存。index.php中选择要用来连接到详细信息页面的部分(其实就是选择要在哪里建立超级链接),在本例中选择序号,即选择{rsdb.ID}动态文字。

alt

图3-52 选中动态文字{rsdb.ID}

02 在下面的“属性”面板中找到建立链接的部分,并单击“浏览文件”图标alt,如图3-53所示。

alt

图3-53 建立链接设置

03 在弹出的对话框中选择用来显示详细记录信息的页面detail.php,如图3-54所示。

alt

图3-54 设置链接的文件

04 如果只是这样,那只会是单纯的超级链接并没有附带URL参数,因此要单击“参数”按钮。设置超级链接要附带的URL参数的名称与值。本例将参数名称命名为ID,在设置值的时候单击图3-55中鼠标所指向的图标。

alt

图3-55 设置参数

05 选择URL参数ID所要带的值,因为我们要的是记录集ID字段的值,所以选择ID字段(如图3-56所示),然后单击“确定”按钮。

alt

图3-56 选择ID字段

除了记录集字段外,只要是在“绑定”面板中所建立的,包括表单变量、URL变量、Session变量和Cookie变量等都可以在这里被选择。


06 可以看到超级链接的地址变成detail.php?ID=<?php echo $row_ rsdb['ID']; ?>,如图3-57所示。

alt

图3-57 完成后的链接地址

07 设置完成后,可以在浏览器打开index页面。在IE底下的状态栏上可以看到每一条记录的链接都带着URL参数ID,其值是每条记录的ID,如图3-58所示。

alt

图3-58 单击链接的属性显示

前面已经完成index.php页面的制作,下面来设计接收URL参数的detail.php页面,看看如何用收到的参数来筛选指定的记录。


01 打开detail.php页面后选择“绑定”面板,单击“+”按钮,从弹出的下拉菜单中选择“记录集(查询)”选项,如图3-59所示。

alt

图3-59 选择记录集(查询)

02 在打开的“记录集”对话框中进行如下设置:


● 在“名称”文本框中输入rsdetail作为该“记录集”的名称。

● 从“连接”下拉列表框中选择webconn选项连接对象。

● 从“表格”下拉列表框中选择使用的数据库表对象为webprice。

● 在“列”选项区选中“全部”单选按钮。

● 在“筛选”栏中设置记录集过滤的条件为ID=URL参数/ID。


完成后的设置如图3-60所示。

alt

图3-60 设置rsdetail记录集

03 如果想知道SQL语句,可以单击“高级”按钮。在“高级”界面检视SQL语句,如图3-61所示。在SQL语句中的colname是一个变量,若筛选的时候有用到变量,Dreamweaver就会用这个变量名称放在SQL语句里,而这个变量的值会是什么呢?就是下面“变量”区域中colname的运行值的定义。当网页运作时,colname将等于URL变量ID的值($_GET['ID']),所以当URL变量ID值不同,筛选出的结果也不同。

alt

图3-61 高级“记录集”对话框

04 然后单击“确定”按钮完成记录集建立。记录集建立完毕后,可以把各个字段“插入”到页面上相应的单元格中,如图3-62所示。

alt

图3-62 制作的详细页面

05 完成后直接按F12键在浏览器中打开detail.php,发现内容是空白的,如图3-63所示。这是怎么回事呢?因为在网址后面没有带着URL参数,当然记录集里就不会有任何东西。

alt

图3-63 显示为空白

06 直接在网址后加上URL变量ID,其值可以选1~10的任何一个值,如这里输入6,然后按Enter键,网页显示的结果如图3-64所示。

alt

图3-64 URL参数ID=5时的详细页面

07 在index.php中,每一笔记录的网址都带有特定的参数链接到detail.php,如图3-65所示。

alt

图3-65 单击编号链接

08 单击第10个链接后,打开指定记录的详细页面如图3-66所示。

alt

图3-66 打开指定记录的详细页面


注意

这里如果不以编号做为主链接也是可以的,像我们经常使用到的标题,即单击某个新闻标题即可以打开相应的详细页面采用的就是这种技术。


教程类别