Algorithm / pseudo-code to create paging links?

后端 未结 6 1242
时光取名叫无心
时光取名叫无心 2020-12-07 23:46

Can someome provide code or pseudo-code for how the paging links on StackOverflow are generated?

I keep racking my brain but can\'t think of a decent way to build th

6条回答
  •  广开言路
    2020-12-07 23:56

    Here is my algorithm. It works really nice:

    // Input
    total_items   // Number of rows, records etc. from db, file or whatever
    per_page      // num items per page
    page          // current page
    visible_pages // number of visible pages
    
    // Calculations
    lastPage = ceil(total_items / per_page);
    prevPage = page - 1 < 1 ? 0 : page - 1;
    nextPage = page + 1 > lastPage ? 0 : page + 1;
    halfpages = ceil(visible_pages / 2);
    startPage = page - halfpages < 1 ? 1 : page - halfpages;
    endPage = startPage + visible_pages - 1;
    if(endPage > lastPage) {
        startPage -= endPage - lastPage;
        startPage = startPage < 1 ? 1 : startPage;
        endPage = startPage + visible_pages > lastPage ? lastPage : startPage + visible_pages - 1;
    }
    
    // Output
    lastPage    // Total number of pages
    prevPage    // Previous page number (if 0 there is no prev page)
    nextPage    // Next page number (if 0 there is no next page)
    startPage   // First visible page
    endPage     // Last visible page
    

    So you can do a pager like this:

    if prevPage
        [1] [prevPage] 
    endif
    
    [startPage] ... [endPage] 
    
    if nextPage
        [nextPage] [lastPage] 
    endif
    

    or customize whatever you like.

提交回复
热议问题