Вывод сообщений с разделением на страницы

tony2001

TeaM PHPClub
PHP:
//$num - номер страницы, передается скрипту.

$all_height = $allnews*$lennews;
$pages = floor($all_height/$page_height);
$on_page = floor($page_height/$lennews);

echo "Pages:".$pages."<br>";
echo "On page:".$on_page."<br>";

if ((int)$num>0 AND $num<=$pages) $num=(int)$num; else $num=0;

if ($num==$pages) $end=$allnews; else $end=($num+1)*$on_page;

for ($i=$num*$on_page+1;$i<=$end;$i++):
  echo $i."<br>";
endfor;
 

Unregistered

Guest
tony2001:
я немного перефразировал твой код, но видимо что-то намудрил..
что делает: вроде делит на страницы, вроде даже почти так как нада..
что не делает: или точнее делает но плохо..
он как-то криво считает на первой странице сколько новостей показывать.. получаеться почти в 2 раза больше.. + он скорее всего не различает что новости разной длинны, + если новости разной длинны - то по идее и их количество на каждой странице должно быть разное, а уж никак не одно и тоже - а тут именно так..

вот.

вот то что у меня..

PHP:
if (!isset($num)) {
	$num = 0;
}

/* основной код */
$allnews - всего новостей кол-во
$lenzz=$lenzz+$lenxnews; //всего высота в пикселях
$asd="500"; //ограничение по высоте на 1 стр.
$thisxr=ceil($lenzz/$asd); //кол-во страниц всего
$on_page = floor($asd/$lenxnews);  // вот тут наверное фигня какая-то.. т.к. получаеться что ты делишь макс. длинну на высоту последнего сообщения.... т.к. в $lenxnews пишеться именно длинна посл. сообщения,.. ли я че-то не то говорю?
$page_height=$asd;
$all_height=$lenzz;
$pages = $thisxr; 
	echo "Pages:".$pages."<br>"; 
	echo "On page:".$on_page."<br>"; 
if ((int)$num>0 && $num<=$pages) {
$num=(int)$num;
}
else {
$num=0; 
}

if ($num==$pages) $end=$allnews; 
else $end=(($num+1)*$on_page-2); 

for ($i=$num*$on_page;$i<=$end;$i++): 
	if ($i<=$allnews-1) {
	echo($cont[$i]);
}
endfor;
 

tony2001

TeaM PHPClub
извини, не буду ж я за тебя все делать - я тебе идею подсказал, в общем виде.
конкретная реализация - это твое дело.
 

Max Owl

Guest
PHP:
$lenpag=0; //длина страницы
$news_to_page=0; //новостей на страницу

for($i=0;$i<$allnews;$i++) 
{     
     $lenpag+=$lenxnews[$i];
     $news_to_page++;

     if($lenpag == $asd ) 
     { 
          $k[]=$news_to_page; 
          $lenpag=0;
          $news_to_page=0;
     } 

     elseif($lenpag > $asd ) 
     { 
          $k[]=$news_to_page-1;
          $lenpag=$lenxnews[$i];
          $news_to_page=1;
     } 

} 
if ($news_to_page)  $k[]=$news_to_page;
В итоге количество элементов в массиве $k = кол-ву страниц;
$k[0]=кол-во новостей на первой странице
...
$k[n]=кол-во новостей на n+1 странице.


P.S. Я правильно ответил на твой вопрос? ;)
 

Fish

Guest
или тут что-то не так, то ли я чего-то не то делаю..

скрипт выводит все ньюсы на первой странице..

и попутно вопрос:
что делает строчка:

$lenpag+=$lenxnews[$i];
$news_to_page++;

надеюсь на хелп,
сенькс,

P.S. мысль в правильном направлении, но скрипт не работает =(
 

Demiurg

Guest
Fish, хватит надеятся на помощь, пора думать своей головой ...
 

Fish

Guest
я думаю своей головой, но когда после доолгих мучений нифига не получаеться, только тогда я обращаюсь за хелпом, + продолжаю мучаться дальше..

с ув. Fish
 

RomikChef

Guest
Фиш, дело в том, что считать попиксельно высоту новости и выводить на несколько страниц - затея натолько дурацкая, что я вообще удивляюсь, как тебе даже столько помогали.
Если человек хочет извращаться, то пусть сам и получает удовольствие.
 

Fish

Guest
Я с тобой почти согласен, единственная проблема в том, что это идея не моя и я от нее отказаться не могу..
а извращаться приходиться мне,..

С ув.
 
Сверху