->唠叨大哥请进:关于24小时内点击最高的新闻sql语句

Jzealot 2005-01-19 02:26:51
原帖
http://community.csdn.net/Expert/topic/3697/3697188.xml?temp=.8094599

帖子虽然结了,但好像还有问题
如果datez是最后更新时间,那么就有一个问题存在
如果在24小时以内,a新闻点击了5次,b新闻点击了1次,点击a的最后一次时间在点击b的前面,
但是,假如b的总点击数比a高,那么得到结果并不是我们想要的结果,得到最高的是b而不是a!
...全文
329 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
genshing 2005-02-22
  • 打赏
  • 举报
回复
楼上的想法不错~要了!嘿嘿
polygame 2005-01-20
  • 打赏
  • 举报
回复
我这几天在做一个东西也需要一个周点击排行,我现在正在做
是这样做的,加了几个字段,(最后点击时间戳,年月日周的点击次数5个字段和总点击次数)
同时实现了记录年月日周的点击数.有了点击数统计就很好统计了呵,当天的点击查日点击次数就好了
大概的代码这样的.呵呵,也不知道逻辑上有没有错误..因为还没有加到做的系统里面去.


$oldTimeStamp = mktime(0,0,0,1,16,2005); //这个从数据库里取出来,这里模拟的
//从数据库里初始化
$hits = 10;
$yhits = 10;
$mhits = 10;
$dhits = 10;
$whits = 10;

$nowDateArray = getdate();
$oldDateArray = getdate($oldTimeStamp);


//year process
if($nowDateArray["year"] == $oldDateArray["year"])
$yhits ++;
else
$yhits = 1;

//month process
if($nowDateArray["year"] == $oldDateArray["year"] && $nowDateArray["mon"] == $oldDateArray["mon"])
$mhits ++;
else
$mhits = 1;

//day process
if($nowDateArray["year"] == $oldDateArray["year"] && $nowDateArray["mon"] == $oldDateArray["mon"] && $nowDateArray["mday"] == $oldDateArray["mday"])
$dhits ++;
else
$dhits = 1;

//week process
//取得本周的开始结束时间段

//本周开始时间,从今天开始后退n天到星期天的0点,一个周从星期天开始.如果从星期一开始把0,0,0改为23,59,59
$tmpStartDate = mktime(0,0,0,$nowDateArray["mon"],$nowDateArray["mday"],$nowDateArray["year"]) - ($nowDateArray["wday"] * 86400);

//本周结束时间,本周六12点59
$tmpEndDate = mktime(23,59,59,$nowDateArray["mon"],$nowDateArray["mday"],$nowDateArray["year"]) + ((6 - $nowDateArray["wday"]) * 86400);


//如果上次更新在这个时间段内,为同一周
if($oldTimeStamp >= $tmpStartDate && $oldTimeStamp <= $tmpEndDate)
$whits ++;
else
$whits = 1;

//接下来更新最后记录时间数据库
$hits ++;//总点击数加1
$sql = "UPDATE TABLE SET HITS=".$hits.", YHITS=".$yhits.",MHITS=".$mhits.",DHITS=".$dhits.",WHITS=".$whits.",LASTTIMESTAMP=".$nowDateArray[0]." WHERE OID=".$id;
xuzuning 2005-01-20
  • 打赏
  • 举报
回复
由于时间是不会停止的,而你又要想知道某个时间段内帖子的点击数。所以简单的计数是不能满足要求的。
你的计数器必须能记录点击的帖子的id和点击的时间,结构也并不复杂。只需两个字段就够了。
Jzealot 2005-01-20
  • 打赏
  • 举报
回复
如果要记录每次点击的时间,这样表的结构会变得很复杂吧
请指点一下表的结构设计
谢谢!
xuzuning 2005-01-19
  • 打赏
  • 举报
回复
你记录了每次点击的时间吗?
yuanming007 2005-01-19
  • 打赏
  • 举报
回复

select top 1 * from tablec where datez >='dateadd(day,-1,getdate())' and datez <='getdate()' order by dianj desc
孟子E章 2005-01-19
  • 打赏
  • 举报
回复
Order By CountNum Desc

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧