第14章通讯录为了积累客户,许多网站都会提供一项针对客户管理的功能。其中最常见的无非是对客户日常联系通讯信息的管理。借此来达到有效利用和维护网站客户资源的目的。通讯录功能不仅可作为网站客户管理的工具,也可作为联系客户的快速查询平台。这些都可满足对网站客户资源最基本的运营。14.1通讯录数据库的设计通讯录数据库中需要一个通讯表来记录客户数据,如姓名、联系电话、邮件地址等。下面就具体来介绍整个通讯录数据库(Access数据库)的设计流程。(1)单击【开始】|【程序】|【MicrosoftOffice】|【MicrosoftOfficeAccess2003】命令,打开【MicrosoftAccess】窗口。(2)单击【新建文件】|【空数据库】命令,弹出【文件新建数据库】对话框。可以根据实际情况,保存到相应位置。并在【文件名】文本框中输入数据库文件名,例如“addressbook.mdb”,如图14.1所示。图14.1【文件新建数据库】对话框(3)单击【创建】按钮,弹出【addressbook:数据库(Access2000文件格式)】窗口,如图14.2所示。·331·图14.2【addressbook:数据库(Access2000文件格式)】窗口(4)单击【使用设计器创建表】按钮,弹出【表1:表】设计窗口。单击【文件】|【保存】命令,把表进行重新命名,例如“tb_addressbook”。(5)在【tb_addressbook:表】设计窗口中按照表14.1所示定义所有字段信息。表14.1【tb_addressbook:表】所有字段信息字段名称数据类型说明id自动编号客户编号Name文本客户姓名Tel文本联系电话address文本联系地址postalcode文本邮政编码dt日期/时间录入时间(6)选择“dt”字段,在【默认值】文本框中输入“now()”。目的是把当前时间做为记录新增时,“dt”字段的默认值,如图14.3所示。(7)右击“id”字段,选择【主键】命令,为表设置主键,如图14.4所示。图14.3“dt”字段的默认值设置图14.4为表设置主键(8)单击窗口右上角的【关闭】按钮,系统会提示保存所做的修改。返回到【addressbook:数据库(Access2000文件格式)】窗口,会发现所设计的表“tb_addressbook”已经存在于当中,如图14.5·332·所示。图14.5【news:数据库(Access2000文件格式)】窗口(9)在实际操作中,可以双击打开“tb_addressbook”表记录管理窗口。在这个窗口中,可以选择录入、编辑或者删除一些记录信息,如图14.6所示。(10)打开Dreamweaver的设计界面。单击【文件】|【新建】命令,新建一个标准ASP文件。(11)单击【窗口】|【数据库】命令,弹出【应用程序】面板,如图14.7所示。图14.6“tb_addressbook”表记录管理窗口图14.7【应用程序】面板(12)单击【+】|【自定义连接字符串】命令,弹出【自定义连接字符串】对话框。在【连接名称】文本框中输入“conn”。在【连接字符串】文本框中输入“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=i:\site\data\addressbook.mdb”。选中【Dreamweaver应连接】选项组下的【使用此计算机的驱动程序】选项,如图14.8所示。(13)单击【测试】按钮,如果连接创建成功,将弹出如图14.9所示的对话框。图14.8【自定义连接字符串】对话框图14.9连接创建成功提示(14)单击【确定】按钮,关闭【自定义连接字符串】对话框。返回【应用程序】面板,向导将自动在其下拉列表中添加一条【conn】的列表选项,如图14.10所示。·333·(15)单击【窗口】|【文件】命令,弹出【文件】面板。将看到在站点目录下会自动创建一个名为“Connections”的文件夹。在其下将会新增一个名为“conn.asp”的文件,如图14.11所示。图14.10【应用程序】面板图14.11【文件】列表面板14.2客户资料簿的实现14.2.1客户资料簿页面设计(1)打开Dreamweaver的设计界面。单击【文件】|【新建】命令,新建一个名为“list.asp”的标准ASP文件。(2)单击Dreamweaver【插入】工具栏中【常用】|【表格】命令。在弹出的【表格】对话框中进行相应设置,在【文档】窗口中插入了一些表格用于定位。(3)根据实际情况,可以对特定的单元格进行宽度和背景图片的指定,来修饰表格的外观。在此基础上,再对单元格行适当的排版,录入相应的文字信息具体效果如图14.12所示。(4)单击【窗口】|【绑定】命令,弹出【应用程序】面板,如图14.13所示。图14.12新客户资料簿页面排版图14.13【绑定】命令(5)单击【+】|【记录集(查询)】命令,弹出【记录集】对话框。在【名称】文本框中输入“rs”。在【连接】下拉列表中选择【conn】选项。【表格】下拉列表中选择【tb_addressbook】选项。然后单击在其右侧的【select】按钮。Dreamweaver自动将会在【SQL】文本框中输入“SELECT*FROMtb_addressbook”,如图14.14所示。·334·图14.14【记录集】对话框(6)单击【测试】按钮,如果记录集创建成功,将弹出如图14.15所示的对话框。(7)单击【确定】按钮,关闭【记录集】对话框。返回【应用程序】面板,向导将自动在其下拉列表中添加一条【rs】的列表选项,如图14.16所示。图14.15记录集创建测试图14.16【应用程序】面板(8)在显示“标题”所对应的表格单元格中单击鼠标。在【应用程序】面板中选中【记录集(rs)】|【name】选项。单击【插入】按钮,把“name”字段插入到单元格中。用上述同样的的方法,在“电话”、“地址”、“邮编”和“时间”所对应的单元格中插入记录集字段,如图14.17所示。·335·图14.17插入所有记录集字段(9)选中“修改”文字,在【属性】检查器中【链接】文本框中输入“edit.asp?id=%=(rs.Fields.Item(id).Value)%”,如图14.18所示。图14.18【属性】检查器(10)用上述同样的的方法,选中“删除”文字,在【属性】检查器中【链接】文本框中输入“del.asp?id=%=(rs.Fields.Item(id).Value)%”。选中“发布”按钮,在【属性】检查器中【链接】文本框中输入“add.asp”。(11)单击【窗口】|【服务器行为】命令,弹出【应用程序】面板,如图14.19所示。(12)直接通过鼠标或者借助【标签选择器】选中表格内用于显示数据的所有单元格,如图9.20所示。(13)单击【+】|【重复区域】命令,弹出【重复区域】对话框。在【记录集】下拉列表中选择【rs】选项。在【显示】选项组文本框中输入“2”,如图14.21所示。图14.19【应用程序】面板图14.20【标签选择器】图14.21【重复区域】对话框(14)单击【确定】按钮,关闭对话框。启动InternetExplorer,在地址栏中输入“http://localhost/list.asp”。将会看到如图14.22所示的效果。(15)把鼠标定位到用于放置分页信息的区域。单击【插入】|【应用程序对象】|【显示记录记数】|【记录集导航状态】命令,弹出【RecordsetNavigationStates】对话框。在【Recordset】下拉列表中选择【rs】选项,如图14.23所示。·336·图14.22查看http://localhost/list.asp图14.23【RecordsetNavigationStates】对话框(16)单击【确定】按钮,关闭对话框。Dreamweave将在文档窗口中自动插入一排用于记录统计的信息,如图14.24所示。(17)把鼠标定位到用于放置分页控制的按钮区域。单击【插入】|【应用程序对象】|【记录集分页】|【记录集导航条】命令,弹出【记录集导航条】对话框。在【记录集】下拉列表中选择【rs】选项。在【显示方式】选项组中选中【文本】选项,如图14.25所示。图14.24插入记录集导航状态图14.25【记录集导航条】对话框(18)单击【确定】按钮,关闭对话框。Dreamweave将在文档窗口中自动插入一排用于翻页控制的导航条,如图14.26所示。图14.26插入记录集导航条·337·14.2.2测试客户资料簿页面启动InternetExplorer,在地址栏中输入“http://localhost/list.asp”。将会看到如图11.27所示的效果。图14.27查看“http://localhost/list.asp”14.2.3生成代码分析——客户资料簿页面(list.asp)客户资料簿页面(list.asp),完整代码如下:%@LANGUAGE=VBSCRIPTCODEPAGE=936%!--#includefile=Connections/conn.asp--%Dimrs'定义记录集变量Dimrs_numRows'定义记录当前记录位置的变量Setrs=Server.CreateObject(ADODB.Recordset)'建立记录集对象rs.ActiveConnection=MM_conn_STRING'指定数据库链接字符串rs.Source=SELECT*FROMtb_addressbookrs.CursorType=0rs.CursorLocation=2rs.LockType=1rs.Open()'获取记录rs_numRows=0%%DimRepeat1__numRows'定义显示记录的总数目变量DimRepeat1__index'定义显示记录的数目变量Repeat1__numRows=2Repeat1__index=0rs_numRows=rs_numRows+Repeat1__numRows%%·338·'***RecordsetStats,MoveToRecord,andGoToRecord:declarestatsvariablesDimrs_total'定义记录总数变量Dimrs_first'定义初始行变量Dimrs_last'定义结束行变量'settherecordcountrs_total=rs.RecordCount'获取记录集总数'setthenumberofrowsdisplayedonthispageIf(rs_numRows0)Thenrs_numRows=rs_totalElseif(rs_numRows=0)Thenrs_numRows=1EndIf'setthefirstandlastdisplayedrecordrs_first=1'设置开始行为1rs_last=rs_first+rs_numRows-1'计算结束行'ifwehavethecorrectrecordcount,checktheotherstatsIf(rs_total-1)Then'如果记录集总数正确If(rs_firstrs_total)Thenrs_first=rs_totalEndIfIf(rs_lastrs_total)Then'如果结束行数大约记录总数rs_last=rs_totalEndIfIf(rs_numRowsrs_total)Then'如果当前记录行数大于记录总数rs_numRows=rs_totalEndIfEndIf%%'***RecordsetStats:ifwedon'tknowtherecordcount,manuallycountthemIf(rs_total=-1)Then'如果获取的记录总数为-1'countthetotalrecordsbyiteratingthroughtherecordsetrs_total=0'设置记录总数为0While(No