记录一次有关于实现新闻下一篇功能的代码优化
来源:互联网 发布:web前端软件环境 编辑:程序博客网 时间:2024/06/04 18:03
在web开发中,经常会有一个需求需要实现,那就是下一篇。比如,当我们阅读某一篇新闻时,一般在新闻详情页末尾会有,下一篇,标题是XXX。
然而在实现这个功能的时候,我虽然实现了,但是确实一种效率非常低的方法,幸好有经理帮我指出错误,并为我提供了解决方法。
话不多说,先附上我的烂代码:
//实现下一篇功能$newslist = News::listNews('', 1, 99999999);//---获取id数组$newsidarr = array();foreach ($newslist as $key => $value) {$newsidarr[$key] = $value['id'];}//---获取下一篇id$nextid = 0;foreach ($newsidarr as $k => $v) {if($id == $v){if($k < (count($newsidarr)-1)){$nextid = $newsidarr[$k + 1];}}}//---获取下一篇信息if($nextid){$nextinfo = News::getNews($nextid); $next = '<a href="news_info.php?id='.$nextid.'">下一篇: '.$nextinfo["title"].'</a>';}else{$next = '<a href="javascript:;" style="background-color:#bbb;">已经是最后一篇了</a>';}
这段代码虽然实现了功能,但是确实错误狠多。首先我在调用listNews方法的时候不应该用一串9来调取所有的新闻。因为还是存在多余这么多新闻的可能的。
第二个就是我的方法问题了。当我这样现获取所有的id做一个数组,然后跟当前id进行比对,获取下一篇新闻的id的方法是效率很低的,它不仅要去查一个表的所有数据获取id,还要把所有的id进行遍历再进行比对获取下一篇的id。当新闻很多的时候,这样的代码简直就是灾难。
优化方法:
因为新闻是按id排序的,所以我们可以写一个方法。将当前新闻id作为传入参数。然后select的时候查询比当前id大的id并加上limit 1,然后返回所查询到的id。这样便能完美的解决问题了。
0 0
- 记录一次有关于实现新闻下一篇功能的代码优化
- HQL实现新闻上一篇下一篇
- 一篇有关于管理的文章
- 关于新闻的上一篇,下一篇
- ASP实现页面的“上一篇、下一篇”功能
- 一次sql优化的记录
- HQL语句实现新闻上一篇下一篇
- 第一篇有关代码的文字
- lookup第一篇:如何在salesforce增强lookup搜索功能,实现搜索所有可用记录和实现搜索同一对象下的all field
- 记录一次EasyUI 的treegrid优化实践
- 有关于cocos js的碰撞方法记录
- 有关于图片组合成视频的功能
- 有关于原创功能的一切问题,看这里就OK!
- java web(SSM框架)实现博客的上一篇、下一篇功能
- 新闻文章信息采集功能的实现
- ThinkPHP新闻点击量功能的实现
- 显示上一篇下一篇的代码
- 一次优化记录
- 1486. 统计数字
- leetcode414: Third Maximum Number
- ViewPager无限循环滑动+自动播放
- 课后知识点回顾九 集合1
- C++保留任意小数点后位数与格式化输出
- 记录一次有关于实现新闻下一篇功能的代码优化
- ROS学习报告
- PHP全局变量与超级全局变量区别分析
- 用 Flask 来写个轻博客 (2) — Hello World!
- Qt mysql 连接操作
- Ubuntu分区
- C语言单链表逆置
- 课后知识点回顾十 集合2
- jQuery过滤选择器——子元素过滤选择器