免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1267 | 回复: 0

asp查询分页技术浅谈 [复制链接]

论坛徽章:
0
发表于 2011-12-21 08:44 |显示全部楼层
    最近,由于工作需要我花一段时间学习了asp方面的知识。我想把我在这段时间里面的技术方面的感想做一个总结,希望能对asp的初学者有一个帮助,更重要的是记录一下自己的学习过程,技术上成长的过程,给自己留一个备份。好了,(哈哈。。。。。。)废话不说了,开始正题。
   我记得,刚开始学习asp的时候是通过一个视频来学习的,我觉得这个对我是非常的重要,而且非常的适合刚开始学习asp的人。所以我极力推荐那些想自己学习asp的初学者们最好抽点时间好好的看看。那个视频的网址是:http://www.enet.com.cn/eschool/zhuanti/asp/。最起码,它能够使你很快的入门。
   经过那一段时间的学习,我觉得我在asp方面算是入门了。看了那个视频之后我对asp的基础知识:语法知识、判断、循环语句的使用、简单的函数处理;与服务器进行交互,包括从服务器中读取数据、向服务器写数据;与数据库的交互:从数据库中读取数据、往数据库中写数据。接下来我开始做一个实战的项目,哈哈。。。大家都知道,只有通过实践才能提高自己的水平,事实上也只有通过实践才可以很快速的提高自己的水平-这是一个千古不变得真理。这个项目是做一个简单的网站,具体的详细情况由于职业道德我就不说了,这里知识简单交代一下这个项目一些简单的情况,这个项目是关于学生的缴费系统。需求是这样的:用户可以按照班级和学号来查询某个班或者某个学生的缴费情况以及所选择课程的情况。这样吧,老规矩先上代码再分析:
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
  2. <!--#include file="inc/XXXXX.asp" -->
  3. <%
  4. file="XXXXXXXXXX.asp"
  5. %>

  6. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  7. <html xmlns="http://www.w3.org/1999/xhtml">
  8. <head>
  9. <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
  10. <link href="css.css" rel="stylesheet" type="text/css" />
  11. <title>XXXXXXXXXXXX</title>
  12. </head>

  13. <body>
  14. <table>
  15. <tr>
  16. <td>请输入查询内容:</td>
  17. </tr>
  18. <tr>
  19. <td>&nbsp;&nbsp;</td>
  20. <td><form action="<%=file%>" method="post" name="form1">
  21. <td><input name="query_id" type="text" size="32" /></td>
  22. <td> <select name="query_mode">
  23.     <option value="0">请选择查询方式</option>
  24.     <option value="1">XXXX</option>
  25.     <option value="2">######</option>
  26.     </select>
  27. </td>
  28. <td><input name="button" type="submit" id="button" value="查询"/></td>
  29. </form>
  30. </td>
  31. </tr>
  32. </table>
  33. <table width="95%" height="25" border="0" align="center" cellpadding="1" cellspacing="0">
  34. <tr>
  35. <td><div align="left">查询结果:</div></td>
  36. </tr>
  37. </table>
  38. <table width="95%" border="0" align="center" cellpadding="0" cellspacing="0">
  39. <tr>
  40. <td class="bgbj">
  41. <table width="100%" border="0" cellspacing="1" cellpadding="1">
  42. <tr>
  43. <td width="10%" align="center" valign="middle" class="bgbj1">学期</td>
  44. <td width="10%" align="center" valign="middle" class="bgbj1">班级</td>
  45. <td width="10%" align="center" valign="middle" class="bgbj1">学号</td>
  46. <td width="10%" align="center" valign="middle" class="bgbj1">姓名</td>
  47. <td width="35%" align="center" valign="middle" class="bgbj1">课程</td>
  48. <td width="10%" align="center" valign="middle" class="bgbj1">学费</td>
  49. <td width="15%" align="center" valign="middle" class="bgbj1">缴费时间</td>
  50. </tr>
  51. <%
  52. dim class_id, stu_id, query_mode,stu_term, stu_class, stu_classi, stu_name, stu_course, stu_tuition, stu_date, sql, sql1, sql_class, sql_tuition, db_info, conn, connstr, rs
  53.   query_mode=request("query_mode")
  54.    if request("query_mode")=2 then
  55.     'query information by class name
  56.     'stu_class = request.Form("query_id")
  57.     stu_classi = request("query_id")
  58.     sql_class= "select stu_term,stu_class, stu_id,stu_name,stu_course from stu_info1 where stu_class LIKE '%"&stu_classi&"%'"
  59.     'connect to database
  60.     db_info = split(dbnames, "|||")
  61.     set conn=server.CreateObject("ADODB.Connection")
  62.     connstr="PROVIDER=SQLOLEDB;DATA SOURCE="&db_info(0)&";UID="&db_info(1)&";PWD="&db_info(2)&";DATABASE="&db_info(3)&""
  63.     conn.Open connstr
  64.     Set rs=Server.CreateObject("ADODB.Recordset")
  65.     rs.open sql_class,conn,1,1
  66.     
  67.     'output query result
  68.     if not rs.eof then
  69.      rs.pagesize=30 '每页记录条数
  70.       curpage=Request.QueryString("curpage") '将URL参数curpage传给curpage变量
  71.       if curpage="" then
  72.          curpage=1
  73.       end if
  74.       rs.absolutepage=curpage '将本页设为curpage设置的页数
  75.      for i= 1 to rs.pagesize
  76.      if rs.eof then
  77.            exit for
  78.      end if
  79.      stu_term=rs(0)
  80.         stu_class=rs(1)
  81.         stu_id=rs(2)
  82.         stu_name=rs(3)
  83.         stu_course=rs(4)
  84.         'query tuition for student
  85.         sql_tuition="select stu_tuition, stu_date from stu_tuition where stu_id='"&stu_id&"' and stu_term= '"&stu_term&"'"
  86.         set rs1=Server.CreateObject("ADODB.Recordset")
  87.         rs1.open sql_tuition, conn,1
  88.      if not rs1.eof then
  89.          stu_tuition=rs1(0)
  90.          stu_date=rs1(1)
  91.      else
  92.          stu_tuition=""
  93.          stu_date=""
  94.      end if
  95. %>
  96. <tr>
  97. <td class="bgbj2"> <%=stu_term %> </td>
  98. <td class="bgbj2"> <%=stu_class%> </td>
  99. <td class="bgbj2"> <%= stu_id %> </td>
  100. <td class="bgbj2"> <%= stu_name%> </td>
  101. <td class="bgbj2"> <div align="center"><%=stu_course%></div></td>
  102. <td class="bgbj2"> <%= stu_tuition %></td>
  103. <td class="bgbj2"> <%= stu_date %></td>
  104. </tr>
  105. <%
  106.         rs1.close
  107.         set rs1=nothing
  108.      rs.movenext
  109.        next
  110. %>
  111. <tr>
  112. <td colspan="7" class="bgbj2"><div align="center">
  113. 当前第<%=curpage%>页,共有<%=rs.pagecount%>页,共有:<%=rs.recordcount%>条记录
  114. <%if curpage=1 then%>
  115. 首页
  116. <%else%>
  117. <a href="?curpage=1&query_mode=<%=query_mode%>&query_id=<%=stu_classi%>">首页</a>
  118. <%end if%>

  119. <%if curpage=1 then%>
  120. 上一页
  121. <%else%>
  122. <a href="?curpage=<%=curpage-1%>&query_mode=<%=query_mode%>&query_id=<%=stu_classi%>">上一页</a>
  123. <%end if%>

  124. <%if rs.pagecount<curpage+1 then%>
  125. 下一页
  126. <%else%>
  127. <a href="?curpage=<%=curpage+1%>&query_mode=<%=query_mode%>&query_id=<%=stu_classi%>">下一页</a>
  128. <%end if%>

  129. <%if rs.pagecount<curpage+1 then%>
  130. 尾页
  131. <%else%>
  132. <a href="?curpage=<%=rs.pagecount%>&query_mode=<%=query_mode%>&query_id=<%=stu_classi%>">尾页</a>
  133. <%end if%>
  134. </div>
  135. </td>
  136. </tr>
  137. <%
  138.     else 'if not rs.eof
  139. %>
  140. <tr>
  141. <td colspan="7" class="bgbj2"><div align="center">sorry! there is no record for you!</div></td>
  142. </tr>

  143. <%
  144.    end if ' end if not rs.eof     
  145.  elseif request("query_mode")=1 then
  146.   'query information by student ID
  147.   stu_id = request("query_id")
  148.   if IsNumeric(stu_id) then
  149.     sql="select stu_term, stu_class, stu_name, stu_course from stu_info1 where stu_id='"&stu_id&"'"
  150.     db_info = split(dbnames, "|||")
  151.     set conn = server.createobject("ADODB.Connection")
  152.     connstr="PROVIDER=SQLOLEDB;DATA SOURCE="&db_info(0)&";UID="&db_info(1)&";PWD="&db_info(2)&";DATABASE="&db_info(3)&""
  153.     conn.Open connstr
  154.     Set rs=Server.CreateObject("ADODB.Recordset")
  155.     rs.open sql, conn,1
  156.     'output query result
  157.     if not rs.eof then
  158.       do while not rs.eof
  159.         stu_term=rs(0)
  160.         stu_class=rs(1)
  161.         stu_name=rs(2)
  162.      stu_course=rs(3)
  163.         sql_tuition="select stu_tuition, stu_date from stu_tuition where stu_id='"&stu_id&"' and stu_term= '"&stu_term&"'"
  164.         set rs1=Server.CreateObject("ADODB.Recordset")
  165.         rs1.open sql_tuition, conn,1
  166.      if not rs1.eof then
  167.           stu_tuition=rs1(0)
  168.          stu_date=rs1(1)
  169.         else
  170.          stu_tuition=""
  171.          stu_date=""
  172.         end if
  173. %>
  174. <tr>
  175. <td class="bgbj2"> <%=stu_term %> </td>
  176. <td class="bgbj2"> <%=stu_class %> </td>
  177. <td class="bgbj2"> <%=stu_id %> </td>
  178. <td class="bgbj2"> <%=stu_name %> </td>
  179. <td class="bgbj2"> <div align="center"><%=stu_course%></div></td>
  180. <td class="bgbj2"><%= stu_tuition %></td>
  181. <td class="bgbj2"><%= stu_date %></td>
  182. <tr>
  183. <%
  184.   rs1.close
  185.   set rs1=nothing
  186. rs.movenext
  187. loop
  188. %>
  189. <% else 'there are no record for this student %>
  190. <tr>
  191. <td colspan="7" class="bgbj2"><div align="center">sorry! there is no record for you!</div></td>
  192. </tr>
  193. <%
  194.     rs.close
  195.     set rs=nothing
  196.     conn.close
  197.     set conn=nothing
  198.   end if
  199. else
  200. %>
  201. <tr>
  202. <td colspan="7" class="bgbj2">
  203. <div align="center">please input student ID consisted of digit:0-9</div>
  204. </td>
  205. </tr>
  206. <% end if ' end if IsNumeric(stu_id)%>
  207. <% end if
这就是我的全部代码了,怎么样简单吧!哈哈。。。我就这个水平啊!高手们谅解一下!!!!!
从上面得代码可以看出,只要是学了asp方面知识的或者做web方面的技术人员都会觉得这里几乎是没有什么难点的。但是我在写这个代码的时候还是遇到一些问题的,或者说这里还是有一些值得我注意的地方:
1.我觉得在web方面有一点是非常需要注意的是,没点击一次提交都是向服务器发送一次请求,这个是必须的也是毫无疑问的。一开始在网页的时候我不清楚这一点本来是想先让客户选择查询的模式,根据查询的模式来说显示不同的内容。但是由于后面还有一个从数据库查询数据,这样就需要两次请求。我可以做到这样的查询,但是我发现我不能修改查询的方式-也就是说我选择了一种查询方式以后就只能用哪种方式来查询,除非我把IE关了重新打开。呵呵。。。。我就是这个水平。如果高手愿意指点一下怎么实现的话,我是非常的感谢!
2.从数据库中取数据,以及修改从数据库中获取的数据,其实这个是不难的。但是作为动态web的关键技术的主要部分-与数据库交互。我还是提一下,大家都发现了,asp基本上用的都是微软提供的数据库(sqlserver, access),或许asp本身就是微软推出来。他们本来就是一体的。但是php就可以是其他的数据库比如postgresql和mysql等等。具体怎么和数据库交互,我想你们可以看看我推荐的视频网站。
3.这里有个技术难点(如果有的话)那就是分页了,这个在那个视频里没有介绍,我是从靠我的“兄弟”帮忙的-从百度和google中找到答案的。没有办法,做技术的人只有这样,只能与它们成为兄弟我才有饭吃啊!一开始我在google中以搜索,一大堆我想要的东西,随便找了一个就可以了。但是我利用这个模板使用在我的代码中,第一页能够正常的显示,但是点击第二页时,就什么都不显示了。我当时就纳闷了,仔细看看每一行代码都没有问题,为什么在别人的代码中可以,在我的代码中就不可以呢。找了半天也不明白。只有再一次的靠兄弟了,这回我更绝了直接找查询分页技术。又是一大堆啊!!!但是,没有现成的源码。而且大部分都是提问的,不过我从别人的解答中似乎说到要把什么什么参数传给下一页,否则就不能正常显示。我看了这个以后仔细分析了一下web请求,发现这个是对的。我按照那个提示自己又是了一下,发现还真是对的。哈哈。。。至此大功告成。不过解决了这个问题,我的脑子中就有个问题了,怎么样才能吧参数穿给下一页,这种传参数的方式又有多少种呢?百思不得其解!!!!!!!!希望高手指点一下!在此先谢谢了!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP