三剑数码工作室—南县网站建设,南县视频制作
三剑数码
三剑简介
三剑信念
三剑团队
三剑作品
三剑文集
联系我们
留言三剑
文档资料

ASP实现上一篇,下一篇

添加时间:2009/2/7   浏览次数:670
 
 
 
 

1.方法(1)

<!--程序开始-->
'定义一个thenext函数来找出下一篇的ID,如果当前记录已经是最后一条记录,则输出文字“没有了”
<%
function thenext
newrs=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id>"&a1&" order by id"
set newrs=conn.execute(sql)
if newrs.eof then
response.Write("没有了")
else
a2=newrs("id")
response.Write("<a href='view.asp?id="&a2&"'>下一篇</a>")
end if
end function
%>
'定义一个thehead函数来找出下一篇的ID,如果当前记录已经是最前面的一条记录,则输出文字“没有了”
<%
function thehead
headrs=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id<"&a1&" order by id desc"
set headrs=conn.execute(sql)
if headrs.eof then
response.Write("没有了")
else
a0=headrs("id")
response.Write("<a href='view.asp?id="&a0&"'>上一篇</a>")
end if
end function
%>
'数据库连接文件
<!--#include file="conn.asp"-->
'取得传递过来的ID,显示文章标题作者和内容
<%
id=request("id")
sql="select * from articles where id="&id
set rs=conn.execute(sql)
%>
<% boardid=rs("boardid") %>
<title>文章系统-<% =rs("title") %></title><body leftmargin="0" topmargin="0">
<!--#include file="top.asp" -->
<%
Do While Not rs.EOF
%>
<table width="773" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td width="576" align="left">
<table width="557" border="0" cellspacing="5" cellpadding="4" align="left">
        <tr>
          <td colspan="2" align="center"><span style="font-size:9pt color:#efefef"><%= rs("title") %><br>
            <div align="right"><span style="font-size:9pt color:#efefef">作者:<%= rs("author") %></span></div>
            </span></td>
        </tr>
        <tr>
          <td colspan="2" ><span style="font-size:9pt color:#efefef"><!--将数据库的资料取出,经过编码后输出,保持输入时的格式不变--><%= replace(server.HTMLEncode(rs("content")),chr(13),"<br>") %></span></td>
        </tr>
<% a1=rs("id") %>
        <tr>
          <td width="269" align="right"><!--调用前面定义的显示上一篇的函数--><% thehead %></td>
          <td width="257" align="right"><!--调用前面定义的显示下一篇的函数--><% thenext %></td>
        </tr>
        <% rs.MoveNext%>
        <%Loop%>
      </table></td>
    <td width="217" valign="top" align="left">相关文章:
'根据当前文章的栏目号,找出同一栏目的文章   
<%
sql="select * from articles where boardid="&boardid&""
set rs=conn.execute(sql)
%>
<%
    Do While Not rs.EOF
    %>
<table width="207" border="0" cellspacing="2" cellpadding="2">
<tr>
          <!--程序开始-->
'定义一个thenext函数来找出下一篇的ID,如果当前记录已经是最后一条记录,则输出文字“没有了”
<%
function thenext
newrs=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id>"&a1&" order by id"
set newrs=conn.execute(sql)
if newrs.eof then
response.Write("没有了")
else
a2=newrs("id")
response.Write("<a href='view.asp?id="&a2&"'>下一篇</a>")
end if
end function
%>
'定义一个thehead函数来找出下一篇的ID,如果当前记录已经是最前面的一条记录,则输出文字“没有了”
<%
function thehead
headrs=server.CreateObject("adodb.recordset")
sql="select top 1 * from articles where id<"&a1&" order by id desc"
set headrs=conn.execute(sql)
if headrs.eof then
response.Write("没有了")
else
a0=headrs("id")
response.Write("<a href='view.asp?id="&a0&"'>上一篇</a>")
end if
end function
%>
'数据库连接文件
<!--#include file="conn.asp"-->
'取得传递过来的ID,显示文章标题作者和内容
<%
id=request("id")
sql="select * from articles where id="&id
set rs=conn.execute(sql)
%>
<% boardid=rs("boardid") %>
<title>文章系统-<% =rs("title") %></title><body leftmargin="0" topmargin="0">
<!--#include file="top.asp" -->
<%
Do While Not rs.EOF
%>
<table width="773" border="0" cellspacing="0" cellpadding="0" align="center">
<tr>
<td width="576" align="left">
<table width="557" border="0" cellspacing="5" cellpadding="4" align="left">
        <tr>
          <td colspan="2" align="center"><span style="font-size:9pt color:#efefef"><%= rs("title") %><br>
            <div align="right"><span style="font-size:9pt color:#efefef">作者:<%= rs("author") %></span></div>
            </span></td>
        </tr>
        <tr>
          <td colspan="2" ><span style="font-size:9pt color:#efefef"><!--将数据库的资料取出,经过编码后输出,保持输入时的格式不变--><%= replace(server.HTMLEncode(rs("content")),chr(13),"<br>") %></span></td>
        </tr>
<% a1=rs("id") %>
        <tr>
          <td width="269" align="right"><!--调用前面定义的显示上一篇的函数--><% thehead %></td>
          <td width="257" align="right"><!--调用前面定义的显示下一篇的函数--><% thenext %></td>
        </tr>
        <% rs.MoveNext%>
        <%Loop%>
      </table></td>
    <td width="217" valign="top" align="left">相关文章:
'根据当前文章的栏目号,找出同一栏目的文章   
<%
sql="select * from articles where boardid="&boardid&""
set rs=conn.execute(sql)
%>
<%
    Do While Not rs.EOF
    %>
<table width="207" border="0" cellspacing="2" cellpadding="2">
<tr>
          <td height="20"><a href="view.asp?id=<%=rs("id")%>"><%= rs("title") %></a></td>
</tr>
</table>
<% rs.MoveNext%>
<%Loop%>
    </td>
</tr>
</table>
<!--#include file="copyright.asp" -->
</body>
<!--程序结束-->
<td height="20"><a href="view.asp?id=<%=rs("id")%>"><%= rs("title") %></a></td>
</tr>
</table>
<% rs.MoveNext%>
<%Loop%>
    </td>
</tr>
</table>
<!--#include file="copyright.asp" -->
</body>
<!--程序结束-->


2.方法(2)

还可以用分页来实现,就是将rs.pagesize设为1,就可以了啊。

3.方法(3)

还可以用rs.movenext(),rs.moveprevious()来实现读取上一篇,下一篇。

4.方法(4)

<%
id = TRIM(request("id"))
sqlPrev = "select top 1 * from news where id<" &id &" order by id desc"'上
sqlNext = "select top 1 * from news where id>" &id &" order by id"'下
SET rsPrev = conn.EXECUTE(sqlPrev)
SET rsNext = conn.EXECUTE(sqlNext)
Response.WRITE "<TABLE WIDTH=""800"" BORDER=""0"" ALIGN=""CENTER"" CELLPADDING=""0"" CELLSPACING=""0"">"&vbCrLf
IF rsPrev.EOF THEN
Response.WRITE "<TR><TD HEIGHT=""20"" align=left>上一篇文章:没有了</TD></TR>"&vbCrLf
ELSE
Response.WRITE "<TR><TD HEIGHT=""20"" align=left>上一篇文章:<a href=""news.asp?id="&rsPrev("id")&""">"&rsPrev("Title")&"</a></TD></TR>"&vbCrLf
END IF
IF rsNext.EOF THEN
Response.WRITE "<TR><TD HEIGHT=""20""align=left>下一篇文章:没有了</TD></TR>"&vbCrLf
ELSE
Response.WRITE "<TR><TD HEIGHT=""20""align=left>下一篇文章:<a href=""news.asp?id="&rsNext("id")&""">"&rsNext("Title")&"</a></TD></TR>"&vbCrLf
END IF
Response.WRITE "</TABLE>"&vbCrLf
rsPrev.CLOSE
SET rsPrev = NOTHING
rsNext.CLOSE
SET rsNext = NOTHING
%>

5.方法(5)

Rem==上一篇==
Rem======================================================
Rem= 参数说明:
Rem= pid当前ID,prame:栏目前辍(如一般web_news表,字段时一般为wn_**,prame就代表wn)
Rem= ptable(表前辍.如一般表名是:站点名_表名(shenzhe_news) ptable:就代表shenzhe)
Rem= 说明:采用上面命名法,可使该过程达到通用
Rem=====================================================
Function GetPre(pid,prame,ptable)
id = prame&"_id"
title = prame&"_title"
table = "city_"&ptable
url = "show_"&ptable
sql = "SELECT TOP 1 "&id&","&title&" FROM "&table&" WHERE "&id&"<"&pid&" ORDER BY "&id&" DESC"
set rs = Conn.Execute(sql)
If rs.eof or rs.bof Then
pre = "上一篇:没有新闻了"
Else
pre = "<a href="&url&".asp?"&id&"="&rs(0)&">"&rs(1)&"</a>"
End If
GetPre = pre
End Function

Rem = 下一篇
Rem=============
Rem= 参数函意和上过程一样
Rem==========
Function GetNext(nid,nrame,ntable)
id = nrame&"_id"
title = nrame&"_title"
table = "city_"&ntable
url = "show_"&ntable
sql = "SELECT TOP 1 "&id&","&title&" FROM "&table&" WHERE "&id&">"&nid&" ORDER BY "&id&" "
set rs = Conn.Execute(sql)
If rs.eof or rs.bof Then
nnext = "下一篇:没有新闻了"
Else
nnext = "<a href="&url&".asp?"&id&"="&rs(0)&">下一篇:"&rs(1)&"</a>"
End If
GetNext = nnext
End Function

实现代码:
偶数据库里有表:
city_active city_date city_note
city_active主要字段有: ca_id,cd_title
city_date主要字段有: cd_id,cd_title
city_note主要字段有: cn_id, cn_title

这样引用就可:
在show_note.asp?cn_id=4里引用上一篇下一篇
<%=GetPre(cn_id,"cn","note")%> ' 上一篇
<%=GetNext(cn_id,"cn","note")%> ' 下一篇

 
 
 
Copyright © 三剑数码工作室 地址:南县南洲镇永红路 电话:13874325683