第十四讲 使用数据库(二) 上海财经大学信息管理与工程学院
本讲主要内容 创建主/详细页 创建注册页 创建登录页 创建插入记录页 创建列表页 创建更新记录页 创建删除记录页 添加访问限制与输入检查
11.6 创建主/详细页 主页显示数据库中所有记录的简短列表。详细页从主页链接出来,提供有关主页中所选项目更具体的细节。 Dreamweaver提供了“主/详细页”用“转到详细信息页”命令方法和“主详细信息页集”快捷方法。
11.6 .1 用“转到详细信息页”命令创建主详细信息页 用“转到详细信息页”命令方法是创建主相信信息页的一般方法。 创建一个空主页supply_list1.asp 在主页中添加记录集rsSupply,数据源为connSccn,点击“高级”按钮,采用SQL语句来定义记录集 从会员表中选择company;从类别表中选择cat_name;从供求信息表中选择sd_kind, prod_name, price, unit, quantity, validate_date。并且在Where中添加associator.associator_id = supply_demand.associator_id and category.cat_id = supply_demand.cat_id以保证表格之间的关联关系。
利用11.4.1或11.4.2的方法,将记录集“rsSupply”的内容显示在“supply_list1.asp”网页中。 记录集“rsSupply”的内容显示在“supply_list1.asp”网页后,点击“显示表格”的中“prod_name”列的第二行,并将其选定。 在“显示表格”的中“prod_name”列的第二行选定状态下,点击右侧面板组中的“服务器行为”标签,点击“转到信息信息页”,出现“转到详细信息页对话框”,进行设置如图的设置。
创建名称为“supply_demand_Detail1 创建名称为“supply_demand_Detail1.asp”空白动态网页,为该网页添加rsListDetail“记录集”,点击“高级”按钮,采用SQL语句来定义记录集 从会员表中选择company,tel,zip,province,address和contractor;从类别表中选择cat_name;从供求信息表中选择sd_kind, prod_name, price, unit, quantity, validate_date并且添加where associator.associator_id = supply_demand.associator_id and category.cat_id = supply_demand.cat_id and prod_name = ‘qwerty‘和变量qwerty等于Request.QueryString("prod_name")
其中SQL语句:SELECT company, tel, zip, province, address, contractor, cat_name, sd_kind, prod_name, price, unit, quantity, validate_date FROM associator, category, supply_demand WHERE associator.associator_id = supply_demand.associator_id and category.cat_id = supply_demand.cat_id and prod_name = 'qwerty‘ 变量qwerty等于Request.QueryString("prod_name") 利用11.4.1或11.4.2的方法,将记录集“rsListDetail”的内容显示在“supply_list_detail1.asp”网页中。
11.6 .1 用主详细页集的“主/详细页”快速创建的方法创建主详细页 Dreamweaver提供了“主/详细页”快速创建的方法。 创建一个空主页supply_list2.asp 在主页中添加记录集rsSupplyDemand,数据源为connSccn,点击“高级”按钮,采用SQL语句来定义记录集 从会员表中选择company,tel,zip,province,address和contractor;从类别表中选择cat_name;从供求信息表中选择sd_kind, prod_name, price, unit, quantity, validate_date并且添加WHERE associator.associator_id = supply_demand.associator_id and category.cat_id = supply_demand.cat_id 。
其中SQL语句为: SELECT company, tel, zip, province, address, contractor, cat_name, sd_kind, prod_name, price, unit, quantity, validate_date FROM associator, category, supply_demand WHERE associator.associator_id = supply_demand.associator_id and category.cat_id = supply_demand.cat_id
依次【插入】面板【应用程序】标签【主详细页集】按钮,其中主页字段只保留conpany,cat_id,sd_kind,Prod_name,price,unit, quantity, validate_date, 传递唯一键值和由此链接到详细信息均为Prod_name,详细页名称为supply_list_detail2.asp。(如图) 点击确定后会自动为我们建立好信息信息页和主详细信息页之间的关联和显示。
11.7 向会员表插入记录(创建注册页)——用插入记录快捷方式插入记录 新建associator_register.asp空白页 选择“插入面板应用程序标签插入记录表单”,选择连接为connSccn,插入到表格“associator”,插入后转到index.htm,其中表单字段的password设为密码,privence和Unit设为菜单,meme设为文本域。如下图所示。
11.8 创建登录页 创建登录表单 新建空白页login.asp 添加一个HTML空白表单 在该表单上添加一个会员帐号txtAssociatorID文本域和一个密码文本域txtPassword以及一个提交按钮(登录)
添加“登录用户”服务器行为 在“服务器行为”面板上单击+号按钮,并从下拉式菜单中选择“用户身份验证登录用户”,出现“登录用户“对话框。见下图
添加阶段变量MM_UserName保存登录的注册帐号 在“绑定”面板上,单击+号按钮并从下拉式菜单中选择“阶段”,出现“阶段变量”对话框。如下图
11.9 创建插入记录页——用表单插入记录到供需表中(供需信息发布) 在网页中添加HTML表单,使用户可以输入数据 新建空白页supply_demand_add.asp 添加一个HTML空白表单,名为frmMain 如下图所示,添加表单对象。其中产品类别一定要把列表值设为数字以对应相应的类别名称。
添加“插入记录”服务器行为,实现在数据库表格中插入记录功能 服务器行为面板中,单击加号按钮,选择“插入记录”,见下图
11.10 创建个人发布信息列表页 个人发布信息列表页的创建可以用插入面板中的“动态表格”快速创建,也可用分块方式创建,下面是分块方式创建方式: 创建页面布局 绑定记录集列到页面 创建重复区域显示多条记录
创建一个空网页并为其定义一个记录集 新建空白页supply_demand_personal_list.asp 利用绑定面板,添加“记录集”rsSupplyDemand”
在网页上显示记录 在页面上创建一个2行、10列的表格。 将记录集列从绑定面板上拖动到该表的第二行中 选中第二行,在服务器行为面板的下拉菜单中选择“重复区域”
11.11 创建更新记录页 更新页通常要与其他页结合使用(比如列表页):用户在列表页上找到准备更新的记录,把该记录的主键通过URL或表单传递到更新页,更新页根据该主键生成一个只包含该记录的记录集,把记录内容显示在表单中,用户修改数据,按“提交”按钮把结果更新到数据库。
创建更新记录页 新建空白页supply_demand_update.asp 在绑定窗口下建立一个名称为rsSupplydemand记录集,连接connSCCN的表格Supply_demand,并选定筛选sd_id等于URL参数sd_id.(如下图)
选择插入应用程序对象更新记录表单,出现以下对话框,删除sd_id表单字段,将sd_kind、cat_id和Unit改为菜单。更新后转到supply_demand_personal_list.asp,选取记录自rsSupplyDemand记录集。
连接更新记录页 打开supply_demand_personal_list.asp 在表格最左边添加一列,并在第二行的单元格中输入“更改” 选中“更改”,在【应用程序】面板组的【服务器行为】标签下,按+按钮,选择“转到详细页”; 在对话框中将其中的“详细信息页”设为“supply_demand_update.asp”; 传递URL参数: sd_id; 记录集: rsSupplyDemand;列:sd_id.
更新记录的逻辑关系: login.asp到index.asp用阶段变量MM_Username传递一个Associator_Id值;从index.asp到supply_demand_personal_list.asp用阶段变量MM_Username传递Associator_Id,致使列出Associator_Id的所有发布的供求信息; supply_demand_personal_list.asp到supply_demand_Update.asp用转到详细信息页传递Sd_Id值到记录集rsSupplyDemand中,并将该记录集中相应的值显示在更新表单中,通过提交更新过的更新表单修改数据表中的数据。
11.12 创建删除记录页 创建删除记录页并传递来sd_id值 新建空白页supply_demand_delete.asp 打开supply_demand_personal_list.asp 在表格最左边添加一列,并在改列的第二行的单元格中输入“删除” 选中“删除”,在应用程序面板的服务器行为中按+按钮,选择“转到详细页”;在对话框中将其中的“详细信息页”设为“supply_demand_delete.asp ;传递URL参数:sd_id;记录集:rsSupplyDemand;,列:sd_id.
添加删除记录命令 打开supply_demand_delete.asp文件,在服务器行为面板上点击加号,添加命令,出现如图所示对话框,并设置类型为删除,SQL语句和变量如下图所示。
在supply_demand_delete.asp文件中,添加转到supply_demand_personal_list.asp脚本语句 打开supply_demand_delete.asp文件的代码视图,在<html>标签之前,添加如下代码: <%Response.Redirect("supply_demand_personal_list.asp")%>
11.13 添加访问限制与输入检查 Web站点上许多网页只有授权用户才能访问,如果未登录的用户试图通过在浏览器中键入该页的URL来绕过登录页,则该用户将被重定位到登录项。 访问限制可以检查用户是否进行过登录,也可以进一步对注册用户分级,不同级别的用户具有不同的访问权限 对于简单的保护,只需在页面上添加“限制对页的访问”服务器行为即可保护站点上的网页。
添加“限制对页的访问”服务器行为 打开index.asp, 在“服务器行为”面板上,选择“用户身份验证” > 限制对页的访问,出现“限制对页的访问”对话框,并进行如下设置:
添加输入检查 在按“提交”按钮之前,可以在客户端的浏览器中直接检查数据是否合法。“检查表单”浏览器端行为可以完成此功能。“检查表单”可应用于单个文本域,也可以应用于整个表单。 例: 打开supply_demand_add.asp,选择该页上的整个表单 在“设计”面板组的“行为”面板上,单击加号(+)按钮,并从下拉式菜单中选择“检查表单”,出现“检查表单”对话框
11.14 ASP动态网站通过自定义连接字符串与Access数据库建立连接(以VBScript为例) 如果用前面的ODBC方法建立与数据库的连接,对于“自建自管”和“自建托管”服务器均不会由很大问题,但对于“租赁服务器”空间的方式,则需要到对方服务器上设置OBDC,这样会带来很大不方便。为此,应该用自定义连接字符串与Access数据库建立连接比较合适。 以下是以文档类型VBScript的ASP动态网站为例,通过自定义连接字符串与Access数据库建立连接。
在本地“浏览”调试网站时的连接方法 要求连接数据库名称为“sccn.mdb”本地,数据库存放位置为“D:\WebSite\Db\sccn.mdb”;本地根文件夹设为“D:\WebSite\”。 打开 DW,新建站点,设置好本地信息、远程信息和测试服务器(设置方法同上)(本地根文件夹设为“D:\SCCNWebSite\” ,测试服务器类型为“ASP VbScript”),建立所需“ASP VbScript”动态网页,例如主页文件 index.asp,点击右侧【数据库】面板的加号,选择【定义连接字符串】,在弹出的“自定义连接字符串”对话框的“连接名称”栏,填写自定义的名称“connSCCN”。在“连接字符串”栏中填写: "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\WebSite\Db\sccn.mdb"
注意: 上面连接字符串两端的双引号可以带,也可以不带。在输入时如果省略,DW 会自动为你补上的。 Driver 和 (*.mdb) 之间有个空格,写错了不能通过“测试”,当然也连接不上数据库。 在“Dreamweaver 应连接”项中,应选择“使用此计算机上的驱动程序”。 填写完毕后,点击右边的[测试]按钮,就会弹出“成功创建连接脚本”的信息牌。点击[确定]完成连接的创建。
让数据库的连接同时适应本地和远程服务器环境 我们在连接中使用了数据库的绝对路径 “D:\WebSite\Db\sccn.mdb” ,而当我们把网站上传到远程服务器后,服务器上你的数据库的绝对路径可能和本地路径不一样,相关程序就会出错。为了避免这种情况,我们应在程序中使用相对路径。
在 DW 下用双击方法打开本地根文件夹下connections文件夹中的连接文件connSCCN 在 DW 下用双击方法打开本地根文件夹下connections文件夹中的连接文件connSCCN.asp,切换到[代码]编辑方式,找到其中的这一行: MM_connSCCN_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\WebSite\Db\sccn.mdb" 在这一行前加一个单引号“'”把它变成注释行,然后在下面新建一行,输入如下代码: MM_connSCCN_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.Mappath("Db/sccn.mdb") 将该文件保存,数据库的连接创建完毕。
如果是ASP JavaScript则找到其中的这一行: var MM_connSCCN_STRING = "Driver={Microsoft Access Driver (*.mdb)};DBQ=D:\\WebSite\\Db\\sccn.mdb"后, 在这一行前加一个” //” 号,把它变成注释行,然后在下面新建一行,输入如下代码: var MM_connSCCN_STRING = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+Server.Mappath("Db/sccn.mdb"); 即,以上只是&换为+,并在前面加 Var; 将该文件保存,数据库的连接创建完毕。
解释如下: 为什么我们不在创建连接时就使用相对路径呢?这是因为,在 DW 中的连接字符串中只能使用绝对路径,而 DW 有个特点,就是检测连接文件(这里是 connSCCN.asp)时,会连注释(以单引号开头的行)一起解释、执行,在 DW 中“浏览”网页、执行数据库的连接时,只认第一个出现的连接字符串,而不管它前面是否有作为注释标记的单引号;而在远程 IIS 服务器中解释文件时会忽略掉注释(即绕过有注释标记的行),执行上面我们另加的第二个连接字符串。根据这个特点,就实现了在本地 IIS 服务器和 DW 下调试程序使用绝对路径,在远程服务器上浏览时使用相对路径定位数据库,使得网站与数据库的连接在网站存放地点不同的情况下能“自动”随机应变,畅通无阻。