Strict Standards: Resource ID#28 used as offset, casting to integer (28) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#30 used as offset, casting to integer (30) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#31 used as offset, casting to integer (31) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Версия для печати :: Вывод текста из большого числа файлов
ТвойWeb » WebMaster класс » PHP/Perl » Вывод текста из большого числа файлов

Страниц (1): [1]
 

1. UFO - 11 Января, 2009 - 10:14:43 - перейти к сообщению
Привет!

Допустим есть бесконечное число файлов с именами в виде NN.php, где NN - число от 1 до бесконечности. В каждом файле записано по две строки. Необходимо вывести текст из всех этих файлов, но разбить постранично. Т.е. если текущая страница главная или первая, то выводим текст из последних 20 файлов с наиболее большими номерами. Причем, наиболее крупные номера всегда сверху, а меньшие ниже по убывающей. Если страница вторая, то выводим следующие 20 файлов. Также стоит учесть, что бывают и последние страницы, когда нужно не просто вывести первые 20 файлов, а столько, сколько там остается из невыведенных. Вывод оформляется в таком виде:
CODE:
list($str1,$str2)=array_map('trim',file("files/$i.php"));
echo "<div align=center><font size=1>";
echo $str1;
echo "<div></font>";
echo "<p>";
echo $str2;
echo "</p>";
echo "</center>

Как все остальное сделать - не знаю.
Может кто поможет? Однако Улыбка

P.S. Если значение цифры "бесконечность" будет необходимо как-то представить, то, думаю, 1000 вполне хватит.
2. Furax - 12 Января, 2009 - 00:40:41 - перейти к сообщению
Список файлов можно получить функцией glob():
CODE:
$files=glob('dir/*.txt');
Количество элементов в полученном массиве даётся функцией count:
CODE:
$filesNumber=count($files);
Дальше, вроде бы, очевидно...
3. UFO - 13 Января, 2009 - 14:05:55 - перейти к сообщению
Спасибо, Furax. В принципе дальше все понятно. Тут очевидно, что надо использовать циклы. Я не особо в них силен, поэтому пока не могу понять как быть с последней страницой, где надо вывести не 20 текстов файлов, а просто все, что осталось. И еще хотелось бы к этому всему привязать, что данные о номере страницы передаются запросом GET, т.е. через строку адреса.
4. Furax - 13 Января, 2009 - 22:00:33 - перейти к сообщению
CODE:
$filesPerPage = 20;
$pages = ceil($filesNumber/$filesPerPage); //Количество страниц

$page = @(int)$_GET['page'];
if ($page < 1 || $page > $pages) //Неверный номер страницы передан
$page = 1;

$begin = ($page-1)*$filesPerPage; //Первый файл на странице
$end = min($page*$filesPerPage, $filesNumber)-1; //Последний файл на странице

for ($file = $begin; $file<=$end; ++$file) //В цикле обрабатываем все файлы на странице
{
$content = file("$file.php"); //Содержимое файла
...
}
5. UFO - 23 Января, 2009 - 04:24:49 - перейти к сообщению
Furax, большое спасибо. Пришлось немного повозиться, ибо твой код не совсем правильно работает (он выводит последний файл, а дальше все подряд, начиная с первого). Вообщем, перекроил, сделал еще чтоб номера страниц и ссылочки на них были Улыбка Но твой код реально помог Подмигивание Еще раз спасибо Хорошо

Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0337]     [ Gzipped ]