
19.04.2007, 16:35
|
|
Постоянный
Регистрация: 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 . '">«</a> ';
}
else
{
$array[] = ' ';
}
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 . '">»</a>';
}
else
{
$array[] = ' ';
}
}
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=(%)');
?>
|
|
|