2013-08-21 2 views
0

есть функция для отображения сообщения (мольба игнорировать синтаксические ошибки)вычисление нумерации страниц смещения конкретной строки/смещение

function get_all_posts ($offset = 0) 
{ 
    $q = $db->query("select * from tbl limit 10 offset $offset "); 
    $template->load_view('posts' , $q); 
} 

теперь позволяет сказать, у меня есть функция, называемая get_one_post с одной должностью смещением и рассчитывать Всего сообщения в аргумент

function get_one_post($requested_post_offset = 0 , $totl_posts_count = 0) 
{ 

} 

в основном то, что я хочу сделать в этом get_one_post является расчетом страницы смещения requested_post и вызвать get_all_posts функции, поэтому она показывает страницу, содержащую этот Удельные Ĉ размещать

function get_one_post($requested_post_offset = 0 , $totl_posts_count = 0) 
{ 
    $page_offset = // calculation($requested_post_offset , $totl_posts_count); 
    get_all_posts ($page_offset); 

} 

я могу сказать

get_all_posts ($requested_post_offset); 

но он показывает требуемый пост первого поста на странице ... но я бледный, чтобы быть в его естественное место в пагинацией не первый один

Как мне сделать calculation?

--------------------------------- EDIT ------------ ----------------

обратите внимание, что я знаю, как создавать и реализовывать разбиение на страницы ... здесь не проблема моя система разбиения на рамки работает с смещениями вместо страницы число .. как если per_page 10, разбиения на страницы ссылки будут как

page 1 => page.php?offset=0 
page 2 => page.php?offset=10 
page 3 => page.php?offset=20 

в этом примере, если $requested_post_offset является 15, то СТРАНИЦА OFFSET IS 10 и я должен получить результат

page 2 => page.php?offset=10 
+0

Ну, первое, что вы должны понимать в большинстве реализаций разбиения на страницы, это общее количество записей в таблице. У вас есть начальный запрос для определения количества строк? –

+0

@MikeBrant Я получаю это во втором аргументе функции get_one_post – max

ответ

0

Если есть m сообщений на странице, сообщение k будет на странице ceil(k/m). Например, если вы поместите 25 сообщений на страницу, сообщение 86 будет на странице ceil(86/25) = 4.

Смещение сообщения на странице будет k%m, где первое положение 0 и последних m-1. Например, 86%25 = 11, так что пост 86 будет 12-м на странице.

+0

thanxd, моя функция работает со смещением ... мне нужно смещение страницы, а не номер страницы – max

+0

Зачем вам нужно смещение страницы?который не имеет понятия в SQL. Обычно номера страниц будут на 1 основе. –

+0

По смещению страницы вы имеете в виду, где на странице сообщение будет, @max? См. Обновление. – Joni

0

Вот некоторые общие формулы, как правило, используются в пагинацией:

total_pages = ceil(row_count/row_limit_per_page) 
page_at_offset = ceil((zero_based_offset + 1)/row_limit_per_page)) 
zero_based_offset_for_a_given_page = (page_at_offset - 1) * row_limit_per_page 

Обратите внимание, что здесь я подхожу номера страниц, как, начиная с 1.

Если входы zero_based_offset (отсчитываемое от нуля смещение интересующую вас строку) и row_limit_per_page, тогда вам просто нужно использовать последние два уравнения. Первое уравнение обычно используется для отображения (когда вам нужно показать общее количество страниц для навигации или тому подобное).

+0

thanx .. мне нужно 'zero_based_offset_for_page' данного' post_offset' ... ive добавил больше информации – max

+0

@max Я обновил свой ответ. Уравнения, которые я дал, приведут вас туда, я просто не объяснял материалы для вашего конкретного случая. –

Смежные вопросы