Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
1 / 1 / 0
Регистрация: 13.07.2016
Сообщений: 40

Исправить пагинацию на сайте

14.07.2016, 10:50. Показов 1383. Ответов 8

Студворк — интернет-сервис помощи студентам
Помогите исправить пагинацию. Надо её привести в компактный вид.
Как выглядит:


Код вьюшки:
PHP
1
2
3
4
5
6
7
8
9
10
11
<?if($pages):?>
                <div class="pagenator ta-center fs-24 p-top-big">
                    <?for($i=1;$i<=$pages;$i++):?>
                        <a class="<?=((empty($_GET['page'])&&$i==1)||$i==@$_GET['page'])?'dark-gray td-none':'m-left-big'?> m-horisontal-big" href="/deals?page=<?=$i?>" title=""><?=$i?></a>
                    <?endfor;?>
                </div>
            <?endif;?>
        </div>
    </div>
<div id="help-main"></div>
</section>
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.07.2016, 10:50
Ответы с готовыми решениями:

Исправить CSS на сайте
В браузерах хром, опера, IE все нормально, а в Мозила - беда -страница улезла, помогите исправить CSS. Ищу человека который посмотрит и...

Вирус на сайте. Помогите исправить.
Друзья помогите исправить сайт. У меня там вирус как пишут поисковики. Где его искать в админке????? буду очень благодарен за помощь! ...

Не получается исправить ошибку на сайте
Белой зоне текста появилась серая полоса, там где его не должно быть. Не могу его убрать. С визуального редактора убрать не получается. А в...

8
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
14.07.2016, 11:13
В интернете полно готовых примеров, в теме обмена готовыми решениями тоже есть.
0
1 / 1 / 0
Регистрация: 13.07.2016
Сообщений: 40
14.07.2016, 14:24  [ТС]
Искал, не очень помогло.

Добавлено через 1 час 40 минут
Я вставил во вьюшку код вызова файла pagination.php. Выдает кучу ошибок
Вот код php-файла:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
if ( $pages > 1 )
{
    echo '<div style="margin:1em 0">&nbsp;Страницы: ';
    // Проверяем нужна ли стрелка "В начало"
    if ( $page > 3 )
        $startpage = '<a href="'.$uri.'page=1"><<</a> ... ';
    else
        $startpage = '';
    // Проверяем нужна ли стрелка "В конец"
    if ( $page < ($pages - 2) )
        $endpage = ' ... <a href="'.$uri.'page='.$pages.'">>></a>';
    else
        $endpage = '';
 
    // Находим две ближайшие станицы с обоих краев, если они есть
    if ( $page - 2 > 0 )
        $page2left = ' <a href="'.$uri.'page='.($page - 2).'">'.($page - 2).'</a> | ';
    else
        $page2left = '';
    if ( $page - 1 > 0 )
        $page1left = ' <a href="'.$uri.'page='.($page - 1).'">'.($page - 1).'</a> | ';
    else
        $page1left = '';
    if ( $page + 2 <= $pages )
        $page2right = ' | <a href="'.$uri.'page='.($page + 2).'">'.($page + 2).'</a>';
    else
        $page2right = '';
    if ( $page + 1 <= $pages )
        $page1right = ' | <a href="'.$uri.'page='.($page + 1).'">'.($page + 1).'</a>';
    else
        $page1right = '';
 
    // Выводим меню
    echo $startpage.$page2left.$page1left.'<strong>'.$page.'</strong>'.$page1right.$page2right.$endpage."\n";
 
    echo '</div>'."\n";
}
?>
0
14 / 14 / 5
Регистрация: 27.05.2016
Сообщений: 41
14.07.2016, 14:59
Лучший ответ Сообщение было отмечено Ruslan150994 как решение

Решение

Здравствуйте.
Писал класс давно, когда учил PHP... что за что отвечает не помню...
Но класс очень простой, думаю разберетесь)))

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php
    class page_navigation {
        public static function set_page_navigation ($page_index, $page_count, $page_url) {
            $limit_button = 7;
            $out_page_navigation = "\n<div id=\"page_navigation\">\n";
            if($page_count <= $limit_button + 2) {
                for ($i = 1; $i <= $page_count; $i++) {
                    if($page_index == $i) {
                        $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                    } else {
                        $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                    }
                }
            } else {
                if ($page_index <= ceil($limit_button / 2)) {
                    for ($i = 1; $i <= $limit_button; $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                    $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n<a href=\"" . $page_url . $page_count . "\">$page_count</a>\n";
                } elseif ($page_index >= $page_count - 3) {
                    $out_page_navigation .= "<a href=\"" . $page_url . "1\">1</a>\n<span class=\"nav_ext\">...</span>\n";
                    for ($i = $page_count - $limit_button + 1; $i <= $page_count; $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                } else {
                    $out_page_navigation .= "<a href=\"" . $page_url . "1\">1</a>\n";
                    if ($page_index > ceil($limit_button / 2) + 2){
                        $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n";
                    }
                    if ($page_index == ceil($limit_button / 2) + 2){
                        $out_page_navigation .= "<a href=\"" . $page_url . "2\">2</a>\n";
                    }
                    for ($i = $page_index - floor($limit_button / 2); $i <= $page_index + floor($limit_button / 2); $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                    if ($page_index != $page_count - 5 && $page_index != $page_count - 4) {
                        $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n";
                    }
                    if ($page_index == $page_count - 5) {
                        $out_page_navigation .= "<a href=\"" . $page_url . ($page_count - 1) . "\">" . ($page_count - 1) . "</a>\n";
                    }
                    $out_page_navigation .= "<a href=\"" . $page_url . $page_count . "\">$page_count</a>\n";
                }
            }
            $out_page_navigation .= "</div>\n";
            
            return $out_page_navigation;
        }
    }
?>
Вот пример вызова:
PHP
1
2
3
4
5
6
page_navigation::set_page_navigation($page, $page_count, ROOT_HTTP . '/users/page/');
/*
1 параметр - текущая страница
2 параметр - общее количество страниц
3 параметр - пример генерации ссылки (site-name/users/page/1, site-name/users/page/2, и так далее... номер подставляет сам класс)
*/
CSS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
#page_navigation {
    padding: 10px;
    font-size: 13px;
    font-family: Tahoma;
}
 
#page_navigation:after {
    content: ".";
    display: block;
    height: 0;
    clear: both;
    visibility: hidden;
}
 
 
.page_navigation_span {
    background-color: #92B7D2;
    display: block;
    float: left;
    padding: 5px 7px;
    text-decoration: underline;
    color: #ffffff;
    margin: 0 3px;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    -o-border-radius: 5px;
}
 
#page_navigation a {
    display: block;
    float: left;
    padding: 5px 7px;
    text-decoration: none;
    color: #414141;
    margin: 0 3px;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    -o-border-radius: 5px;
}
 
#page_navigation a:hover {
    background-color: #a6ceec;
}
 
.nav_ext {
    background-color: #92B7D2;
    display: block;
    float: left;
    padding: 5px 7px;
    text-decoration: none;
    margin: 0 3px;
    color: #ffffff;
    border-radius: 5px;
    -webkit-border-radius: 5px;
    -moz-border-radius: 5px;
    -ms-border-radius: 5px;
    -o-border-radius: 5px;
}
1
1 / 1 / 0
Регистрация: 13.07.2016
Сообщений: 40
14.07.2016, 15:43  [ТС]
А куда вставлять первый и второй код? Я создал файл set_page_pagination.php туда кинул первый код а во вьюшку второй
0
14 / 14 / 5
Регистрация: 27.05.2016
Сообщений: 41
14.07.2016, 15:58
Ruslan150994, Вы этот метод класса вызываете в объекте класса или процедурно?
1
1 / 1 / 0
Регистрация: 13.07.2016
Сообщений: 40
14.07.2016, 16:24  [ТС]
С помощью инклуда вызываю файл set_page_navigation.php во вьюшке
0
14 / 14 / 5
Регистрация: 27.05.2016
Сообщений: 41
14.07.2016, 17:11
Ruslan150994, С помощью инклуда не вызывают а подключают файлы...
и так поехали...

Допусти у нас есть файл page_navigation.php
в нем находится следующий код:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<?php
    class page_navigation {
        /*
        если данный класс будет записан и вызываться из другого класса то при объявлении функции нужно казать:
        public static function set_page_navigation
        если создается объект из этой функции то при объявлении нужно следующие:
        public function set_page_navigation
        */
        public static function set_page_navigation ($page_index, $page_count, $page_url) {
            $limit_button = 7;
            $out_page_navigation = "\n<div id=\"page_navigation\">\n";
            if($page_count <= $limit_button + 2) {
                for ($i = 1; $i <= $page_count; $i++) {
                    if($page_index == $i) {
                        $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                    } else {
                        $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                    }
                }
            } else {
                if ($page_index <= ceil($limit_button / 2)) {
                    for ($i = 1; $i <= $limit_button; $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                    $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n<a href=\"" . $page_url . $page_count . "\">$page_count</a>\n";
                } elseif ($page_index >= $page_count - 3) {
                    $out_page_navigation .= "<a href=\"" . $page_url . "1\">1</a>\n<span class=\"nav_ext\">...</span>\n";
                    for ($i = $page_count - $limit_button + 1; $i <= $page_count; $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                } else {
                    $out_page_navigation .= "<a href=\"" . $page_url . "1\">1</a>\n";
                    if ($page_index > ceil($limit_button / 2) + 2){
                        $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n";
                    }
                    if ($page_index == ceil($limit_button / 2) + 2){
                        $out_page_navigation .= "<a href=\"" . $page_url . "2\">2</a>\n";
                    }
                    for ($i = $page_index - floor($limit_button / 2); $i <= $page_index + floor($limit_button / 2); $i++) {
                        if($page_index == $i) {
                            $out_page_navigation .= "<span class=\"page_navigation_span\">$i</span>\n";
                        } else {
                            $out_page_navigation .= "<a href=\"" . $page_url . $i . "\">$i</a>\n";
                        }
                    }
                    if ($page_index != $page_count - 5 && $page_index != $page_count - 4) {
                        $out_page_navigation .= "<span class=\"nav_ext\">...</span>\n";
                    }
                    if ($page_index == $page_count - 5) {
                        $out_page_navigation .= "<a href=\"" . $page_url . ($page_count - 1) . "\">" . ($page_count - 1) . "</a>\n";
                    }
                    $out_page_navigation .= "<a href=\"" . $page_url . $page_count . "\">$page_count</a>\n";
                }
            }
            $out_page_navigation .= "</div>\n";
            
            return $out_page_navigation;
        }
    }
?>
Файл в котором подключается данный класс (допустим index.php):

PHP
1
2
3
4
5
6
7
require_once('тут путь'); //путь к файлу page_navigation.php
 
// 1 вариант вызова
$page_navigation = new page_navigation(); //создаем объект класса
$page_navigation_v = $page_navigation   ->  set_page_navigation(тут параметры);
// 2 вариант (если вызов из другого класса)
page_navigation::set_page_navigation(тут параметры);
1
1 / 1 / 0
Регистрация: 13.07.2016
Сообщений: 40
14.07.2016, 17:14  [ТС]
Вставил во вьюшку код:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
<?php
if ( isset($_GET['page']) ) {
  $page = (int)$_GET['page'];
  if ( $page < 1 ) $page = 1;
} else {
  $page = 1;
}
 
if ( $page > $pages ) $page = $pages;
// Начальная позиция
$start = ( $page - 1 );
 
if ( $pages > 1 )
{
    echo '<div style="margin:1em 0">&nbsp; ';
    // Проверяем нужна ли стрелка "В начало"
    if ( $page > 3 )
        $startpage = '<a href="/deals?page=1"><<</a> ... ';
    else
        $startpage = '';
    // Проверяем нужна ли стрелка "В конец"
    if ( $page < ($pages - 2) )
        $endpage = ' ... <a href="/deals?page='.$pages.'">>></a>';
    else
        $endpage = '';
 
    // Находим две ближайшие станицы с обоих краев, если они есть
    if ( $page - 2 > 0 )
        $page2left = ' <a href="/deals?page='.($page - 2).'">'.($page - 2).'</a> | ';
    else
        $page2left = '';
    if ( $page - 1 > 0 )
        $page1left = ' <a href="/deals?page='.($page - 1).'">'.($page - 1).'</a> | ';
    else
        $page1left = '';
    if ( $page + 2 <= $pages )
        $page2right = ' | <a href="/deals?page='.($page + 2).'">'.($page + 2).'</a>';
    else
        $page2right = '';
    if ( $page + 1 <= $pages )
        $page1right = ' | <a href="/deals?page='.($page + 1).'">'.($page + 1).'</a>';
    else
        $page1right = '';
 
    // Выводим меню
    echo $startpage.$page2left.$page1left.'<strong>'.$page.'</strong>'.$page1right.$page2right.$endpage."\n";
 
    echo '</div>'."\n";
}
?>
Выглядит:

Хотел побольше размер сделать хотя бы и в середину поставить. А еще лучше картинки вместо стрелок добавить.
Кстати не увидел ваш вариант, но проверю обязательно если этот не исправлю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.07.2016, 17:14
Помогаю со студенческими работами здесь

Исправить технические ошибки на сайте
Привет, друзья. У моего сайта проблема, мешающая ему продвигаться в топы. А именно куча технических ошибок. Я проверил сайт софтом...

Исправить заголовок на сайте на Wordpress
Здравствуйте. Я в этом деле новичок. Нужна ваша помощь... http://www.moo-vector.idhost.kz/

Исправить некоректное отображение меню на сайте
начал осваивать adobe dreamweaver cs5 при создании шапки и меню для сайта столкнулся с проблемой отображения заднего фона кнопок меню, в...

Исправить ошибки в коде авторизации на сайте
Как убрать эти ошибки using System; using System.Linq; using System.Collections.Generic; using System.ComponentModel; using...

Исправить css на сайте интернет-магазина
Добрый вечер, форумчане! С прошедшими праздниками всех) Очень нужна помочь в правке css на сайте... вот ссылка на проблему При...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru