[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Вывод текста в зависимости от даты
account032
В общем, есть 40 текстовых файлов, из которых рандомным образом делается вывод на главную страницу сайта, выглядит это всё примерно так:
$ran=rand(1,40);
echo readfile($ran.".txt");

Беда в том, что при каждом обновлении страницы текст меняется, а хотелось бы, чтобы текст менялся, скажем раз в день.
Думал привязать это к кукам... но не у всех они включены...
Киньте в меня идеей, пожалуйста.



Спустя 10 минут, 56 секунд (5.08.2012 - 09:22) vagrand написал(а):
Ну как варинат создавайте файл с именем равным текущей дате и сохраняйте в него рандомное значение на сегодня. А при каждом запуске проверяйте существует ли файл для сегодняшней даты и если да, то читайте из него число, а если нет то генерируйте.

Спустя 2 минуты, 13 секунд (5.08.2012 - 09:24) Stasonix написал(а):
Еще вариант можно вешать какой-то ярлык на файл, вроде active, только конечно продумать тогда надо, напр. хранить табличку файлов в БД. А у vagrand дей-но еще все проще.

Спустя 42 минуты, 6 секунд (5.08.2012 - 10:06) account032 написал(а):
До БД еще не добрался, так что попробую вариант уважаемого vagrand.
Позже отпишусь о результатах. Спасибо)

Спустя 49 минут, 40 секунд (5.08.2012 - 10:56) account032 написал(а):
И так, очередная проблема - пробую создать файл с именем из переменной посредством:

$dn=$d[mday];
$fp=fopen($dn . 'a.txt', 'w');

Вместо этого получается просто файл "a.txt". В чём проблема?

Спустя 53 минуты, 25 секунд (5.08.2012 - 11:49) pak написал(а):
$dn=$d['mday'];

Спустя 12 минут, 36 секунд (5.08.2012 - 12:02) johniek_comp написал(а):

$today = date("d");
$file = file_get_contents("/".$today.".txt");
echo $file;


если создашь файл 05.txt, он откроется если сегодня 5-е число

Спустя 56 минут, 35 секунд (5.08.2012 - 12:58) account032 написал(а):
Кажется я чего то не понял.
Так, попробую по другому расписать.
Я вижу это функцией, которая создаёт текстовый файл названный по сегодняшнему числу плюс буква "а", типа 5а.txt. Затем функция записывает в этот файл рандомное число от 1 до 40. А так же удаляет вчерашний файл, т.к. в нём надобности нет.
Еще раз приведу своё решение, только более развёрнутое:
$ran;
function crfile()
{
$fp=fopen($d[mday] . 'a.txt', 'w');
fclose($fp);
$dt=($d[mday]-1);
if(file_exists($dt))
{
unlink($dt);
}
$ran=rand(1,40);
}
if(file_exists($d[mday] . 'a.txt'))
{
$fop=fopen($d[mday] . 'a.txt', 'r+');
if($fop)
{
$text=$ran.'.txt';
fwrite($fop, $text);
}
$fname=readfile($d[mday] . 'a.txt');
echo readfile($fname);
fclose($fop);
}
else
crfile();


Но что-то мне уже подсказывает, что я всё делаю как-то не так....

Спустя 26 минут, 15 секунд (5.08.2012 - 13:25) pak написал(а):
мож лутше так?

$file = 'a.txt';
if(!file_exists($file) or date('j', filemtime($file)) !== date('j'))
{
file_put_contents($file, mt_rand(1, 40));
}
else
{
echo file_get_contents($file);
}

file_put_contents идентична функций fopen(), fwrite() и fclose().
filemtime показывает время последнего изменения файла
;)

Спустя 14 минут (5.08.2012 - 13:39) account032 написал(а):
Проблема была решена самым громоздким способом.
Для примера даю часть кода, думаю по ней будет всё ясно.
В index.php:
$dtg = date('D');
$pm = readfile($dtg.".txt");
echo readfile($pm.".txt");
include "rand.php";

В rand.php даю отрывок громадины)))):

$dtm = date("D");
switch($dtm)
{
case "Mon":
if(!file_exists('Mon.txt'))
{
$fp=fopen('Mon.txt', 'w');
fclose($fp);
$fop=fopen('Mon.txt', 'r+');
$text=rand(1,40);
fwrite($fop, $text);
fclose($fop);
}
if(file_exists('Tue.txt'))
{
unlink('Tue.txt');
}
if(file_exists('Wed.txt'))
{
unlink('Wed.txt');
}
if(file_exists('Thu.txt'))
{
unlink('Thu.txt');
}
if(file_exists('Fri.txt'))
{
unlink('Fri.txt');
}
if(file_exists('Sat.txt'))
{
unlink('Sat.txt');
}
if(file_exists('Sun.txt'))
{
unlink('Sun.txt');
}
break;
.... И так далее)))
Спасибо всём за помощь... Т.к. начал не давно, еще есть трудности с пониманием. Буду вникать в советы и совершенствовать творение...

Спустя 4 минуты, 46 секунд (5.08.2012 - 13:43) pak написал(а):
че та у тебя как-то всё сложно)

Спустя 32 минуты, 43 секунды (5.08.2012 - 14:16) account032 написал(а):
Сам понимаю.... это временное решение) Буду дальше ковырять в более спокойной обстановке...)
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.