Пояснять не буду, сам поймешь. Больше логики, чем Перла
$my_data=&call_mysql($zapros);
my ($my_data_ref) = $my_data->fetchall_arrayref();
my $table_rows = $my_data->rows;
$count_page = int($table_rows/$count_news_view);
if (($count_page*$count_news_view) < $table_rows) {$count_page++;}
my ($min_page) = int (($page-1)/$max_count_link_page);
$min_page = ($min_page*$max_count_link_page)+1;
my ($max_page) = ($min_page + $max_count_link_page)-1;
if ($min_page == 1) {$prev_page=0;}
else { $prev_page=$min_page-1;
}
$next_page = $max_page+1;
if ($next_page >= $count_page ) {$next_page=0;}
if ($max_page >= $count_page ) {$max_page=$count_page;}
my ($min_news) = (($page-1)*$count_news_view);
my ($max_news) = $min_news+$count_news_view;
if ($max_news >= $table_rows) {$max_news=$table_rows;}
for ($ii=$min_news;$ii<$max_news;$ii++) {
my ($tab_id, $tab_tema, $tab_path) = @{$my_data_ref->[$ii]};
..... вывод
} #end for
print<
end_test
;
if ($prev_page) {
print<<<<Назад |
end_test
;
}
for ($ii=$min_page; $ii<=$max_page;$ii++) {
if ($ii == $page) {
print<$ii |
end_test
;
} # end if
else {
print<$ii |
end_test
;
} # end else
}
if ($next_page) {
print<Дальше>>> |
end_test
;
}
print<
end_test
;