文章点击周排行、月排行榜功能开发总结,预备知识:group by,MYSQL函数week()、month(),下面我们以一个示例来分析如何开发一个对文章进行周排行,月排行的功能。

在设计数据库时一般都有一个字段来记录文章的点击率,如果我们要统计一周或一个月点击率排行光靠这一个字段是肯定是无法实现的。这时就要新建一个表,用来记录每篇文章每天的点击率。假设这个表名为ranking,定义四个字段:rid(表ID),contentid(与文章ID关联),hits(记录每天点击率),date(时间,重要,查询时作比较)

ranking大致结构

id      contentid      hits      date

1       2                   12        2010-12-18

2       2                   23        2010-12-19

3       1                   15        2010-12-19

4       2                   21       2010-12-20

一、统计

第一步就是要记录文章每天的点击率,这步非常简单,当用户查看某篇文章时,PHP程序会进行一次数据库查询,判断是否存在该条记录,如果不存在,说明是当天第一次浏览该文章,需要插入一条记录,后面的访客再看这篇文章时,只要更新点击率就行。这就是记录某篇文章一天的点击率。

$date = date("Y-m-d",time());

$contentid = $_GET[id];//当前文章ID

$query = mysql_query("select * from ranking where contentid='$contentid' and date='$date'); //查询数据库

if($value = mysql_fetch_array($query)){

mysql_query("update ranking set hits = hits+1 where id='$value[id]' ");//如果有记录,只需点击率+1

}else{

mysql_query("insert into ranking (`contentid`,`hits`,`date`) values('$contentid','1','$date')");//如果是第一次浏览,插入一条数据,点击率为1

}

二、查询

此时统计工作已经完成,接下来要把这些文章按一周或一个月点击率总和的顺序查询出来,这是个难点。

1.先要给文章分组并计算总点击率:select *,sum(hits) from ranking group by contentid order by sum(hits) desc

2.取本周数据筛选出来:select *,sum(hits) from ranking where week(date)=week(now()) group by contentid order by sum(hits) desc

这是周排行的查询语句,相对比较复杂,查询出来后再放到数组中依次显示出来,月排行也是这样,换一下函数就行,完整的PHP代码……。

mysql周排行_文章点击周排行、月排行榜功能开发总结相关推荐

  1. cron 每两周执行_如何每两周/月/天执行一次cron作业

    cron 每两周执行 We may want to run some jobs for every two weeks/months/days- under some situation such a ...

  2. java 获取周次_[Java] 获取本月周次和日期时间段信息

    packagecom.wdcloud.monitoring.common;importjava.text.SimpleDateFormat;importjava.util.ArrayList;impo ...

  3. redis mysql 原子计数器_使用redis的increment()方法实现计数器功能案例

    一直知道redis可以用来实现计数器功能,但是之前没有实际使用过,昨天碰到一个需求:用户扫码当天达到20次即提示:当日扫码次数达到上限! 当时就想到使用redis的递增方法increment()来实现 ...

  4. 1155低功耗cpu排行_比拼浮点运算速度,超算排行榜是这样“算”出来的

    本报记者 过国忠 通 讯 员 梅国英 吴 婷 6月17日,新一期全球超算500强榜单出炉,入选500强的所有超算浮点运算速度都突破每秒千万亿次,中国超算也在前四占有两席位置. 普通计算机用指令运算速度 ...

  5. 刀片 显卡 排行_沈阳家政连锁公司前十名排行榜

    沈阳家政连锁公司前十名排行榜 shajjzylzd 沈阳家政连锁公司前十名排行榜 在清洁员清洗玻璃与包门套的情况下,要十分的留意,由于清洗玻璃与包门套非常容易搞脏墙面:而包门套里边破碎率混凝土颗粒物十 ...

  6. 手机闪存速度排行_手机闪存性能排行

    手机专用闪存主要分为eMMC和UFS两大类别,前者仅支持并行读写(即半双工运行,读写必须分开执行),哪怕是最新的eMMC5.1标准其顺序读取和写入速度也不过300MB/s和200MB/s左右,常见于售 ...

  7. 台式计算机销量排名,2019台式电脑销量排行_笔记本哪些好 2019笔记本销量排行榜...

    笔记本哪些好 2019笔记本销量排行榜 JPG,594x348,232KB,428_250 笔记本哪些好 2019笔记本销量排行榜 JPG,570x350,128KB,407_250 台式电脑哪款好 ...

  8. redis 集合排重_使用Redis的有序集合实现排行榜功能

    游戏中存在各种各样的排行榜,比如玩家的等级排名.分数排名等.玩家在排行榜中的名次是其实力的象征,位于榜单前列的玩家在虚拟世界中拥有无尚荣耀,所以名次也就成了核心玩家的追求目标. 一个典型的游戏排行榜包 ...

  9. mysql实践周心得_实践周心得体会4篇

    实践周心得体会4篇 实践周心得体会1 艺术实践周就这么匆匆过去了,刚开始的时候还有些不适应,还没从十一长假的休闲娱乐中缓过劲来的时候,艺术实践周就那么如火如荼的展开了,那时候忽然就那么忙起来了,讲座. ...

最新文章

  1. easyexcel导入固定sheet_easyexcel指定多个sheet导excel数据
  2. 'str' object is not callable
  3. excel自动生成目录
  4. C++内联函数(inline)
  5. kinana 清空索引数据_(Elasticsearch)实战Elasticseartch、Logstash、Kibana
  6. asp mysql insert_用asp把表单数据插入数据库的2种常用方法
  7. L2-005 集合相似度 (25分)
  8. 以编程方式确定Java类的JDK编译版本
  9. 去除input填充颜色
  10. 用vim替代source insight
  11. 使用oracle/mysql/tidb由空格引发的血案解析
  12. 信号问题可根除,苹果新款 iPhone 将搭载高通基带?
  13. ffmpeg处理RTMP流媒体的命令大全
  14. 软件测试方法和技术_软件测试学习怎么入门?附真实学习方法
  15. man exportfs(exportfs命令中文手册)
  16. 基于matlab的数字图像处理---图像的锐化与边缘提取
  17. Springboot—JpaRepository—【duplicate entry for key 】
  18. 【PR】PR剪辑视频编辑软件视频去字幕
  19. C语言链表与指针的知识点,C/C++知识点之C语言链表详解
  20. idea或者goland更改主题颜色背景颜色

热门文章

  1. js实现科技大脑效果
  2. baum welch java_Baum-Welch算法(EM算法)对HMM模型的训练
  3. 六步解决“未找到服务器”问题
  4. 新手笔记-Vuex store练习
  5. docker卸载mysql_docker安装,卸载和入门
  6. 用Unity3D内部频谱分析方法做音乐视觉特效的原理说明
  7. 这周改了90多份简历...
  8. 人工智能:数学基础视频教程-陆永剑-专题视频课程
  9. MAC地址表泛洪攻击
  10. ES6之什么是模板字符串?