DW MX实例:动态广告管理

来源:岁月联盟 编辑:zhu 时间:2006-05-10
DW MX实例:动态广告管理内容简介:广告业务是网络的主要收入之一,通过本实例的学习,读者将会了解动态广告的主要功能及其基本原理。 效果说明 图 95-1 所示是用户登录后返回的页面,该页面用于录入广告 图片 信息及上传广告 图片 到服务器中。图 95-2 所示   广告业务是网络的主要收入之一,通过本实例的学习,读者将会了解动态广告的主要功能及其基本原理。

  效果说明 图 95-1 所示是用户登录后返回的页面,该页面用于录入广告信息及上传广告到服务器中。图 95-2 所示是广告的实际显示,它是根据广告的显示机率随机显示的。

  
Dreamweaver


  创作构思 通过 ASP.NET2.0 中的“ FileUpload ”服务器控件将广告上传到服务器中,并通过“更新记录”服务器行为实现广告信息的录入。利用“ Rnd() ”随机函数并结合数据集,即可实现广告的随机显示。

  操作步骤

  步骤一 应用程序的环境设置

  ( 1 ) 复制光盘中实例 95 的内容。将“光盘 / 源文件 / 实例 95 ” 目录下的所有文件复制到“ C:/ Inetpub/wwwroot/ ”目录下。在 IIS 服务器中设置默认的主目录为“ C:/ Inetpub/wwwroot/adweb ”(可参考实例 1 中的相关方法)。在 Dreamweaver 中新建站点“ adweb ”,其站点目录为“ C:/ Inetpub/wwwroot/adweb ”(建立站点的方法可参照实例 2 )。

  ( 2 )“ AD ”表的数据结构。 运行 Access ,打开“ C:/ Inetpub/wwwroot/adweb/data/AD.mdb ”,可以看到数据库“ AD.mdb ”中有“ AD ”、“ aduser ”两个数据表。“ AD ”表用于存储广告的有关资料,该表的数据结构如图 95-3 所示。“ User ”表用于存储用户的登录名及登录密码,该表的数据结构如图 95-4 所示。

  ( 3 ) 建立数据库链接“ ADconn ”,链接数据库“ C:/ Inetpub/wwwroot/adweb /data/AD.mdb ”,方法可参考实例 75 。

  步骤二 登录页面

  ( 1 )“ index.aspx ”页面结构。打开“ index.aspx ”,如图 95-5 所示。“用户姓名”对应文本框的 ID 为“ usename ”;“登录密码”对应文本方框的 ID 为“ pass ”;“输入附加码”对应文本方框的 ID 为“ valicode ”。图像按钮的 ID 为“ Image ”,其图像 URL 为“ numdraw.aspx ”,该文件是原来素材中提供的,该文件的制作与作用可参考实例 81 。【登录】按钮是表单按钮,其 ID 为“ Submit ”,动作为“提交表单”。

  
Dreamweaver


  
Dreamweaver


  ( 2 )添加数据集“ useData ”。在【服务器行为】面板中添加数据集“ useData ”,具体设置如图 95-6 所示。

  
Dreamweaver


  ( 3 )修改参数。在【数据集】对话框中单击【高级】按钮,在【数据集】高级对话框中添加筛选参数,如图 95-7 所示。

  
Dreamweaver


  ( 4 )在“ <MM:PageBind runat="server" PostBackBind="true" /> ”代码之后插入如下所述的代码。

  <script runat="server">

  Sub page_load(Src As Object, E As EventArgs) ' 页面载入时触发事件

  If userData.recordcount>0 AND Session("DrNum")=Request.Form("valicode") Then

  Session("usename")= userData.FieldValue("USENAME", nothing)

  response.redirect("admin.aspx")

  End If

  End Sub

  </script>
  步骤三 广告录入页面

  ( 1 ) 修改“ admin.aspx ”页面。在 Dreamweaver 中打开“ admin.aspx ”,如图 95-8 所示,在第一行中插入“ asp :文本框”,设 ID 为“ ADName ”;在第三行中插入“ asp :文本框”,设 ID 为“ ADLinkr ”;在第四行中插入“ asp :文本框”,设 ID 为“ Probaly ”;在第五行中插入“ asp :文本框”,设 ID 为“ mostgree ”。然后在第六行中添加两个表单按钮,一个按钮的动作为“重设表单”,标签为“重置”,控件名称为“ Submit ”;一个按钮的动作为“无”,其标签为“预览”,控件名称为“ preview ”。接着在第六行中添加一个“ asp :按钮”,设 ID 为“ goconver ”,文本为“上传”,结果如图 95-9 所示。

  ( 2 )保存“ admin.aspx ”,将其关闭。 运行 Visual Web Developer 2005 Express Edtion Beta 2 软件, 在该软件中执行【文件】|【打开】|【文件】菜单命令,打开 “ admin.aspx ” ,在设计视图中将工具箱中的“ FileUpload ”控件拖拉到 图 95-8 所示的第二 行中,效果如图 95-10 所示。



  
Dreamweaver


  
Dreamweaver


  提示:“ FileUpload ”服务器控件是 ASP.NET2.0 中新添加的服务器控件,该控件是用于上传文件的组件。

  
Dreamweaver


  ( 3 )添加“ Page_Load ”过程。保存“ admin.aspx ”,将其关闭。在 Dreamweaver 中打开“ admin.aspx ”,切换到代码视图,单击 ASP.NET 快捷菜单中的【页面载入】按钮,为页面添加“ Page_Load ”过程,如图 95-11 所示。

  ( 4 )在“ <script runat="server"> ”中定义“ Goconver_Click ”过程,用于响应【上传】按钮的“ OnClick ”事件,该过程的代码如下所述。

  Sub Goconver_Click(ByVal sender As Object, ByVal e As System.EventArgs)

  Dim hpf As HttpPostedFile = FileUpload1.PostedFile

  Dim AFilename As Array = hpf.FileName.Split("/")

  Session("strFilename") = AFilename(AFilename.Length - 1)

  hpf.SaveAs(Server.MapPath(".") + "/adimages/" + Session("strFilename"))

  End Sub

  程序说明:

   介绍程序前,先介绍 HttpPostedFile 类及 PostedFile 属性。 HttpPostedFile 类提供访问客户端上传的方法; PostedFile 属性用于访问要上传的文件。 HttpPostedFile 类的传递文件需要通过“ FileUpload ”控件来选择,该文件包括客户端的整个文件路径。通过“ Split ”方法将要上传的文件路径以“ / ”分隔,存储在数组“ AFilename ”中,并将最后一个数组“ AFilename ”存储于“ Session("strFilename") ”中,最后通过 HttpPostedFile 类中的 SaveAs 方法将文件上传到目前服务器下的“ adimages ”目录中。

  ( 5 )添加【插入记录】服务器行为。在【服务器行为】面板中添加【插入记录】服务器行为,设置【连接】为“ ADconn ”,【插入到表格】为“ AD ”,其他选项保持默认设置,如图 95-12 所示。

  
Dreamweaver


  ( 6 )添加数据集“ ADData ”。在【服务器行为】面板中添加数据集“ ADData ”,该数据集的设置如图 95-13 所示。

  ( 7 )调整 【插入记录】服务器行为的源代码。 切换到代码视图,找到该【插入记录】服务器行为的源代码,设置其 ID 为“ ADinsert ”,如图 95-14 中圆角方框①所示。删除图 95-14 中圆角方框②、③所示的代码,将图 95-14 中圆角方框④所示的值由“ true ”改为“ false ”。

  ( 8 )修改“ Page_Load ”过程,修改后该过程的源代码如下所述。

  Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)

  If Session("strFilename") <> Nothing Then

  Dim strADAddr As string

  strADAddr="adimages/" + Session("strFilename")

  Session("strFilename")=Nothing

  ADinsert.CommandText = "INSERT INTO Ad (ADLinkr, ADName, mostgree, Probaly,ADAddr) VALUES ('" + Request.Form("ADLinkr") + "' ,'" + Request.Form("ADName") + "'," + Request.Form("mostgree") + ", " + Request.Form("Probaly") + ",'" + strADAddr+ "')"

  ADinsert.SuccessURL = "admin.aspx?ADAddr="+strADAddr

  ADinsert.Debug = True

  End If

  End Sub

  
Dreamweaver


  
Dreamweaver


  程序说明:

  该过程主要是重新定义“ ADinsert ”插入记录服务器行为的“ SQL ”命令,执行成功后再次打开“ "admin.aspx ”页面,并将广告上传到上的地址“ strADAddr ”传递给 URL 参数“ ADAddr ”。

  ( 9 )找到【预览】按钮的源代码,设置其“ disable ”属性(设置按钮是否有效),在其代码中插入代码 <% =iif((ADData.RecordCount>0),"","disabled='disabled'") %> ,结果如图 95-15 中圆角方框所示。

  
Dreamweaver


  ( 10 )设置【打开浏览器窗口】对话框。切换到设计视图,选择【预览】按钮,在【行为】面板中单击【 + 】按钮,再在弹出的快捷菜单中选择【打开浏览器窗口】命令,打开【打开浏览器窗口】对话框,在该对话框中进行如图 95-16 所示的设置。



  
Dreamweaver


  ( 11 )切换到代码视图,找到【预览】按钮,在“ OnClick ”属性中添加如图 95-17 中圆角方框所示的代码。

  
Dreamweaver


  ( 12 )保存“ admin.aspx ”。“ preview.aspx ”页面是素材直接提供的,页面中只是添加了一个图像及一个数据集“ ADData ”,并绑定数据集“ ADData ”下的“ ADAddr ”字段到图像的“ src ”属性中。
  步骤四 动态广告随机显示

  ( 1 )在开始这一步操作之前,先介绍动态广告的运作原理。广告的显示是根据广告录入时输入的“显示机率”随机显示的,如果当时设置某个的“显示机率”为高,则该在总的广告中显示的概率就高了。但有一点就是其“显示次数”不能超过“最大显示次数”。打开“ show.aspx ”页面,该页面也是原来素材提供的,如图 95-18 所示。

  
Dreamweaver


  ( 2 )添加数据集“ ADData ”和“ showData ”。在【服务器行为】页面中添加数据集“ ADData ”,具体设置如图 95-19 所示。然后再添加数据集“ showData ”,具体设置如图 95-20 所示。

  
Dreamweaver


  
Dreamweaver


  ( 3 )添加文本框与服务器行为。在页面中添加一个“ asp :文本框”,保持默认设置。然后在【服务器行为】面板中添加一个【更新记录】服务器行为,具体设置如图 95-21 所示。

  提示:这里添加的文本框是临时的,是为了添加【更新记录】服务器行为而添加的,所以该文本框的设置对程序没有影响。而添加【更新记录】服务器行为则是用来添加文本框的,其设置也是临时的。简单地说,上面所做的都只是为了能够在页面中添加一个【更新记录】服务器行为。

  ( 4 )调整【更新记录】服务器行为的源代码。切换到代码视图,找到该【更新记录】服务器行为的源代码,设置其 ID 为“ Upgree ”,如图 95-22 中圆角方框①所示。删除图 95-22 中圆角方框②、③所示的代码,然后将图 95-22 中圆角方框④的值由“ true ”改为“ false ”。

  
Dreamweaver


  
Dreamweaver


  ( 5 )参照图 95-11 添加“ Page_Load ”过程,并对该过程的代码做如下所述的修改。

  Sub Page_Load(Src As Object, E As EventArgs)

  Dim i, j, k, TotalNum, theId, theNum, Arrl(),Degreein,mostgreein As Integer

  TotalNum = 0

  For i = 0 To ADDataSet.RecordCount -1

  theId = ADDataSet.FieldValueAtIndex(i, "id", Nothing)

  If ADDataSet.FieldValueAtIndex(i, "Probaly", Nothing) = 0 Then

  theNum = 1

  Else

  theNum = ADDataSet.FieldValueAtIndex(i, "Probaly", Nothing)

  End If

  Degreein=ADDataSet.FieldValueAtIndex(i, "Degree", Nothing)

  mostgreein=ADDataSet.FieldValueAtIndex(i, "mostgree", Nothing)

  If mostgreein> Degreein Then

  TotalNum = TotalNum + theNum

  ReDim Preserve Arrl(TotalNum)

  For k=1 To theNum

  Arrl(j) = theId

  j = j + 1

  Next

  End If

  Next

  If TotalNum <> 0 Then

  i = CInt(TotalNum * Rnd())

  Session("showID") = Arrl(i)

  Upgree.CommandText = "UPDATE Ad SET Degree="+cstr(showData. FieldValue ("Degree", Nothing) +1) +" WHERE ID="+cstr(Session("showID"))

  Upgree.Debug = True

  End If

  End Sub

  程序说明:

  程序中通过两个“ For ”循环所完成的操作是,统计“ AD ”表里字段“ Probaly ”中所有记录的总和,即统计所有广告的总机率;将广告的 ID 按“ Probaly ”值存储到数组“ Arrl ”中,例如“ Probaly ”为 10 ,则分别把广告的 ID 号存储到 10 个数组“ Arrl ”中,使显示次数大于最大显示次数的广告不在以上统计中。接着通过随机操作获取数组“ Arrl ”的数组号,将该数组号的值传递给“ Session("showID") ”,以建立数据集“ showData ”,并将“ AD ”表中该广告的显示次数增加“ 1 ”。



  ( 6 )切换至设计视图,选择页面中的初始图像,为其设置动态“ src ”属性,如图 95-23 所示。

  
Dreamweaver


  ( 7 )保存“ show.aspx ”。

  本实例主要运用“ Rnd() ”随机函数并结合数据集,实现广告图片的随机显示,这是实际应用中最常用的方法。通过该方法可以更好地将广告图片显示次数与广告显示所取得的收益联系起来。至于,如何将广告图片显示次数与广告显示所取得的收益紧密联系起来,这就留给读者们在实际应用中进一步研究。至此,本实例操作完毕。

图片内容