通过降序排序主题(新主题和重放主题)

时间:2011-08-30 23:44:41

标签: php mysql

我正在构建一个主题的系统我使用这个mysql

CREATE TABLE `ftopics` (
  `id` int(11) unsigned NOT NULL auto_increment,
  `catid` int(11) NOT NULL,
  `userid` int(11) NOT NULL,
  `name` varchar(100) NOT NULL,
  `full` text NOT NULL,
  `date` varchar(100) NOT NULL,
  `hits` varchar(100) NOT NULL,
  `tags` varchar(255) NOT NULL,
  `lastrep` varchar(100) NOT NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM;

当成员为主题添加新重播时更新的列(lastrep)

$time=time();
$result = mysql_query("UPDATE ftopics SET lastrep='$time' WHERE id='$tid'") 
or die(mysql_error());  

好的,现在我想输出线程,我想在同一时间按顺序(id降序)和(lastrep降序)排序主题。

解释>>>>

当我发布一个新主题时,它会显示在输出的第一行,但是当另一个用户在另一个主题中发布重播时,它应该显示表输出中的第一个。

我用这个查询输出

$get_topics  = mysql_query("select id,catid,userid,name,date,lastrep from ftopics where catid='$catid' ORDER BY lastrep DESC, id DESC") or die(mysql_error());

我在第一行获得了新主题,但任何重播主题现在仍然会进入顶部。

我希望我能很好地解释我的问题。

问候 松树的

2 个答案:

答案 0 :(得分:0)

听起来你想在你的表中有两列,一列用于创建时间,一列用于修改时间。添加新回复时,“已修改”列将是您更新的列,但您可以使用“已创建”列进行排序,因此您的表始终按创建日期排序。

对不起,如果我误解了。

EDIT 你应该按照上面的建议将这些列设置为int / datetime,以便按照你的预期执行排序。

答案 1 :(得分:0)

MySQL有一个dateTime数据类型,用于date和lastRep列。然后更正插入并更新查询以输入正确的dateTimes。这可能会纠正排序问题,至少是你应该尝试的第一件事。