| |
автор: Dagry (24.06.2006 в 14:35) |
|
| | Как реализовать постраничную навигацию по ФАЙЛАМ, а не по строчкам в файле. | |
| |
|
|
| |
|
|
| |
для: Dagry
(24.06.2006 в 14:35)
| | | Для этого нужно прочитать файлы в массив (используя связку opendir() и readdir()) и воспользоваться скриптом по ссылке http://www.softtime.ru/scripts/pager.php, где описывается постраничная навигация для массива. | |
| |
|
|
| |
автор: Dagry (24.06.2006 в 18:36) |
|
| |
для: cheops
(24.06.2006 в 16:19)
| | | Что никак не получается:
<?
$data = opendir("data");
while($file = readdir($data))
{
if($file != "." and $file != "..")
{
$a_file[] = $file;
}
}
?>
Прочёл имена файлов в массив $a_file[].
Потом Делаю:
<?
foreach($a_file as $filename)
{
$filename = "data/".$filename;
---Тут код из статьи
}
?>
Что дальше, или я не так начал?
И чёто мне кжется странным строчка preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U", $bufer, $out, PREG_PATTERN_ORDER); | |
| |
|
|
| |
|
|
| |
для: Dagry
(24.06.2006 в 18:36)
| | |
function textpart($text) {
$number = @$_GET['number'];
#$newtext = wordwrap($text, 200, "[page]\n");
$str = explode("[page]",$text);
// Выясняем сколько страниц
$count = count($str);
//Выводим страницу
empty($number) ? $number = 0 : $number < 0 ? $number = 0 : "" ;
echo $str[($number)];
if($number !=($count-1) and $number != 0) {
echo " [<a href='".($number+1)."'>...</a>]";
}
echo "<br/>";
// Если текущая страница первая, то выводим продолжить
if($number == 0 and count($str) > 1) {
echo "<br/><a href='".($number+1)."'>[Читать дальше...]</a> <br/>";
}else{
// Проверяем текущая ли это страница
for ($i=1;$i<$count;$i++) {
if($i == $number) {
if($i == ($count-1) and $count > 2) {
echo " <b>[$i]</b>";
echo " <a href='".($count-$i)."'> в начало</a>";
}elseif($i == ($count-($count-1))and $count > 2){
echo " <a href='".($count-1)."'>в конец </a>";
echo " <b>[$i]</b>";
}elseif($i == $number) {
echo " <b>[$i]</b>";
}
}else{
echo " <a href='$i'>[$i]</a>";
}
}
}
}
|
В textpart надо добавить текст.
Если в текст есть тег [part] то это будет страница.
Вообщем ожет поможет. | |
| |
|
|
| |
автор: Dagry (24.06.2006 в 21:01) |
|
| |
для: AKIRA
(24.06.2006 в 19:02)
| | | Вот немножко разобрался, посмотрите пожалуйсто, так как у меня проблемы:
<?php
//-Код массива файлов в папке, который выводит $a_file//
$pnumber = 2; // Число позиций на странице
// Проверяем передан ли номер текущей страницы
if(isset($_GET['page'])) $page = $_GET['page']; else $page = 1;
// Число страниц
$total = count($a_file);
$number = (int)($total/$pnumber);
if((float)($total/$pnumber) - $number != 0) $number++;
$start = (($page - 1)*$pnumber + 1); // ((1 - 1)*2 + 1)=1
$end = $page*$pnumber + 1;
if($end > $total) $end = $total;
// Выводим содержимое страниц
for($i = $start; $i < $end; $i++) //Начинает с 1($start=1) а мне то надо с 0
{
//Код вывода текса из файлов
}
?>
|
Ну так вот проблема в том что начинается цикл for с 1. А мне надо с 0. | |
| |
|
|
| |
автор: Dagry (24.06.2006 в 21:50) |
|
| |
для: Dagry
(24.06.2006 в 21:01)
| | | Ну короче нашёл причину роблемы:
Надо удалить "+1" в этих двух строчках.
$start = (($page - 1)*$pnumber + 1);
$end = $page*$pnumber + 1; | |
| |
|
|
| |
автор: Dagry (24.06.2006 в 22:34) |
|
| |
для: Dagry
(24.06.2006 в 21:50)
| | | Опять проблема!
Мне нужно чтобы последние сообщение было на верху, файлы я сохраняю по дате, а потом сортирую массив arsort($a_file); Но при этой конструкции не происходит сортировка, что посоветуете??? | |
| |
|
|
| |
автор: Dagry (24.06.2006 в 23:05) |
|
| |
для: Dagry
(24.06.2006 в 22:34)
| | | Такое ощущение что сам с собой разговариваю.
Нашёл как сортировать, надо через rsort($a_file); | |
| |
|
|