Я хочу показывать цитату на своем сайте на ежедневной основе. через 24 часа он должен измениться. цитаты хранятся в базе данных MySQL. как я могу сделать это с помощью PHPКак показывать цитату в течение 24 часов
Благодаря
Mathew
Я хочу показывать цитату на своем сайте на ежедневной основе. через 24 часа он должен измениться. цитаты хранятся в базе данных MySQL. как я могу сделать это с помощью PHPКак показывать цитату в течение 24 часов
Благодаря
Mathew
Как о чем-то вдоль линий, используя следующие:
quotes
------
quote_id
..
.
quote_rota
----------
quote_rota_id
quote_id
date_shown
Затем с помощью запроса, такие как следующие, чтобы получить случайную цитату, что не один из последних 7 цитат, которые были отображается:
SELECT * FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then store in quote_rota
Если сохранить результат в файл, который заполняется по CRON задания/задачи по расписанию, то вы могли бы это длится до тех пор, как вы хотите (например, 24 часа, 7 дней, 1 час, е tc)
В качестве альтернативы вы можете добавить столбец в таблицу котировок, чтобы указать, что это «текущая» цитата (например,активный), а затем использовать:
SELECT quote_id FROM quotes WHERE id=(
SELECT FLOOR(MIN(quote_id)+(RAND()*MAX(quote_id))
FROM quotes
) AND quote_id NOT IN (
SELECT quote_id FROM quote_rota ORDER BY date_shown DESC LIMIT 7
) LIMIT 1;
// process and retrieve quote_id then update "current" flag
Запланировать эту задачу так часто, как требуется, а затем использовать что-то вроде следующего, чтобы получить цитату:
SELECT * FROM quotes WHERE active = 1
Самый простой способ будет хранить день цитата, как предполагается, будет показан на сайте в качестве столбца в таблице MYSQL, а затем сделать запрос для этой конкретной цитаты, как
$query = "SELECT * FROM quotes WHERE date = CURDATE();";
, если вы не храните дату в базе данных, она становится все более трудным и сложным - вы должны показывать случайные записи, но следить за который был показан один когда такая же цитата не возникает дважды подряд цессии. Все выполнимо, но возможно более сложное, чем необходимо.
Возможно, можно было бы использовать какой-то механизм хеширования для определения отображаемой цитаты? Просто определите способ сопоставления даты с уникальной записью кавычек. –
@ Будет хорошая идея! Можно определить начальную точку (например, today = row 1) и подсчитать дни с этой точки. 30-й день будет 30-й, 31-й день 31-й и т. Д. –
Вам необходимо настроить вкладку cron с сервером, который работает каждые 24 часа. Однако настройка его зависит от того, какой у вас сервер. http://en.wikipedia.org/wiki/Cron для получения дополнительной информации о cron. ЕСЛИ вы используете cPanel, вам может помочь www.upstartblogger.com/how-to-create-a-cron-job-in-cpanel.
Много способов.
Одним из способов может быть наличие еще двух столбцов в таблице кавычек «isdisplayed» и «displaywhen».
Используя эти 2 дополнительных поля, вы можете отслеживать, какая котировка отображается и как долго она отображается.
Если вы не хотите использовать какое-либо решение кэша, и вы не хотите, чтобы прикрепить дату будущего использования для каждой цитаты, вы можете сделать что-то вроде:
SELECT id, quote FROM quotes WHERE date_used = NOW();
если это возвращает нуль, сделать что-то вроде:
$count = SELECT COUNT(*) FROM quotes WHERE date_used = '0000-00-00'
принести количество неиспользованных кавычек, затем выберите одну цитату случайно:
$rand = rand (0, $count);
$quote = SELECT id, quote FROM quotes WHERE date_used = '0000-00-00' LIMIT $rand, 1
UPDATE quotes SET date_used = NOW() WHERE id = $quote['id']
Вопрос в том, что у меня есть две таблицы, заполненные кавычками, а другая пустая. когда я вызываю команду для отображения квот, тогда она должна вставить во вторую с текущей датой и временем. каждый раз, когда загружается страница, она должна проверять время по сравнению с сохраненным. Когда время переполняется данными во второй таблице, необходимо обновить другое с новой датой и временем. что ты думаешь?? – mathew
Если у вас есть набор котировок, вы можете использовать модуль для обеспечения того, чтобы разность между текущей датой и контрольной датой попадала в диапазон количества котировок в вашей таблице db.
SELECT *
FROM `quotes`
WHERE id = DATEDIFF(CURDATE() , '2010-05-01') MOD (SELECT COUNT(*) FROM `quotes`)
ли они удаляются после 24 часов? или их можно использовать повторно? –
да, это в отдельной таблице – mathew
, которая не отвечает ни на вопрос @ Рассела: D –