Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2012, 12:34   #1
mazay66
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 4
Вопрос Вывод информации из текстового файла на несколько страниц

Есть текстовый файл, содержащий строки:
index.db
Цитата:
первая строка
вторая строка
....
последняя строка.
Есть скрипт, публикующий эти строки в файл:

PHP код:
$fh file("index.db");
for (
$i count($fh); $i>0$i--)
{
$stroki $fh[$i-1];
$open=fopen("index.php","w");
fwrite($open$stroki);
}
fclose($open); 
Надо, чтобы в файле index.php строк было не больше заданного значения, а остальные строки, записывались бы в файл index1.php , index2.php в количесте не превышающим заданное.

Поскольку, на этапе формирования страниц, скрипт уже будет знать, сколько их будет, то возможно ли в каждый файл прибавлять ссылки на остальные страницы:
PHP код:
<strong>страницы:</strong>
<
span>01</span>
<
a href="index2.php">02</a
mazay66 вне форума Ответить с цитированием
Старый 25.04.2012, 12:45   #2
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Есть объективные причины, по которым вы не используете Базы Данных - а предпочитаете извращаться с файлами?
Andkorol вне форума Ответить с цитированием
Старый 25.04.2012, 12:51   #3
mazay66
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

Моя любимая CMS работает на файловой базе, может я и извращенец, но я к файлам как-то уже привык.
mazay66 вне форума Ответить с цитированием
Старый 25.04.2012, 13:16   #4
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Ваш скрипт должен проверять файлы в директории - и получать для записи файл с наибольшим индексом (напр. в директории есть index.php, index1.php, index2.php - для записи получаем именно index2.php) - readdir или scandir.
Затем ваш скрипт должен узнать кол-во строк в файле - file + count.
Если строк в текущем файле менее установленного лимита - осуществляем запись в этот файл.
Если строк == лимит - создаем новый файл, и производим запись в новый файл.

Что касается постраничной навигации - ничего в файлы прописывать не нужно.
Нужно просто проверять кол-во файлов в директории (readdir или scandir) - это и есть кол-во страниц, ну и ссылки делать на эти файлы в процессе этой же проверки.

Но лучше перейти на использование MySQL, например - там всё это сделать гораздо быстрее и проще.
Andkorol вне форума Ответить с цитированием
Старый 25.04.2012, 16:57   #5
mazay66
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

Немного не так.
Файлы index.php, index1.php, index2.php и пр. создаются динамически, в зависимости от количества строк в файле index.db , причем первая строка на первой странице index.php, должна быть последней добавленной в файле index.db.
Примерно так:
первый способ
PHP код:
$fh file("index.db");
for (
$i count($fh); $i>0$i--)
{
$stroki $fh[$i-1];
$open=fopen("index.php","w");
fwrite($open$stroki);
}
fclose($open); 
второй способ
PHP код:
echo "<br>Второй способ <br> ";
$fh array_reverse($fh);
for (
$i=0$i<count($fh); $i++)
{
$stroki $fh[$i-1];
$open=fopen("index.php","w");
fwrite($open$stroki);
}
fclose($open); 
количество строк подсчитывается так:
PHP код:
$strcount($fh);
echo 
"Количество строк в файле: ".$str
Цитата:
Если строк == лимит - создаем новый файл, и производим запись в новый файл.
Вот тут та и заковырка, как сделать, чтобы скрипт в файле index1.php прописал, пусть, 10 строк с конца, в файле index2.php - следующие 10, а в последнем index.php - оставшиеся.

Подразумеваю, что это делается через цикл, где скрипт, исходя из кол-ва строк в файле index.db , будет знать, сколько страниц надо сделать. Примерно так:
PHP код:
$max 10# сколько строк (не более) должно быть на странице
$linescount($fh); # сколько всего строк в базе
$page ceil($lines $max); # сколько делать страниц 
mazay66 вне форума Ответить с цитированием
Старый 25.04.2012, 17:18   #6
Andkorol
Старожил
 
Регистрация: 31.05.2010
Сообщений: 3,301
По умолчанию

Зачем вообще создавать файлы index.php?
Можно же просто на странице выводить только определенные строки из index.db, в зависимости от того, какая страница сейчас отображается.
Или ваш файл index.db имеет огромный размер?
Andkorol вне форума Ответить с цитированием
Старый 25.04.2012, 18:40   #7
mazay66
Новичок
Джуниор
 
Регистрация: 25.04.2012
Сообщений: 4
По умолчанию

Возможно и такое, если это сильно упростит код.
Все примеры, что я смог найти, используют конструкцию index.php?p=1 подачи запросов, а мне нужно именно index1.php .

На ум приходит только мысль, что создаваемые страницы будут обращаться к index.db и в зависимости от своего порядкового номера показывать по 10 нужных строк.
PHP код:
$page = ($max 4); # пусть это будет страница index4.php
$fh file("index.db");
$max 10# сколько строк (не более) должно быть на странице
$fh array_reverse($fh);
for (
$i=0$i<$max$i++) echo $fh[$i+$page]; 
Тогда вполне очевидно, что 95 строк из файла index.db разместятся в файлах index0.php - index9.php .
А вот как изобразить цикл, который на основании количества страниц будет лепить эти файлы - что-то не соображу.
mazay66 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Отображение информации из текстового файла с сайта в ListBox ZverBlin Общие вопросы Delphi 1 08.08.2011 22:40
чтение из текстового файла в структуру TRAIN и вывод информации по запросу (Паскаль) Arabic_Coffee Помощь студентам 0 14.05.2011 21:11
Использование информации из текстового файла.. hen Общие вопросы Delphi 10 22.05.2010 13:10
[Lazarus\Delphi] Использование информации из текстового файла.. hen Lazarus, Free Pascal, CodeTyphon 1 19.05.2010 22:44
Вывод в несколько страниц BloodWizard PHP 8 15.05.2010 14:48