ASP读取数据库自动生成表格,可自由控制换行!

  在csdn论坛及admin5论坛中,经常遇到有网友问“怎样根据数据库的记录来生成完整的表格,并且可自由控制换行?”这个问题。
  其实在网络上也有很多ASP高手做过各种方法的解答,但个别也有些不完美的地方。比如:生成的表格代码不完整!<tr>与</tr>未配对出现,
  或者输出多个<tr>标签。虽然在页面显示上好像没什么大的问题,但标签不关闭不仅不符合W3C标准,也极可能导致页面变形或出错。
  下面就将本人原创的“ASP读取数据库自动生成表格,可自由控制换行”这个方法跟大家作一个交流,不怕老鸟丢金砖哈。^_^
  言归正传,下面的代码主要是将“数据表WEB”中的“网站名称webname”及“网址url”循环输出到表格中,ASP代码简单,生成的表格代码却非常完整!里面有较详细的注释。
  ·数据库版本:Access 2003
  ·数据库文件名:data.asp
  ·数据库路径:与下面的文件在一个目录
  ·数据表名:web
  ·数据表结构:id(自动编号,关键字)--webname(文本类型)--url(文本类型)
  ·表中数据示例:1 --  免费广告位-- www.msxindl.com/web/
          2 -- 站长新动力论坛 -- bbs.msxindl.com
          3 -- 成都IT数码论坛 -- www.cdit8.com
  ·测试环境:WindowsXp-Sp2 IE6.0 IIS5.1
示例代码开始:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=gb2312" />
<title>ASP读取数据库自动生成表格,可自由控制换行</title>
</head>
<body>
<table align="center" width="770" cellspacing="0" cellpadding="0" border="0">
  <tr>
    <td colspan="8">
      <table width="100%" cellspacing="0" cellpadding="0" border="0">
        <tr>
          <td><font face="webdings">4</font><strong>ASP生成表格示例</strong></td>
        </tr>
      </table>
    </td>
  </tr>
<%
dim conn,connstr
sub connect()  '将数据库连接代码封装成一个函数来执行,避免其中的on error resume next成为全局代码,只让它在此函数里起作用!
 on error resume next
 set conn=server.createobject("adodb.connection")
 connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("data.asp")
 conn.open connstr
 if err.number<>0 then
 err.clear
 conn.close
 set conn=nothing
 response.write("数据库连接失败!!")
 response.end
 end if
end sub
call connect()  '执行数据库连接函数
sub closeconn()
 on error resume next
 if isobject(conn) then
 conn.close
 set conn=nothing
 end if
end sub
'-------------以上部分可单独保存成一个ASP文件,用<!--#include file="xxx.asp"-->的方式来引用.-----
set rs=server.createobject("adodb.recordset")
sql="select webname,url from [web] order by id asc"
rs.open sql,conn,1,1
if not rs.eof then
'-----------以下是循环输出单元格的关键步骤------------
rs.movefirst
dim x,z,o
x=rs.recordcount  '单元格总数.即:记录总数.也可以自定义.
'if x>=10 then x=10   '只取出前10条记录
o=8   '设定每行的单元格数量.
z=x mod o   '取余数
response.write("  <tr>")
for i=1 to x-z
%>
    <td align="center"><a href="http://<%=rs("url")%>" target="_blank"><%=rs("webname")%></a></td>
<%
rs.movenext
if i mod o = 0 then response.write("  </tr>"&vbCrlf)
%>
<%
next
if z<>0 then
if x > o then response.write("  <tr>")   '如果单元格总数大于一行的单元格数量,则另起一行.
for ii=x-z+1 to x
%>  
    <td align="center"><a href="http://<%=rs("url")%>" target="_blank"><%=rs("webname")%></a></td>
<%
rs.movenext
next
for j=1 to o-z   '如果记录集数据小于设定的单元格数量,则输出下面的单元格来补齐.
response.write("    <td align=""center"">站长新动力</td>"&vbCrlf)
next
response.write("  </tr>"&vbCrlf)
end if
else   '设置记录集为空时要显示的内容.
%>
    <tr><td align="center" colspan="8"> 站长新动力 www.msxindl.com </td></tr>
<%
end if
rs.close
set rs=nothing
%>
</table>
<% call closeconn() %>
</body>
</html>
----------完了!

本文来自CSDN博客,转载自liaitan 出处:http://blog.csdn.net/liaitan/archive/2009/05/20/4202663.aspx

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值