Получение события из базы данных за неделю заранее - PullRequest
1 голос
/ 24 февраля 2009

В настоящее время я занимаюсь разработкой спортивного веб-сайта, где одна из страниц с предстоящими матчами будет доступна для пользователя, с какой командой и где команда будет проводить свой следующий матч.

У меня есть база данных со следующими полями ...

  • ID
  • номер команды
  • ОППОЗИЦИЯ
  • 1012 * МЕСТО *
  • ДАТА
  • ВРЕМЯ ВСТРЕЧИ
  • ТИП МАТЧА

Таким образом, ряд данных, извлеченных из БД и print_r'd, может выглядеть следующим образом

ID => [1] КОМАНДНЫЙ НОМЕР => [1] ОППОЗИЦИЯ => [ЙОРКШИР] МЕСТО => [ГЛАВНАЯ] ДАТА => [2009/4/25] ВРЕМЯ ВСТРЕЧИ => [13.00] МАТЧА ТИПА => [ CUP]

Моя проблема в том, что я не могу понять, как показать следующий матч в зависимости от текущей даты, поэтому, например, сейчас я хочу, чтобы сайт показывал все игры, которые состоятся в течение недели 25 апреля 2009 года, и затем, как только это закончится, на следующие выходные.

Надеюсь, это имеет смысл, и кто-то подскажет мне, как с этим справиться.

Ответы [ 6 ]

2 голосов
/ 24 февраля 2009
select * from my_events where date between now() and date_add(now(), interval 7 day);

Должен ли я сделать это, я думаю.

0 голосов
/ 24 февраля 2009

Вместо того, чтобы полностью полагаться на MySQL, вы также можете использовать PHP-функцию strtotime ():

$query = "select * from my_events where date between now() and ".
date("Y-m-d", strtotime("+1 week"));
0 голосов
/ 24 февраля 2009

Ваше описание очень модно, но попробуйте что-то вроде этого:

SELECT all_fields_you_need
FROM table_name
WHERE `DATE` > CURDATE() AND `DATE` <= DATE_ADD(CURDATE(), INTERVAL 7 DAY)
ORDER BY `DATE` ASC

(не проверено, просто написано так, как мне пришло в голову ...)

Загрузить все это в массив и отобразить данные

0 голосов
/ 24 февраля 2009

Для MySQL проверьте функции Дата и время . Вы можете использовать комбинацию CURDATE () и ADDDATE () для достижения того, что вам нужно.

0 голосов
/ 24 февраля 2009

Чтобы получить следующий матч для команды ххх

SELECT * 
FROM   myTable
WHERE  TEAM NUMBER = xxx
AND    DATE = ( SELECT MIN(DATE) 
                FROM   myTable
                WHERE  TEAM NUMBER = xxx
                AND    DATE        > NOW() ) 

Я подозреваю, что это то, чего вы действительно хотите, если матчи проводятся только в выходные дни (что, по-видимому, является предположением из вашего вопроса). Сегодня + 7 дней - это не то же самое, что на следующих выходных, если только сегодня не совпадает день недели с матчем.

0 голосов
/ 24 февраля 2009

Вы можете получить системную дату (в Oracle, используя sysdate), а затем добавить к ней, поэтому ищите все записи, где DATE = sysdate + 7. Возможно, вам придется немного поиграть с этим, отформатировав дату так, чтобы sysdate + 7 возвращал дату без времени, но это в основном то, что вам нужно.

EDIT:

Если вы хотите, чтобы событие проходило с настоящего момента до недели (если игры только на выходных, то это вернет игры на следующих выходных), выполните

DATE > sysdate AND DATE <= sysdate + 7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...