only show 10 page links at a time on a pager

Discussion in 'PHP' started by mnymkr, Oct 17, 2007.

  1. #1
    I have successfully implemented a pager for my script thanks to reading tutorials...the problem is i have like 160 pagination links, (lost of records in the database)

    what i want to do is instead of showing links to all 160 pages, i want to show

    ten page links at a time...then a link saying "next 10"

    i just can't figure out the logic or what to call it to search in google
     
    mnymkr, Oct 17, 2007 IP
    zerofunk likes this.
  2. Lordy

    Lordy Peon

    Messages:
    1,643
    Likes Received:
    29
    Best Answers:
    0
    Trophy Points:
    0
    #2
    y=0
    if(x=0;x<10;x++)
    {
    //display the first ten results
    y++;
    }
    PHP:
    pass along the y variable by post, get, or request and then display the next results after y
     
    Lordy, Oct 17, 2007 IP
  3. Jeff Blake

    Jeff Blake Peon

    Messages:
    32
    Likes Received:
    2
    Best Answers:
    0
    Trophy Points:
    0
    #3
    The records are in a database? If its SQL.. A query such as
    
    SELECT * FROM tablename LIMIT 10;
    
    Code (markup):
    Should work fine, and you can also use ORDER BY to organize them.

    To show the next 10 records it would be
    
    SELECT * FROM tablename LIMIT 10, 20;
    
    Code (markup):
     
    Jeff Blake, Oct 17, 2007 IP
  4. butters

    butters Peon

    Messages:
    497
    Likes Received:
    16
    Best Answers:
    0
    Trophy Points:
    0
    #4
    I'm not sure this is what you are looking for but maybe can help

    
    if (!$start) $start=0;
    $end = $start + 10;
    $next = $end+1;
    
    print("<a href="linklister.php?start=$next">Next >></a>");
    $eredm = mysql_query("SELECT * FROM table LIMIT $start,$end") or die(mysql_error());
    while($sor=@mysql_fetch_array($eredm)){
     // do whatever you want
    }
    
    Code (markup):
    hope it helps a bit
     
    butters, Oct 18, 2007 IP
    zerofunk likes this.
  5. ste.richards

    ste.richards Guest

    Messages:
    46
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #5
    f(!isset($_GET['page'])) {
        $page_num = 1;
    } else {
       $page_num = $_GET['page'];
    }
    
    define("RECORDS_PER_PAGE", 100);
    
    $starting_offset = ($page-1) * RECORDS_PER_PAGE;
    
    $query = "SELECT * FROM my_table LIMIT ".$starting_offset.", ".RECORDS_PER_PAGE; 
    Code (markup):
    That should work OK.
     
    ste.richards, Oct 18, 2007 IP
  6. ste.richards

    ste.richards Guest

    Messages:
    46
    Likes Received:
    1
    Best Answers:
    0
    Trophy Points:
    0
    #6
    Oops.

    $starting_offset = ($page-1) * RECORDS_PER_PAGE;
    
    Code (markup):
    Should really be

    $starting_offset = ($page_num-1) * RECORDS_PER_PAGE;
    
    Code (markup):
     
    ste.richards, Oct 18, 2007 IP
  7. mnymkr

    mnymkr Well-Known Member

    Messages:
    2,328
    Likes Received:
    32
    Best Answers:
    0
    Trophy Points:
    120
    #7
    and this will give me the following?


    previous 1 2 3 4 5 6 7 8 9 10 next 10


    previous 10 11 12 13 14 15 16
     
    mnymkr, Oct 19, 2007 IP
  8. phantom

    phantom Well-Known Member

    Messages:
    1,509
    Likes Received:
    32
    Best Answers:
    0
    Trophy Points:
    140
    #8
    phantom, Oct 19, 2007 IP
  9. Koster

    Koster Guest

    Messages:
    19
    Likes Received:
    0
    Best Answers:
    0
    Trophy Points:
    0
    #9
    $page = 1;
    $limit_begin = 0;
    $limit_end = MAX_DOCUMENTS_PER_PAGE;
    
    //page id
    if( !empty($_GET['page']) ){
    	settype($_GET['page'],"integer");
    	$page = $_GET['page'];
    	$limit_begin = ($page-1)*$limit_end;
    }
    
    $query = "SELECT SQL_CALC_FOUND_ROWS field, other_field FROM some_table LIMIT ".$limit_begin.", ".$limit_end;
    $result = $db->query($query);
    
    while($row = $db->fetch_array($result)){
    	.....
    }
    
    if($db->num_rows($result)){
    	$t = $db->query_first("SELECT FOUND_ROWS()");
    	$pages = $t['FOUND_ROWS()']/$limit_end;
    
    	if( (int)$pages - $pages <0 )
    		$pages = (int)$pages+1;
    
    	if( $pages != 1 ){
    		for($i=1; $i<=$pages; $i++ ){
    			echo ( $i != $page ) ? " <a href=\"...&_GET['page']=".$i."\">".$i."</a> " : " ".$i." ";
    					if( $i != $pages )
    						echo " | ";
    		}
    	}
    }
    PHP:
     
    Koster, Oct 20, 2007 IP
  10. mnymkr

    mnymkr Well-Known Member

    Messages:
    2,328
    Likes Received:
    32
    Best Answers:
    0
    Trophy Points:
    120
    #10
    thanks i'll give some of these a try

    i always get nervous when i do pagination stuff on my scripts
     
    mnymkr, Oct 22, 2007 IP
  11. phpl33t

    phpl33t Banned

    Messages:
    456
    Likes Received:
    33
    Best Answers:
    0
    Trophy Points:
    0
    #11
    Hit me up if you need help, I will do for you for $5.
     
    phpl33t, Oct 22, 2007 IP
  12. mnymkr

    mnymkr Well-Known Member

    Messages:
    2,328
    Likes Received:
    32
    Best Answers:
    0
    Trophy Points:
    120
    #12
    5 bucks really...i am down for that!
     
    mnymkr, Oct 22, 2007 IP
  13. crazyryan

    crazyryan Well-Known Member

    Messages:
    3,087
    Likes Received:
    165
    Best Answers:
    0
    Trophy Points:
    175