好文章,我们就要“顶”
技术与开发
小韵MM在网上看到一篇“深埋”的好文章,大感不平,利用文章末尾的“顶”功能促使文章排行上升,让更多人看到了。小韵MM暗喜:“做掘客的感觉真好!我也要在自己的个人网站上添加这个功能。”
小知识:掘客是Web2.0的一种具体表现形式,可以简单、粗略理解为挖掘并推荐好文章的人。他们对网站的内容进行投票,决定网站应该推荐哪些内容。
这个功能非常流行,国内一些门户网站也都有它。要拥有“顶”功能,先要在数据库的文章表中添加一个保存“顶”人数的字段,然后在文章显示页面下方添加一个“顶”功能层,最后在页面中加入代码,利用AJAX技术将网友点击数量动态添加到数据库即可(本文采用常见的ASP语言+Access数据库组合为例)。利用相同的原理,我们还可以制作“同意”、“支持”等功能。
小知识:AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。使用AJAX的最大优点,就是能在不更新整个页面的前提下更新数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。
第一步 添加“顶”人数的字段
文章想添加“顶”功能,就需要在数据库中为文章表添加一个保存“顶”人数的字段,如Dig,字段名字可自己修改。以Access数据库为例,右击Article表,选择“设计视图”,然后在最下方添加字段名为Dig、类型为数字型的这么一个字段(见图)。

第二步 加入“顶”功能层
一般“顶”功能都是在文章末尾,我们打开文章页面的源代码,在<body></body>内文章显示区末尾添加“顶”功能层,代码如下:
<div class="h" id="span_test"></div>/*显示"顶"人数*/
<h3 id="h_test"><a href="javascript:hc("guonei','test')" target="_self">来顶一下</a></h3>/*hc函数为自定义函数,点击'来顶一下',调用hc函数,动态添加数据*/
第三步新建更新“顶”人数文件
现在我们还要制作一个digg.asp文件,digg.asp文件的作用是将网友点击数更新至数据库中相应字段,即更新数据库中的Dig字段,其中关键代码如下(完整代码下载地址:http://www.cpcw.com/bzsoft):
Dim ID : ID = Request("ID")' 接收ID
If IsNumeric(ID) and len(ID)> 0 and len(ID)< 10 Then
sqlStr="update news set Dig=Dig+1 where id=" & ID ' 实现数值累加
conn.execute(sqlStr)
digg=conn.execute("select Dig from news where Id=" & ID)(0)'取得顶完后的数值
Response.Write "<ul>"
Response.Write "<li><span class='ding_shuzihao'>"& Dig & "</span></li>"' 页面显示
Response.Write "<li><a href='/digg/'>LIST</a></li>"' 这里链接顶榜
Response.Write "</ul>"
Conn.Close : Set Conn = Nothing
第四步 添加“顶”功能
现在我们还需要自定义函数,调用digg.asp文件,然后利用AJAX动态将“顶”人数更新到数据库中。在
内添加代码,其中关键代码如下(完整代码下载地址:http://www.cpcw.com/bzsoft):function getElement(aID)/*取得页面元素*/
{
return (document.getElementById) ? document.getElementById(aID): document.all[aID];
}
function makeRequest(url){/*查询*/
http_request=false;
if(window.XMLHttpRequest){//Mozilla,Safari,.../*判断浏览器类型*/
http_request=new XMLHttpRequest();
if(http_request.overrideMimeType){
http_request.overrideMimeType('text/xml');
}
}else if(window.ActiveXObject){//IE/*判断浏览器类型*/
try{
http_request=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
http_request=new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){}
}
}
if(!http_request){
alert('Giving up:(Cannot create an XMLHTTP instance)');
return false;
}
return http_request;/*返回请求*/
}
function flower(boardid,diggid){/*自定义flower函数,boardid,diggid分别为版面ID,文章ID*/
var url = "/digg/digg.asp?id="+diggid; /*调用digg.asp文件,更新"顶"人数*/
var xhttp=makeRequest();
xhttp.onreadystatechange=function(){
if(xhttp.readyState == 4 && (xhttp.status==200 || window.location.href.indexOf("http")==-1))
总结
本文介绍的只是最最普通的一个“顶”功能,我们还可以加入更多字段,丰富网友表达意见观点的类型,比如“同意”、“支持”、“伤心”等。只要开动脑筋,我们可以根据相同原理开发出更有创造性的功能。