Только переключатель страниц пишет что там не 3 страницы а 4. Знающие люди взгляните на код и укажите что не так...
PHP:
скопировать код в буфер обмена
скопировать код в буфер обмена
- <?
- $db_host = 'localhost';
- $db_user = 'root';
- $db_pass = '';
- $db_base = 'base';
- ?>
- <?
- class alphaPages{
- // Задаём алфавит
- var $ALPHA = '<center>A B C D E F G H I J K L M N O P Q R S T U V W X Y Z</center>
- <center>А Б В Г Д Е Ж З И К Л М Н О П Р С Т У Ф Х Ц Ч Щ Ш Э Ю Я</center>
- <center>0 1 2 3 4 5 6 7 8 9</center>';
- // Инициализация объекта. Установка начальных условий списка
- function alphaPages(){
- $this->sql = "SELECT * FROM "._TAB_NAME;
- }
- // Метод выводит "карточку" человека
- function profile(){
- $this->sql .= " WHERE "._ID_NAME."=".$_GET['id'];
- $ret='<table>';
- foreach($r as $field=>$value){
- $ret .= "<tr><td>".$field."</td><td>".$value."</td></tr>";
- }
- $ret.='</table>';
- return $ret;
- }
- // метод строит панель алфавитной навигации
- function makeAlphaNavBar(){
- $sql = 'select DISTINCT (LEFT(UPPER('._FIELD_NAME.'),1)) as letter from '._TAB_NAME;
- $this->ALPHA = str_replace($r['letter'],'<a href="?letter='.$r['letter'].'">'.$r['letter'].'</a>',$this->ALPHA);
- }
- return $this->ALPHA;
- }
- // метод строит панель постраничной навигации
- function makePageNavBar(){
- $page = $_GET['page'];
- if($page > $total) $page = $total;
- // Проверяем нужны ли стрелки назад
- if ($page != 1) $pervpage = '<A href="?letter='.$_GET['letter'].'&page=1" class="pag">Начало</A>
- <A href="?letter='.$_GET['letter'].'&page='. ($page -1) .'" class="pag">Назад</A> ';
- // Проверяем нужны ли стрелки вперед
- if ($page != $total) $nextpage = ' <A href="?letter='.$_GET['letter'].'&page='. ($page + 1) .'" class="pag">Вперёд</A>
- <A href="?letter='.$_GET['letter'].'&page=' .$total. '" class="pag">Конец</A>';
- // Находим две ближайшие станицы с обоих краев, если они есть
- if($page - 3 > 0)$page3left = ' <a href="?letter='.$_GET['letter'].'&page='. ($page - 3) .'" class="pag">'. ($page - 3) .'</a> ';
- if($page - 2 > 0)$page2left = ' <a href="?letter='.$_GET['letter'].'&page='. ($page - 2) .'" class="pag">'. ($page - 2) .'</a> ';
- if($page - 1 > 0) $page1left = '<a href="?letter='.$_GET['letter'].'&page='. ($page - 1) .'" class="pag">'. ($page - 1) .'</a> ';
- if($page + 3 <= $total) $page3right = ' <a href="?letter='.$_GET['letter'].'&page='. ($page + 3) .'" class="pag">'. ($page + 3) .'</a>';
- if($page + 2 <= $total) $page2right = ' <a href="?letter='.$_GET['letter'].'&page='. ($page + 2) .'" class="pag">'. ($page + 2) .'</a>';
- if($page + 1 <= $total) $page1right = ' <a href="?letter='.$_GET['letter'].'&page='. ($page + 1) .'" class="pag">'. ($page + 1) .'</a>';
- // Вывод пагинатора
- $ret = $pervpage.$page3left.$page2left.$page1left.'<FONT class="pags">'.$page.'</FONT>'.$page1right.$page2right.$page3right.$nextpage;
- return $ret;
- }
- ######### Набор фильтрующих список методов ##############
- // Метод фильтрует список по букве
- function setLetter(){
- //SELECT DISTINCT artist FROM `table` WHERE `artist` LIKE 'X%';
- $this->sql .= " WHERE "._FIELD_NAME." like '".$_GET['letter']."%'";
- }
- // Метод ставит ограничения по странице
- function setPage(){
- $this->setOrder();
- else $page = $_GET['page'];
- $this->sql .= " LIMIT ".$page*_NUM_ON_PAGE.",".(_NUM_ON_PAGE);
- }
- // метод задаёт порядок сортировки
- function setOrder(){
- $this->sql .= " ORDER BY "._ORDER_BY;
- }
- #########################################################
- // метод строит итоговый список
- function getList(){
- $ret .= '<a href="?id='.$r[_ID_NAME].'">'.$r[_FIELD_NAME].'</a><br>';
- }
- return $ret;
- }
- }
- // the end of class
- ?>
- <?
- $nav = new alphaPages(); // Выводим алфавит
- $navBar = $nav->makeAlphaNavBar(); // Ставим букву
- if(!empty($_GET['letter'])) $nav->setLetter(); // Вычисляем сколько страниц. Обязательно после фильтрации по букве
- $pageBar = $nav->makePageNavBar(); // Что будем показывать
- else{
- $nav->setPage();
- $out = $nav->getList();
- }
- // показываем
- ?>