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

Как довести пагинацию до ума?

05.09.2019, 17:25. Показов 503. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток!
Нашел некую пагинацию. Подравнял под свои требования. Работает. Но, когда страниц стало много, пагинатор перестал влезать в страницу.

Как к нему добавить компактность с помощью многоточия?

HTML5
1
2
3
4
5
6
7
<style>
#work_area{
    width: 100%;
    margin: 100 auto;
    text-align: center
 
}
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
69
70
<?php
    // подключение к бд
    include "db.php";
    
    // количество материалов на странице
    $countView = 5;
    
    // номер страницы
    if(isset($_GET['page'])){
        $pageNum = (int)$_GET['page'];
    }else{
        $pageNum = 1;
    }
    
    // с какой записи начать выборку
    $startIndex = ($pageNum-1)*$countView; 
    
    // запрос к бд
    $sql = "SELECT * FROM `books`";
    $newsData = array();
    while($result = mysql_fetch_array($sql, MYSQL_ASSOC)){
        $newsData[] = $result;
    }
    
    // получение полного количества новостей
    $sql2 = mysql_query("SELECT FOUND_ROWS()");
    $result2 = mysql_fetch_array($sql2, MYSQL_ASSOC);
    $countAllNews = $result2["FOUND_ROWS()"];
    // номер последней страницы
    $lastPage = ceil($countAllNews/$countView);
    
    ?>
 
 
        <!-- вывод новостей -->
    <?php foreach($newsData as $oneNews){ ?>
    
 
    
    <div class="nov-left"><img src="/images/<?=$oneNews['genre'];?>" class="glif-left" style="margin-left: 5%"><br />*<br />№<?=$oneNews['id'];?></div>
    <div class="nov-right"><?=$oneNews['date_num'];?></div>
    <div class="well">
        
        
        <b><big><big><?=$oneNews['title'];?></big></big></b><div class="line"></div>
        <p><?=$oneNews['historia'];?></p>
        
        
        
    </div>
    <?php } ?>
 
    <div id="work_area">    
 
        <ul>
            <?php if($pageNum > 1) { ?>
                <li><a href="/sectiones/novaminis.php?page=1">&lt;&lt;</a></li>
                <li><a href="/sectiones/novaminis.php?page=<?=$pageNum-1;?>">&lt;</a></li> 
            <?php } ?>
        
            <?php for($i = 1; $i<=$lastPage; $i++) { ?>
                <li <?=($i == $pageNum) ? 'class="current"' : '';?>> <a href="/sectiones/novaminis.php?page=<?=$i;?>"><?=$i;?></a> </li>
            <?php } ?> 
        
            <?php if($pageNum < $lastPage) { ?>
                <li><a href="/sectiones/novaminis.php?page=<?=$pageNum+1;?>">&gt;</a></li>
                <li><a href="/sectiones/novaminis.php?page=<?=$lastPage;?>">&gt;&gt;</a></li>
            <?php } ?>
        </ul>
    </div>
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.09.2019, 17:25
Ответы с готовыми решениями:

Как довести фильм до ума?
Имеется слайд-фильм по архитектуре, назначение презентация. Собран примерно из 50 обработанных...

в чем ошибка,как довести до ума
Дан массив чисел В. Найти сумму положительных и отрицательных чисел массива с нечетными индексами и...

покажите как правильно довести до ума код
Помогите разобраться в коде, должен переводить в любую систему счисления, не знаю как правильно...

надо как то довести до ума программу на MATLAB
В данной работе необходимо написать программу, определяющую в какую область на рисунке, номер...

8
767 / 323 / 157
Регистрация: 26.05.2016
Сообщений: 2,127
05.09.2019, 19:05 2
Условия сделайте, я например до таких штук додумывался сам по логике) во-первых, развиваешь мышление, 2)набираешься опыта
3)ни от кого не зависишь
Подумайте по логике где должно стоять многоточие, после какого действия и тд
Посмотрите глазами обычного пользователя
0
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 14
06.09.2019, 08:56  [ТС] 3
Где должно находиться многоточие и после какого действия мне понятно. Но, к сожалению, я не знаю как его сделать, а к тому времени, когда я научусь сам писать подобные штуковины, много воды утечет.
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
06.09.2019, 09:10 4
Ну так в интернете полно примеров скриптов пагинации на пхп, на любой вкус и цвет. Вот например с многоточием и фиксированным размером
1
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 14
06.09.2019, 09:57  [ТС] 5
Спасибо за пример скрипта. Но у меня как в том анекдоте: "или свисток достанется бракованный, или акула глухая...". Весьма вероятно, что это пример от http://lifeexample.ru хорош. Но у него иной подход к программированию пагинации, нежели в моей компиляции. Даже логика запроса к базе данных в нем совсем другая и как ее модифицировать мне не известно. Куда, например, вставлять ORDER BY `id` DESC чтобы был произведен вывод таблицы в обратном порядке? Или как сделать выборку отдельных данных в БД, как я обычно делал добавкой к команде WHERE `Collegium` =0 ? Тут все по другому и чтобы оно заработало нужно лопатить неизвестно сколько...
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
06.09.2019, 10:32 6
Nik Toiler, ну Вам же известен $pageNum. Вот от него и стройте вывод страниц в цикле. К примеру так:
PHP
1
for($i = $pageNum-5; $i <= $pageNum+5; $i++)
0
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 14
06.09.2019, 10:50  [ТС] 7
Работает, но как-то странно...
Как довести пагинацию до ума?
0
1152 / 554 / 320
Регистрация: 21.06.2012
Сообщений: 1,854
06.09.2019, 11:07 8
Nik Toiler, я дал наводку. А дальше сами додумывайте. Не будут же тут за вас код писать. И ничего тут странного нет. Если будете на 5-ой странице, то все будет норм. Это же элементарщина. Вбейте в поиске как циклы работают, в частности for
0
0 / 0 / 0
Регистрация: 17.01.2019
Сообщений: 14
06.09.2019, 11:07  [ТС] 9
Попробовал выставить такое значение
PHP
1
 for($i = $pageNum-0; $i <= $pageNum+5; $i++)
. Минусовые страницы исчезли. Однако появились 5 пустых станиц справа. Т. е. :

<< < [36] [37] [38] [39] [40] [41]

Из них 36, реальная, а 37—41 ложные.
0
06.09.2019, 11:07
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.09.2019, 11:07
Помогаю со студенческими работами здесь

Как довести до ума метод редактирования данных пользователя?
public void editUser(int id) throws Exception { PreparedStatement ps =...

Разделенная форма для редактирования. Как довести до ума?
Есть большая таблица с данными. Пытаюсь сделать оптимальную форму для ее редактировния. Неплохим...

Подскажите, как довести до ума HP PAVILION DM1-1110ER
Друзья, имеется ноут HP PAVILION DM1-1110ER. Начал включать его и обалдел. Установлено несколько...

Модель транспортного цеха, чет ни как не получается до ума довести
Тут на форуме эта задача описывалась , но проблема в том что куда бы блок очередь не ставил итог...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru