您的位置:首页 > 编程语言 > ASP

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

2009-05-20 01:00 459 查看
  在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>
----------终于写完了!很久没写文章了,有点不适应。呵呵......
----------签名:没事做个网站晒晒 - www.msxindl.com - 站长新动力。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: