Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Постраничный вывод из файла

1.9K
12 июля 2004 года
SumroK
49 / / 18.09.2003
Как организовать постраничный вывод новостей из файла.

Одна строка в файле=одной новости...
вот код, который выводит все новости на одной странице:

Код:
$file = file($ndata);
$file = array_reverse($file);
Error_Reporting(E_ALL & ~E_NOTICE);
for ($i = 0; $i < count($file); $i++)
{
 $mess = explode("|",$file[$i]);
 echo "".$mess[1]."

"
;
 echo "[size="1"]Написал: ".$mess[0]." @ ".$mess[2]."[/size]<HR size=1 noshade color=#FF9900 width=300 align=left>
"
;
}
3.2K
12 июля 2004 года
triptyl
30 / / 16.06.2003
Цитата:
Originally posted by SumroK
Как организовать постраничный вывод новостей из файла.

Одна строка в файле=одной новости...
вот код, который выводит все новости на одной странице:

Код:
$file = file($ndata);
$file = array_reverse($file);
Error_Reporting(E_ALL & ~E_NOTICE);
for ($i = 0; $i < count($file); $i++)
{
 $mess = explode("|",$file[$i]);
 echo "".$mess[1]."

"
;
 echo "[size="1"]Написал: ".$mess[0]." @ ".$mess[2]."[/size]<HR size=1 noshade color=#FF9900 width=300 align=left>
"
;
}




Щас попробуем...

Код:
$file = file($ndata);
$file = array_reverse($file);

$step = 5 // количество сообщений на странице

// вычисляем номера страниц
$allpages = floor ( count ( $file ) / $step ) + 1;

isset ( $HTTP_GET_VARS [ "page" ] )
? $page = 0
: $page = $HTTP_GET_VARS [ "page" ];

if (! ( ( $page > 0 ) && ( $page < $allpages) ) ){ // входит ли страница в диапазон допустимых
  $page = 1;
}  


// $page - номер страницы

for ($i = $page * $step; $i < $page  * $step + 5; $i++)
{
 $mess = explode("|",$file[$i]);
 echo "".$mess[1]."

"
;
 echo "[size="1"]Написал: ".$mess[0]." @ ".$mess[2]."[/size]<HR size=1 noshade color=#FF9900 width=300 align=left>
"
;
}

// выводим все странички внизу

for ( $i = 0; $i < $allpages + 1; $i++){

if ( $i != $page ){
print "$i";
}
else {
print "$page";
};

};


Убери error_reporting, пусть все ошибки, что есть, пишет.
1.9K
12 июля 2004 года
SumroK
49 / / 18.09.2003
Parse error: parse error, unexpected T_VARIABLE in z:\home\localhost\www\dvig\show_news.php on line 9 вот что выводит

9. $allpages = floor ( count ( $file ) / $step ) + 1;
3.2K
12 июля 2004 года
triptyl
30 / / 16.06.2003
Ну вот, блин, глюка немного заловил, а догадаться, где он, тяжело...

 
Код:
$step = 5;
$allpages = floor ( count ( $file ) / $step ) + 1;


Deus ex...
1.9K
13 июля 2004 года
SumroK
49 / / 18.09.2003
твой скрипт работает не корректно... :(

1. Страницы не переключаются(хотя в строке адреса значение переменной page меняется), т.е. постоянно активная ссылка 1 , а если я кликаю на 2, то остается прежнее...

2. Новости на всех страницах выводятся только с с 7 по 11...


1.9K
14 июля 2004 года
SumroK
49 / / 18.09.2003
НУ КТО-НИТЬ ПОМОГИТЕ!!
291
14 июля 2004 года
gufy
703 / / 08.01.2003
очень не хочется искать баг в твоем коде, посмотри вот это описание, может поможет http://forum.codenet.ru/showthread.php?s=&threadid=17423
1.9K
15 июля 2004 года
SumroK
49 / / 18.09.2003
Код:
function getPages($total, $page, $link, $perpage) {
    $mpp = $perpage;
    $prev_page = $page - 1;
    $next_page = $page + 1;

    if ($total <= $mpp) $pages = 1;
    elseif($total % $mpp == 0) $pages = $total / $mpp;
    else $pages = $total / $mpp + 1;
    $pages = (int) $pages;

    $s_pages    = $page<10 ? 1 : floor($page / 10) * 10;
    $e_pages    = $page + 9;

    if ($e_pages > $pages) {
        $e_pages = $pages;
    }

    $s = "";

    if($prev_page != 0) $s = "<a href=\"".$link."page=1\">&lt;&lt;</a> \n";
    if($prev_page) {
        $s .= "<a href=\"".$link."page=$prev_page\">&lt;</a> \n";
    }

    for($i=$s_pages;$i<=$e_pages;$i++) {
        if ($i != $page) {
            $s .= "<a href=\"".$link."page=$i\">$i</a> \n";
        } elseif ($i != 1) {
            $s .= " $i ";
        } elseif ($page != $pages) {
            $s .= " 1 ";
        }
    }
    if($page != $pages) {
        $s .= "<a href=\"".$link."page=$next_page\">&gt;</a> \n";
        $s .= "<a href=\"".$link."page=$pages\">&gt;&gt;</a> \n";
    }

    return $s;
}

if(!isset($page)) $page = 1;
$dat=file($ndata);
$dat=array_reverse($dat);
$pp = 5; // Сколько на страницу
$total = sizeof($dat); // Всего записей

$res = intval($total / $page);
$rem = $total % $page;

if($rem > 0) { $res++; }

$pages = $res; // кол-во страниц

$npst = ($page-1)*$pp;
$print_pages = getPages($total, $page, "index.php?", $pp);

print 'pages: '.$print_pages.'
'
;
for($i=$npst;$i<($npst+$pp);$i++) {
 $news = explode("|",$dat[$i]);
 echo "".$news[1]."

"
;
 echo "[size="1"]Написал: ".$news[0]." @ ".$news[2]."[/size]<HR size=1 noshade color=#FF9900 width=300 align=left>
"
;
}

Вот я спер чъю-то функцию getPages() и поработал над ней, но вот проблема:
навигация выводится так:
<< < 1 2 3 4 > >>
при выводе записей я переворачиваю файл, чтобы новые сообщения были сверху. Вот что получается:
1 страница у меня 5 записей
2 страница 5 записей
3 страница 5 записей
4 страница 3 записи + еще 2 пустые, т.е. без содержания. Как это поправить?
291
15 июля 2004 года
gufy
703 / / 08.01.2003
не знаю, имхо, разобраться в этом коде невозможно. все переменные названы почти одинаково! а другие - просто непонятно. ну найди кусок кода, где выводятся сообщения и вставь условие если запись пустая, то ее не выводить.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог