如何在PHP中实现一个基本的“最受欢迎帖子”脚本?

3

似乎很少有关于如何编写PHP脚本以显示“最受欢迎”的帖子的教程。我找到了一些定制的WordPress脚本,但是都无法让我使用。其余的是针对程序员的最流行的PHP脚本。

我有一个名为news的表,其中包含字段id,count,timestamp,headline,img,text。 我想获取过去一周内最受欢迎的5篇文章,只显示数字和标题。

我该怎么做?


没问题,你只需要在存储所有浏览量的MySQL表中加1,然后在每次页面加载时获取前面几个进行展示。 - Alasdair
好的,当然可以 :) 只需要使用 ORDER BY count DESC ... 当查看者打开 news_id.php 时,它会将计数字段加上 +1 吗? - Ingþór Ingólfsson
听起来很合适(或者你可以把它放在另一个查找表中)。然后你可以使用 LIMIT 0, 5,这样你只会得到五个结果。 - Jared Farrish
1
“Sample code”(示例代码)比仅有英文描述现有解决方案部分更加有用。对于MySQL(一种关系型数据库管理系统),这意味着使用“CREATE TABLE”语句提供表结构,使用“INSERT”语句提供样本数据。如果您在实施特定解决方案的过程中遇到了问题并寻求帮助,您将获得更有用的回复。我们在这里为帮助你,而不是替你完成工作。 - outis
添加一个字段来存储点击次数,然后按照该字段进行降序排序,你就可以得到最受欢迎的帖子。 - Balaji Kandasamy
显示剩余2条评论
2个回答

6

这将会抓取最近一周内计数值最高的5条记录count

$sql = "
SELECT * 
FROM newsTable 
WHERE timestamp > DATE_SUB(curdate(), INTERVAL 1 WEEK) 
ORDER BY count DESC 
LIMIT 5
";

编辑

一种简单的方法是将计数字段增加1并更新时间戳。

$sql = "
UPDATE yourtable 
SET count = count + 1, 
timestamp = NOW()
WHERE id = " . $post_id

LIMIT 5LIMIT 0, 5LIMIT 5 OFFSET 0 是等价的。 - ypercubeᵀᴹ
是的,像0.5这样。嘿,太酷了,这个可以用 :) 但是我手动在“count”的某些行中插入了数字...但是文章页面上的脚本如何将+1添加到该字段? - Ingþór Ingólfsson
@ypercube - 我可能误读了文档,但它指出如果没有使用OFFSET关键字,则offset是第一个:http://dev.mysql.com/doc/refman/5.1/en/select.html(我在想我是否误读了它...) - Jared Farrish
@ypercube - 没关系,我刚刚确认它们是等价的。我误解了文档。 - Jared Farrish
@Ingpor - 我添加了一个SQL语句,将根据给定的帖子ID增加您的计数并更新时间戳。 - Pastor Bones

1

首先你需要做的是添加一个 count (或 hits)列:

ALTER TABLE news ADD count INTEGER

然后每当您显示新闻时,增加相应的计数:

UPDATE news SET count = (count+1) WHERE id = X

然后只需显示最受欢迎的新闻:

SELECT * FROM news WHERE timestamp > DATE_SUB(curdate(),INTERVAL 1 WEEK) ORDER BY count DESC LIMIT 5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接