a little help with ASP paging

Discussion in 'C#' started by Kyriakos, Jun 14, 2013.

  1. #1
    hi,

    i have an online store builded in classic ASP. i have this script for paging the products (10 items per page).

    if ppp = "" then ppp=10
    
    cSQL = "SELECT COUNT(*) AS rows FROM products WHERE cat='"&cat&"' AND active=1"
    
    set cRS=con.execute(cSQL)
    myrows = Cint(cRS("rows"))
    
    sql = "SELECT * FROM products WHERE cat='"&cat&"' AND active=1 ORDER BY "&ord&" LIMIT "&(pg-1)*ppp&", "&ppp
    
    set prodRS=con.execute(sql)
    
    nmpages=myrows/ppp
    nmpg = Round(nmpages)
    if nmpg < nmpages then
    nmpg = nmpg + 1
    end if
    
    
    'pagination
    for i = 1 to nmpg
    if i <> cINT(pg) then
    response.Write(" <a href=""?cat="&cat&"&pg="&i&""">"&i&"</a>")
    end if
    next
    Code (markup):
    In some categories i have a lot of products and i have a huge number of pages (eg: 128 pages for 1280 products in one category).

    I want to display the pages like some forums
    eg: 1 2 3 4 5 82 105 128 (when the selected page = 1)
    or 1 32 48 49 50 51 52 94 110 128 (when the selectet page = 50)
    or: 1 64 98 99 100 101 102 120 128 (when the selectet page = 100)
    etc...

    i have the script for next, previous, first, last pages. i want only some script for the example above.

    thanks in advance.
     
    Kyriakos, Jun 14, 2013 IP
  2. wren11

    wren11 Active Member

    Messages:
    89
    Likes Received:
    10
    Best Answers:
    3
    Trophy Points:
    53
    #2
    you need to use a higher adjacent value when building the pagination.
     
    wren11, Jun 17, 2013 IP
  3. Kyriakos

    Kyriakos Active Member

    Messages:
    155
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    51
    #3
    what do you mean? can you show me any example?
     
    Kyriakos, Jun 18, 2013 IP
  4. wren11

    wren11 Active Member

    Messages:
    89
    Likes Received:
    10
    Best Answers:
    3
    Trophy Points:
    53
    #4
    Something Like this maybe? written in c# as an example


    
    namespace pagination
    {
        using System;
        using System.Linq;
        using System.Text;
    
        class Program
        {
            static void Main(string[] args)
            {
    
                StringBuilder results = new StringBuilder();
    
                var items = Enumerable.Range(1, 1280).ToArray();
    
                var adjacent = 3;
                var limit = 10;
                var page = 50;
                var start = (page - 1) * limit;
    
                if (page == 0)
                    page = 1;
    
                var lastpage = Math.Ceiling((double)items.Length / limit);
    
                if (lastpage > 1)
                {
                    if (lastpage < 7 + (adjacent * 2))
                    {
                        for (int i = 1; i <= lastpage; i++)
                        {
                            if (!(i == page))
                            {
                                results.Append(i);
                            }
                        }
                    }
                    else if (lastpage > 5 + (adjacent * 2))
                    {
                        if (page < 1 + (adjacent * 2))
                        {
                            for (int i = 1; i < 4 + (adjacent * 2); i++)
                            {
                                if (!(i == page))
                                {
                                    results.Append(i);
                                }
                            }
                        }
                        else if (lastpage - (adjacent * 2) > page && page > (adjacent * 2))
                        {
                            results.Append(1);
                            results.Append(2);
    
                            for (int i = page - adjacent; i <= page + adjacent; i++)
                            {
                                if (!(i == page))
                                {
                                    results.Append(i);
                                }
                            }
                        }
                        else
                        {
                            results.Append(1);
                            results.Append(2);
    
                            for (int i = (int)lastpage - (2 + (adjacent * 2)); i <= lastpage; i++)
                            {
                                if (!(i == page))
                                {
                                    results.Append(i);
                                }
                            }
                        }
                    }
                }
    
    
                Console.WriteLine(results.ToString());
            }
        }
    }
    
    
    PHP:
     
    wren11, Jun 18, 2013 IP
  5. Kyriakos

    Kyriakos Active Member

    Messages:
    155
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    51
    #5
    i don't know C#. my site is written in ASP language.
     
    Kyriakos, Jun 18, 2013 IP
  6. Kostyantyn

    Kostyantyn Peon

    Messages:
    3
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    1
    #6
    Hello, Kyriakos!

    Sorry, your code block shows selection items from database and calculates total amount of pages, so it is not applicable to what you want to be done :(

    Pager - another control on your page and modification should affect its behavior.
     
    Kostyantyn, Jun 19, 2013 IP