Постраничный вывод на PHP

Постраничный вывод на PHP

Постраничный вывод на PHP

На форуме CodeNet.Ru неоднократно задавали вопрос о том, как сделать постраничный вывод на PHP. Я объяснял, что такое LIMIT, и как его использовать в MySql.

Но все время оказывалось, что вопрос касался только навигации по страницам:

navigbar.gif

Вот универсальная процедура, выводящая такой блок ссылок:

  • $records — всего записей
  • $r_start — текущая страница
  • $URL — адрес, заканчивающийся на «=»
  • $inpage — записей на страницу
  1. <?
  2. function LeftRight($records,$r_start,$URL,$inpage) {
  3. $str="";
  4.  
  5. if ($records<=$inpage) return;
  6. if ($r_start!=0) {
  7. $str.="<a href=".$URL."0>&lt;&lt</a> ";
  8. $str.="<a href=$URL".($r_start-1).">&lt;</a> ";
  9. }
  10. else $str.="&lt;&lt &lt; ";
  11.  
  12. if ($r_start==0) {$sstart=$r_start-0;$send=$r_start+10;}
  13. if ($r_start==1) {$sstart=$r_start-1;$send=$r_start+9;}
  14. if ($r_start==2) {$sstart=$r_start-2;$send=$r_start+8;}
  15. if ($r_start==3) {$sstart=$r_start-3;$send=$r_start+7;}
  16. if ($r_start==4) {$sstart=$r_start-4;$send=$r_start+6;}
  17. if ($r_start>=5) {$sstart=$r_start-5;$send=$r_start+5;}
  18.  
  19. if ($send*$inpage>$records) $send=$records/$inpage;
  20. if ($sstart<0) $sstart=0;
  21.  
  22. if ($records%$inpage==0) $add=0; else $add=1;
  23.  
  24. for ($i=$sstart;$i<$send;$i++) {
  25. if ($i==$r_start) $str.=" <B>".($i+1)."/".(intval($records/$inpage)+$add)."</B> | ";
  26. else $str.="<a href=$URL".($i)."><U><B>".($i+1)."</B></U></a> | ";
  27. }
  28.  
  29. if ($r_start+(1-$add)<intval($records/$inpage)) {
  30. $str.=" <a href=$URL".($r_start+1).">&gt;</a>";
  31. $str.=" <a href=$URL".(intval($records/$inpage)-(1-$add)).">&gt;&gt;</a>";
  32. }
  33. else $str.=" &gt; &gt;&gt";
  34. return($str);
  35. }
  36.  
  37. // Пример вызова
  38.  
  39. print "<center>".LeftRight(567,43,"index.htm?start=",20)."</center>";
  40.  
  41. ?>

Download this code: leftright.phps

Комментарии