Мне необходимо, чтобы каждый день выводилась случайная запись из mysql, но раньше, чем наступит следующий день, нельзя узнать о следующей записи из mysql. Я думал сделать ячейку в таблице mysql, где хранить дату последнего дня, а потом сравнивать, и если нынешняя дата больше записанной, выводит другую запись и заменяем дату. Но мне показалось это решение некрасивым, как можно сделать его лучше?
почитайте про rand seed. функции псевдослучайных чисел можно инициировать так, чтобы они выдавали всякий раз одну и ту же последовательность. в вашем случае сидом может быть текущая дата.
В таком случае помогите найти информацию о rand(seed) или как правильнее написать? Я не знаю английского и не знаю, как пользоваться этим.
вот вам готовое решение. за очепятнки не ручаюсь, отлаживайте Код (PHP): define('SECONDS_IN_A_DAY', (60*60*24)); $today = intval(time() / SECONDS_IN_A_DAY) * SECONDS_IN_A_DAY; // это всего лишь дата "сегодня" в UNIX TIMESTAMP srand($today); // каждый день новая последовательность $result = mysql_query("SELECT max(id) FROM mytable"); $max = mysql_result($result); // в каком диапазоне нужно случайное значение $id = rand(1, $max); $result = mysql_query("SELECT * FROM mytable where id >= {$id} LIMIT 1"); // трюк с >= и limit позволит нам не думать о "дырках" в нумерации $row = mysql_fetch_assoc($result); // BINGO!
очепятка в mysql_result есть я думаю справитесь. что можно улучшить: очевидно если в течении дня эта процедура выдает одно и то же значение $row, то его можно и нужно кешировать. но это уже другая история…