2017-02-02 2 views
0

Я использую Dreamweaver CS5 и MySQL. У меня был подобный разговор об этом на предыдущем посте здесь:SQL-запрос Один раз в день в последовательном идентификационном порядке

Randomly Displayed Text

Запрос Я использую из этого обсуждения:

select description from Weather 
where ID = 1 + MOD(
    (EXTRACT(DAY FROM CURDATE()) 
    * EXTRACT(MONTH FROM CURDATE()) 
    * EXTRACT(YEAR FROM CURDATE())), 
(select MAX(ID) from Weather)); 

Я работаю над добавлением новой функции в свой веб-сайт , У меня с трудом удается изменить запрос, вместо того, чтобы случайно выбирать идентификатор из таблицы, которую я хочу запросить в последовательном порядке, после того, как вы достигли максимального ID, вернувшись к ID 1. Я использую уникальные идентификаторы для этого SQL базы данных и будет 28 строк.

Любая помощь была бы замечательной! Спасибо!

Update ****

Это работает, только если я вручную изменить дату сегодня 2017-02-02:

SELECT description 
FROM `Moon` 
WHERE ID = 1 + MOD(DATEDIFF('2017-01-01',CURDATE()), (SELECT MAX(ID) from `Moon`))"; 

<script type="text/javascript"> 
setInterval("my_function();",100000); 

function my_function(){ 
    $('#weather').load('website.php #today'); 
} 
<div id="weather"> 
       <div id="today"> 
       <?php echo ucfirst($row_Recordset2['description']); ?> 
       </div> 
       </div> 

Я использую .load для обновления данных каждые 24 часа , Как исправить это, поэтому мне не нужно вручную обновлять дату?

+0

Вы должны следить за то, что была последняя строка, возвращенная. В противном случае нет способа указать, какую строку вам нужно возвращать дальше. – bc004346

+0

SQL не моя сильная сторона, я медленно учил себя, как ее использовать. У вас есть пример того, как это будет выглядеть с учетом строки, которую я уже использую? – Cyndi

+0

Вы пытаетесь повернуть «текст» ежедневно или по каждому запросу? Я предполагаю, что запрос выполняется несколько раз в день. – bc004346

ответ

1

Попробуйте это:

SELECT text 
FROM WeatherTexts 
WHERE ID = 1 + MOD(DATEDIFF('2017-01-01',CURDATE()), (SELECT MAX(ID) from WeatherTexts)); 
+0

К сожалению, это не возвращает никаких данных из таблицы. $ query_Recordset2 = "SELECT description FROM' Moon "WHERE ID = DATEDIFF ('2017-01-01', CURDATE())% (SELECT MAX (ID) от" Moon') + 1 "; – Cyndi

+0

Если я изменил дату на 2017-02-02, она отобразит данные из таблицы. Но если какая-либо другая дата не возвращает данные. – Cyndi

+0

Попробуйте мое редактирование; вроде бы трудно работать без установленного экземпляра MySQL – bc004346

1

Возьмите количество дней с фиксированной датой, а затем MOD 28

SELECT text 
FROM WeatherTexts 
WHERE ID = DATEDIFF(day,'2017-01-01',CURDATE()) % (SELECT MAX(ID) from WeatherTexts) + 1 
+0

Это предполагает ежедневное чередование текста; из вопроса, похоже, она хочет получить другой текст по каждому запросу. – bc004346

+0

Ahh, то да, какая-то сохраненная переменная является требованием. – Mike

+1

Это мое плохое объяснение, мне жаль BC. Я думаю, Майк может иметь то, что мне нужно здесь. Все уже настроено на каждый 24-часовой период, что отлично, до тех пор, пока он делает новый запрос один раз в день и отображает следующий идентификатор в последовательном порядке. Будет ли это также возвращаться к ID 1, как только он достигнет 28-го дня? Текст, который я хочу отобразить, уже содержится в базе данных, я просто покажу его на веб-сайте. Я хочу, чтобы он обновлялся на 24-часовом таймере со следующей строкой, пока он не дойдет до конца и не начнется. – Cyndi

Смежные вопросы