说到上一篇下一篇的效果,由于有一次一个网友给我发邮件问我具体怎么写,后来我又重新思考了一下如何做这个效果,后来发现我开始写的方法好象还是有些问题,这里我得重新写一下,希望看过以前我写的方法的人可以稍微花点时间重新看一下,如果谁有更好的方法,希望有时间给我发个邮件告诉我,大家共同进步。
上一篇下一篇的效果,首先要说一下排序方法,我个人认为用时间排序比较好弄,因为时间是按“年,月,日,时,分,秒”分的,相当于一个字段又重新分成了多个小字段,这样在3条以上信息进行排序的时候会比较方便,比如下面这张表(sorttime为专门用来排序的字段,不是用来显示在页面上的告诉浏览者添加信息的时间)。
id | title(信息标题) | sorttime(排序用字段) |
3 | 标题三 | 2009-09-20 10:40:55 |
1 | 标题一 | 2009-09-20 10:40:54 |
4 | 标题四 | 2009-09-19 10:40:54 |
2 | 标题二 | 2009-09-18 19:32:28 |
这个表格就是按时间来排序的,用的order by sorttime desc,一般信息排序都是倒序,当然正序倒序大家自己看着办。
注意“ sorttime”字段是排序用的,不是显示给浏览者看的。排序方法有了,就该上一篇下一篇的效果了。
通常在信息详情页面都有个信息的id字段作为参数,这样就能取出当前信息的详情,可以多取一个sorttime字段,用来做上一篇和下一篇的效果用。
上一篇的sql语句:"select top 1 id from TableName where sorttime < " & "----------当前信息sorttime字段----------" & "order by sorttime desc,id desc;"
这条sql语句选的是按倒序排好后取一条第一条信息。就是离现在当前信息sorttime时间最近的而且比当前信息旧的信息,例如上表里,信息详情页显示的是“标题一”,那么上一篇就是“标题四”。按倒序排好后比“标题一”更早的信息是“标题四”和“标题二”,而“标题四”离“标题一”最近,所以“标题一”上一篇信息是“标题四”。
下一篇的sql语句:"select top 1 id from TableName where sorttime > " & "----------当前信息sorttime字段----------" & "order by sorttime asc,id asc;"
用“order by sorttime asc,id asc”是因为,取离当前信息最近的信息,是比当前信息要新的所有信息里最早的信息(用“top 1”)。
我们这里说的“新旧”或“早晚”的比较,都是按sorttime字段排序的比较,因为是时间类型字段,所以我说的是“更早的”、“更晚的”、“更新的”、“更旧的”,没有用“大于”或“小于”形容。
注意:这个时间排序字段最好不要有重复的。防止这个的方法我是加了个“id asc”或“id desc”。当然如果文章表里放了所有分类的文章,在查询时候要把当前信息的分类也一起带上。
希望大家看的懂我写的,如果看不明白可以给我发邮件,本人文学水平有限,写的不好,见谅。
有人问这些语句如何加到asp页面里,我想了想应该怎么说,没想到有什么言简意赅的说法,只能是从asp语法学起了。
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''给大家一个时间格式的asp代码
<%
timeformat=year(Now()) & "-" & right("0"&month(Now()),2) & "-" & right("0"&day(Now()),2) & " " & right("0"&hour(Now()),2)& ":" & right("0"&minute(Now()),2)& ":" & right("0"&second(Now()),2)
%>
<%=timeformat%>