按今天,周,月的PhP订单......不工作

时间:2011-12-22 11:39:10

标签: php mysql date

我试图通过“今天”,“本周”,“本月”,“所有时间”对文章进行排序。问题是我的查询总结了一张桌子的投票,并从另一张桌子获取文章,这使我的查询变得非常复杂,而且我不确定我是否做得对。

无论如何,我有一个像http://web.com/top.php?time= 这样的页面“在这里”我使用以下代码根据用户选择的时间选择文章,而不是“一段时间这里“

$time = preg_replace('#[^a-z]#i', '', $_GET["time"]);

    if (!$time) { //Today
    $date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) = 1";
    }
    else if ($time == "Week") { //This Week
    $date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) <= 7";
    }
    else if ($time == "Month") { //This Month
    $date = "WHERE TO_DAYS(NOW()) - TO_DAYS(stories.st_date) <= 31";
    }
    else if ($time == "All") { //All Time
    $date = "";
    }
    else {
    header("Location: http://www.web.com/");
    exit;
    }

$sql = ("SELECT stories.*, SUM(votes.vote_value) as 'total_votes' FROM stories JOIN votes ON stories.id = votes.item_name ".$date." GROUP BY stories.id ORDER BY total_votes DESC LIMIT 10") or die (mysql_error("There was an error in connection"));

这些似乎都不起作用; D我不明白为什么,在我看来它应该,但是我再次对php和mysql相对较新。所以有人可以提出问题所在吗?

我的数据库结构可让您更好地了解系统。

故事表

enter image description here


投票表

enter image description here

2 个答案:

答案 0 :(得分:1)

从这里开始

熟悉PHP日期函数

答案 1 :(得分:1)

    SELECT stories.*, SUM(votes.vote_value) as 'total_votes' 
    FROM stories JOIN votes ON stories.id = votes.item_name 
    WHERE votes.item_name=$date 
    GROUP BY stories.id ORDER BY total_votes DESC LIMIT 10

或类似的,想想你想要实现什么,然后逻辑然后重写你的SQL查询 在phpmyadmin中,直到你把它输入php之前得到正确的输出。