+ Ответить в теме
Показано с 1 по 4 из 4

Тема: постраничный вывод данных

  1. #1
    Юзер aleshqa-1 кто это?
    Регистрация
    13.05.2009
    Сообщений
    119
    Поблагодарил(а)
    9
    Получено благодарностей: 21 (сообщений: 16).

    По умолчанию постраничный вывод данных

    на сайте нужно реализовать постраничный вывод данных как на http://bash.org.ru/, т.е нужно чтобы был счет в обратном порядке, т.е. не 1 2 3 4, а 4 3 2 1, и чтобы номера страниц скрывались (т.е не 10 9 8 7 6 5 4 3 2 1, а 10 9 8 . . . 1)

    Я вывожу данные по страницам следующим способом:

    код на странице, где происходит вывод данных


    кот, отвечающий за постраничный вывод данных


    может что заесь изменить можно, или есть готовые скрипты с функциями, которые требуются?
    Последний раз редактировалось aleshqa-1; 16.11.2009 в 16:49.

  2. #2
    Кандидат в умники ratman кто это? Аватар для ratman
    Регистрация
    26.04.2009
    Адрес
    г.Братск (Центр)
    Сообщений
    378
    Поблагодарил(а)
    10
    Получено благодарностей: 44 (сообщений: 28).

    По умолчанию

    Цитата Сообщение от aleshqa-1 Посмотреть сообщение
    может что заесь изменить можно, или есть готовые скрипты с функциями, которые требуются?
    Сам писал или "капипаста"?
    Вы имеете право хранить молчание. Все, что вы скажете, будет искажено и направлено против вас.

  3. #3
    Banned dendi кто это?
    Регистрация
    24.12.2008
    Возраст
    37
    Сообщений
    167
    Поблагодарил(а)
    1
    Получено благодарностей: 24 (сообщений: 22).

    По умолчанию

    не изобретайте велосипед, все изобретено до вас
    PHP код:
    function makepage($start$count$total$range 0$link "") {

        global 
    $locale;

        if (
    $link == "") { $link FUSION_SELF."?"; }

        
    $pg_cnt ceil($total $count);
        if (
    $pg_cnt <= 1) { return ""; }

        
    $idx_back $start $count;
        
    $idx_next $start $count;
        
    $cur_page ceil(($start 1) / $count);

        
    $res $locale***91;'global_092'***93;." ".$cur_page.$locale***91;'global_093'***93;.$pg_cnt.": ";
        if(
    $idx_back >= 0) {
            if(
    $cur_page > ($range 1)) {
                
    $res .= "<a href='".$link."rowstart=0'>1</a>...";
            }
        }
        
    $idx_fst max($cur_page $range1);
        
    $idx_lst min($cur_page $range$pg_cnt);
        if (
    $range == 0) {
            
    $idx_fst 1;
            
    $idx_lst $pg_cnt;
        }
        for (
    $i $idx_fst$i <= $idx_lst$i++) {
            
    $offset_page = ($i 1) * $count;
            if (
    $i == $cur_page) {
                
    $res .= "<span><strong>".$i."</strong></span>";
            } else {
                
    $res .= "<a href='".$link."rowstart=".$offset_page."'>".$i."</a>";
            }
        }
        if (
    $idx_next $total) {
            if (
    $cur_page < ($pg_cnt $range)) {
                
    $res .= "...<a href='".$link."rowstart=".($pg_cnt 1) * $count."'>".$pg_cnt."</a>\n";
            }
        }
        
        return 
    "<div class='pagenav'>\n".$res."</div>\n";

    PHP код:
    echo makepage($_GET***91;'rowstart'***93;, (Сколько выводить), (всего результатов), 3, (сцылька страницы) ); 

  4. #4
    Юзер gnusmas кто это? Аватар для gnusmas
    Регистрация
    28.04.2010
    Адрес
    Nsk
    Возраст
    35
    Сообщений
    118
    Поблагодарил(а)
    9
    Получено благодарностей: 49 (сообщений: 21).

    По умолчанию

    Ребят, вы чего то странного насоветовали.
    aleshqa-1 твой метод в корне неверный. Делать выборку всех строк из таблицы и разбивать в коде - затратное дело. В sql server есть ограничитель TOP, в mysql - LIMIT, обе "функции" выбирают из таблицы с N по M строк.
    Необходимы переменные:
    $page - какую старицу показать
    $rows - сколько записей выводить на страницу
    Осталось высчитать с какой записи начинать выборку:
    $startRows = ($page-1)*$rows;

    На основе данных переменных делаешь выборку:
    $query = 'SELECT `id`, `name` FROM table ORDER BY `id` LIMIT $startRows, $rows;'
    Без сортировки не интересно
    Осталось написать запрос на выборку количества всех записей в таблице:
    $query = 'SELECT COUT(*) FROM table;'

    И теперь можем показывать пользователю количество страниц:
    $allPages = $countRows/$rows;, где $countRows - результат предыдущего запроса.

+ Ответить в теме

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

     

Похожие темы

  1. Восстановление данных.
    от Reanimator в разделе Вопросы и ответы
    Ответов: 0
    Последнее сообщение: 24.12.2008, 14:41
  2. Вывод изображения на экран телевизора
    от _StrongmeN_ в разделе Вопросы и ответы
    Ответов: 17
    Последнее сообщение: 30.12.2007, 13:38
  3. Вывод webmoney
    от Mozart в разделе Услуги и деятельность
    Ответов: 1
    Последнее сообщение: 19.06.2007, 13:36

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
Рейтинг@Mail.ru
Администрация сайта не выражает согласия
с высказыванием участников форума и не несет
ответственности за их содержание.

Копирование любого материала возможно только
при наличии ссылки на сайт.