Я пытаюсь сортировать статьи по «Сегодня», «На этой неделе», «В этом месяце», «Все время». Дело в том, что мой запрос суммирует голоса из одной таблицы и получает статьи из другой таблицы, это делает запрос очень сложным для меня, и я не уверен, что я делаю это правильно.PhP order by today, week, month ... Не работает
Во всяком случае, у меня есть страница, как 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"));
Ничего из этого, похоже, не работает: DI не понимает, почему, по-моему, это должно быть, но чем я снова отношусь к php и mysql. Так может ли кто-нибудь предположить, что проблема здесь?
Моя структура базы данных поможет вам лучше понять систему.
истории стол
Голосов таблице
прежде чем вы запустите свой sql в своем скрипте, напечатайте переменную $ date на экран и посмотрите, что это за значение. затем попробуйте запустить это в phpmyadmin и посмотреть, является ли это проблемой php или sql. – ChelseaStats
также вы действительно хотите сравнить item_name (varchar) с id (int) ?? – ChelseaStats
ну, правильная дата верна, я повторил ее во всех случаях – Ilja