Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > показывать файл за файлом


Автор: Belov 25.7.2009, 23:04
в индексе, в определенном месте стоит

include('folder/file1.php');

в этой же папке еще пять файлов file2.php, file3.php, file4.php, file5.php, file6.php

как прописать код чтобы через 30 дней показывался file2.php, а еще через 30 дней - file3.php и так далее, с учетом того что
через 150 дней будет показываться опять file1.php, если к тому времени не появится file7.php и file8.php.., и так по кругу?

заранее спасибо

БЕ


Автор: Photon 25.7.2009, 23:35
Во-первых записываем индекс и дату начала действия текущего файла (serialize?) в текстовый файл..
Потом проверяем, что интервал времени достаточен для смены файла, получаем список файлов, упорядочиваем его, затем:
Код

$index = ($index != count($file_arr))?$index+1:1;
$file = $file_arr[$index-1];

ну и записываем новый индекс и дату начала действия в тот же текстовый файл с перезаписью

Автор: Belov 26.7.2009, 00:13
Спасибо за ответ... Эх нет, думал будет проще, я пожалуй не смогу этого сделать сам... зелен!

Автор: Photon 26.7.2009, 14:47
Ну что тут делать?
Код

// param $folder путь к нужной папке от корня сайта (например getCurFile('folder'); или getCurFile('include/temp');
function getCurFile($folder) {
    if (substr($_SERVER['DOCUMENT_ROOT'],strlen($_SERVER['DOCUMENT_ROOT'])-1) == '/')
        $main_dir = substr($_SERVER['DOCUMENT_ROOT'],0,strlen($_SERVER['DOCUMENT_ROOT'])-1);
    else
        $main_dir = $_SERVER['DOCUMENT_ROOT'];
    if (!file_exists($main_dir.'/'.$folder.'/settings.txt')) {
     $index = 1;                                    
     $file = $main_dir.'/'.$folder.'/file'.$index.'.php';
    }
    else {
     $file = file_get_contents($main_dir.'/'.$folder.'/settings.txt');
     $data = unserialize($file);
     if ($data['time'] + 60*60*24*30 < time()) {
            $index = $data['index'] + 1;
            $dir = opendir($main_dir.'/'.$folder);
            $files = array();                  
            while($file = readdir($dir)) {
             if ($file != '.' && $file != '..' && $file != 'settings.txt')
                 $files[] = $file;
            }         
            closedir($dir);
            natsort($files);
            if ($count($files) > $index)
                $file = $main_dir.'/'.$folder.'/'.$files[$index-1];
            else {
                $file = $main_dir.'/'.$folder.'/'.$files[0];
                $index = 1;
            }
    }
    $time = time();
    $fh = fopen($main_dir.'/'.$folder.'/settings.txt', 'w');
    $data = array('index'=>$index, 'time'=>$time);
    fwrite($fh, serialize($data));
    fclose($fh);
}
include(getCurFile($folder));


Где-то как-то так.. smile

Автор: Belov 27.7.2009, 01:19
Ну не знаю даже что сказать. Плюс не могу... Может WMZ?
Спасибо большое! Если что пишите в личку... 

Автор: MoLeX 27.7.2009, 06:23
Цитата(Belov @  27.7.2009,  01:19 Найти цитируемый пост)
Плюс не могу...

поставим

Автор: Belov 27.7.2009, 07:00
Спасибо MoLeX! Вы настоящий Пингвин!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)