Показать сообщение отдельно

  #9  
Старый 19.04.2007, 16:35
blaga
Постоянный
Регистрация: 23.03.2006
Сообщений: 977
С нами: 10597286

Репутация: 694


По умолчанию

Вот мой вариант. Его писал не я и вообще не помню откуда он у меня, но работает хорошо. Итак:
$index = номер страницы;
$count = общее число элементов;
$delimiter = количество элементов на странице;
$href_link = шаблон ссылки где (%) - подстановка номера страницы;
$count_list= количество ссылок на другии листы помимо активного;

В запросе использовать:
Код:
LIMIT ( $index - 1 ) * $delimiter, $delimiter
Сама функция:
Код:
<?php
    function string_spliter($index, $count, $delimiter, $href_link, $count_list = 10)
    {
        $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 . '">&laquo;</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 . '">&raquo;</a>';
            }
            else
            {
                $array[] = '&nbsp;';
            }
            
        }
        
        if (is_array($array))
        {
            $text = '<center><table><tr>';
            foreach ($array as $cell)
            {
                $text .= '<td>' . $cell . '</td>';
            }
            $text .= '</tr></table></center>';
        }
        
        return $text;
    }
    
    $step = $_GET['step'];
    $step = $step == null ? 1 : $step;
    
    echo string_spliter($step, 120, 10, 'test2.html?step=(%)');

?>
 
Ответить с цитированием