Вот еще посмотрите мой код: Код | // Место, где вставляются циферки <? $PageVarName = 'page'; $CurPage = $_REQUEST[$PageVarName]; $SLCountRowsToShowing = 2; if ($CurPage ){ $CurPage = ($CurPage-1)*$SLCountRowsToShowing; }else $CurPage = 0; require("InitDbMySql.php"); $SqlShowAll = "SELECT * FROM `*` ORDER BY `*` DESC LIMIT ".$CurPage.", ".$SLCountRowsToShowing;
.........................................................................
$PageUrl = '*.php?'; $SqlPagesMessage = "SELECT `*` FROM `*`;"; include 'pages.php'; ?>
// Сам скрипт "pages.php" <? $FirstPage = '<a class="PageNumber" href="'.$PageUrl.$PageVarName.'=1"> 1 </a> ...  '; $lastPage = '...   <a class="PageNumber" href="'.$PageUrl.$PageVarName.'='.$SLPages.'"> '.$SLPages.' </a> '; function Forvard($PageTemp, $PageUrl, $PageVarName){ return '<a class="PageArrow" href="'.$PageUrl.$PageVarName.'='.$PageTemp.'">→</a>'; } function Backward($PageTemp, $PageUrl, $PageVarName){ return '<a class="PageArrow" href="'.$PageUrl.$PageVarName.'='.$PageTemp.'">←</a> '; } function WriteNumbers($SLPage, $CurentPage, $SLEdit, $PageUrl, $PageVarName){ if ($SLPage == ($CurentPage-1)){ echo '<span class="CurPageSpan"><b> '.$CurentPage.' </b> </span>'; } else {echo '<a class="PageNumber" href="'.$PageUrl.$PageVarName.'='.$CurentPage.'"> '.$CurentPage.' </a> ';} } ?><p class="PagesBody"><? $SqlShowAll = $SqlPagesMessage; $result = mysql_query($SqlShowAll); if ($result) $rows = mysql_num_rows($result); else $rows = 0; $CountToShow = $SLCountRowsToShowing; if ($rows > $CountToShow){ $AbsRows = $rows - $rows % $CountToShow; $StayRows = $rows - $AbsRows; $AbsPages = floor($rows / $CountToShow); $SLPages = $AbsPages; if ($StayRows) $SLPages++; // ------------- Сдесь уже определены все необходимые переменные -------------- // ------------- $rows = Общее количество элементов. // ------------- $AbsRows = Количество элементов, на полностью заполненых страницах. // ------------- $StayRows = Количество элементов на "поледней" странице. // ------------- $AbsPages = Общее количество страниц, полностью заполненых элементами. // ------------- $SLPages = Общее количество страниц. $SLPage = $CurPage; // ------------- = Номер текущей страницы. if (!$SLPage) {$SLPage = 1;} if ($StayRows == 0){ $SLBegin = Round($AbsRows / $AbsPages * ($SLPage-1)); } else { if ($SLPage > $AbsPages){ $SLBegin = $rows - $StayRows; }else { $SLBegin = Round($AbsRows / $AbsPages * ($SLPage-1)); } } } else {$SLBegin = 0;} $SLPageBegin = $SLBegin; $CurentPage ++; $PageTemp = $_REQUEST[$PageVarName]; if (!$PageTemp) $PageTemp = 1; $SLPage = $PageTemp-1;
if ($PageTemp > 1){ $PageTemp--; echo Backward($PageTemp, $PageUrl, $PageVarName); } if (($SLPages > 10) && ($SLPage > 6)){ echo $FirstPage; } $PageTemp = $SLPages - 3; if ($SLPages > 10){ if ($SLPage <= 5){ for ($i=1; $i<11; $i++) WriteNumbers($SLPage, $i, $SLEdit, $PageUrl, $PageVarName); } elseif (($SLPage < $PageTemp) && ($SLPage > 5)){ for ($i=$SLPage - 5; $i<$SLPage + 5; $i++) WriteNumbers($SLPage, $i, $SLEdit, $PageUrl, $PageVarName); } else{ for ($i=$SLPages - 5; $i<$SLPages+1; $i++) WriteNumbers($SLPage, $i, $SLEdit, $PageUrl, $PageVarName); } } else{ for ($i=1; $i<$SLPages+1; $i++) WriteNumbers($SLPage, $i, $SLEdit, $PageUrl, $PageVarName); } if (($SLPages > 10) && ($SLPage < $PageTemp-1)){ echo $lastPage; } $PageTemp = $_REQUEST[$PageVarName]; if (!$PageTemp) $PageTemp = 1; if ($SLPage < ($SLPages-1)) { $PageTemp ++; echo Forvard($PageTemp, $PageUrl, $PageVarName); } ?></p>
|
Пример работы: Может кому поможет. Комментируйте. Это первый подобный, написаный мною, скрипт. Это сообщение отредактировал(а) slonofanya - 22.4.2009, 17:31
|