Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Скрипт навигации


Автор: user999 31.10.2006, 19:13
Есть база с каталогом, составлен запрос, выведены данные.
Но не могу сделать навигацию под таблицей.
Например мы выводим по 10 записей в таблице, а на остальные указываем ссылки, например так:
1 2 3 4 следующая

Может у кого есть скриптик, который выводит эту полосу навигации?

Автор: Ignat 31.10.2006, 19:31
user999, а теперь объясните, каким боком это к MySQL?
На чем вы пишете?

Автор: user999 31.10.2006, 19:53
на PHP, но выбираем-то из базы...

Автор: Ignat 31.10.2006, 19:59
Перемещаю из MySQL

Автор: dipsy 31.10.2006, 22:14
Цитата(user999 @  31.10.2006,  19:13 Найти цитируемый пост)
1 2 3 4 следующая

Это номера страниц?

Цитата(user999 @  31.10.2006,  19:13 Найти цитируемый пост)
Может у кого есть скриптик, который выводит эту полосу навигации? 

есть проблемы с самостоятельным написанием?

Автор: SelenIT 31.10.2006, 23:12
Все давно есть: http://phpfaq.ru/paginator smile

Автор: Blaga 1.11.2006, 03:54
у меня есть функция... ее мне дали здесь же на форуме вот код:
Код

где:
$count - сколько всего записей
$delimiter - по сколько на странице нужно
$href_link - шаблон ссылки где вместо % вписываеться номер страницы.
остальные не помню...

Код

function string_spliter($index, $count, $delimiter, $href_link, $count_list = 6)
    {
        $max_c = intval($count_list / 2) - 1;
        //$text .= '<center>';

        if ($count <= $delimiter)
        {
            return ;
        }
        else
        {
            $max_int = intval($count / $delimiter);
            $max     = $count / $delimiter;
            $c_max = $max > $max_int ? $max_int + 1 : $max_int;

            if ($max_int > ($max_c * 2 + 1))
            {
                $r_min = ($index - $max_c >= 1)      ? $index - $max_c : 1     ;
                $r_max = ($index + $max_c <= $c_max) ? $index + $max_c : $c_max;

                if ($r_min < $max_c + 1)
                {
                    $r_max = $r_min + $max_c + $max_c;
                }

                if ($r_max - $r_min < $max_c * 2 )
                {
                    $r_min = $r_max - $max_c - $max_c ;
                }
            }
            else
            {
                $r_min = 1;
                $r_max = $c_max;
            }

            $r_min = $r_min < 1      ? 1      : $r_min;
            $r_max = $r_max > $c_max ? $c_max : $r_max;

            if ($index > 1)
            {
                $link = str_replace('(%)', $index - 1 , $href_link);
                $array[] = '<a href="' . $link . '">&lt;</a> ';
            }
            else
            {
                $array[] = '&nbsp;';
            }

            for ($i = $r_min; $i <= $r_max; $i++)
            {
                $link = str_replace('(%)', $i, $href_link);
                $t = ($i == $index) ? $i . ' ' : "<a href='$link'>$i</a> ";
                $array[] = $t;
            }

            if ($index < $c_max)
            {
                $link = str_replace('(%)', $index + 1 , $href_link);
                $array[] = '<a href="' . $link . '">&gt;</a>';
            }
            else
            {
                $array[] = '&nbsp;';
            }

        }

        if (is_array($array))
        {
            $text = "<br /><center><table class=\"zap_tab\" width=\"500\"><tr><td bgcolor=\"#f2fae8\">страницы: ";
            foreach ($array as $cell)
            {
                $text .=  $cell;
            }
            $text .= '</td></tr></table></center><br />';
        }

        return $text;
    }

    $step = $_GET['page'];
    $step = $step == null ? 1 : $step;

    echo string_spliter($step, 50, 5, 'index.php?page=(%)', 5);
smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)