Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Постраничная навигация по файлам
 
 автор: Dagry   (24.06.2006 в 14:35)
 
 

Как реализовать постраничную навигацию по ФАЙЛАМ, а не по строчкам в файле.

   
 
 автор: cheops   (24.06.2006 в 16:19)   письмо автору
 
   для: 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);

   
 
 автор: AKIRA   (24.06.2006 в 19:02)   письмо автору
 
   для: 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);

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования