Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何按热门/热门职位订购_Php_Mysql_Sql_Sql Order By - Fatal编程技术网

Php 如何按热门/热门职位订购

Php 如何按热门/热门职位订购,php,mysql,sql,sql-order-by,Php,Mysql,Sql,Sql Order By,我有很多帖子: post_id(int(7)) user_id(int(7)) post_txt(text) post_time(varchar(30)) likes_count(int(10)) (发布时间如“5-4-2016 17:41”所示) 我想按“热门帖子”订购,例如“喜欢次数/发布时间” 我怎么做 我现在就是这样做的: $que_post=mysql_query("select * from user_post order by post_id desc"); 另外,我知道这

我有很多帖子:

post_id(int(7)) user_id(int(7)) post_txt(text) post_time(varchar(30)) likes_count(int(10)) 
(发布时间如“5-4-2016 17:41”所示)

我想按“热门帖子”订购,例如“喜欢次数/发布时间”

我怎么做

我现在就是这样做的:

$que_post=mysql_query("select * from user_post order by post_id desc"); 
另外,我知道这不是你通常储蓄的方式,但我这样做是有目的的

编辑示例数据:

97||25||Hello world||8-4-2016 14:19||19
我想使用的算法是time/likes。我知道它的算法很糟糕,但我只想了解基本知识。
我想知道您是否知道这方面的好算法

您应该将
post\u time
字段的类型更改为
DATETIME
(阅读)。 您的所有行都必须通过一些脚本转换为格式
YYYY-MM-DD HH:MM:SS
。当你这样做的时候,一切都会成功


您的问题出现的原因是按字母表作为文本排序。例如:2016年1月1日,因为文本小于1999年1月31日。

假设您可以将post_时间列转换为使用日期类型,则需要查找它与现在之间的秒数,例如

Order By like_count / (unix_timestamp(now()) - unix_timestamp(post_time)) Desc;

如果更改列类型不是一个选项,您可以使用str_to_date函数动态转换它,但这可能是一个相当缓慢的操作。

提供:(1)示例数据;(2) 预期结果;(3)你对“热门帖子”使用的规则。你所说的“喜欢次数/发帖时间”是指喜欢次数除以发帖时间吗?如果是这样的话,这似乎是一个糟糕的算法,因为这意味着更新的内容将不那么热门,而不是更热门。不要使用
mysql.*
它已被删除,不再工作,请使用
PDO
mysqli
。@Tom你说它已被删除是什么意思?好的,因此,只要你承认你的查询实际上会做与你想要的相反的事情,首先要做的就是按照@Andrewus的建议,把你的
post\u time
转换成你可以实际进行数学运算的东西。我已经构建了sql,但我会改变它。让我们假设它的数据时间,我现在怎么做?您可以添加字段
new\u post\u time
,并使用
STR\u TO\u DATE('8-4-2016 14:19','%m-%d-%Y%H:%I')进行更新,以将日期转换为正确的格式。