jacko_162 Posted January 11, 2015 Share Posted January 11, 2015 (edited) i have built pages that paginate with 10 rows per page (some pages show more but for the moment i want to focus on this particular page) //Define Some Options for Pagination $num_rec_per_page=10; if (isset($_GET["page"])) { $page = $_GET["page"]; } else { $page=1; }; $start_from = ($page-1) * $num_rec_per_page; $results = mysql_query("SELECT * FROM `ecmt_memberlist` WHERE toonCategory='Capital' AND oldMember = 0 ORDER BY CONCAT(MainToon, Name) LIMIT $start_from, $num_rec_per_page") or die(mysql_error()); $results_array = array(); while ($row = mysql_fetch_array($results)) { $results_array[$row['characterID']] = $row; } The above sets the variables for the pagination and below the results are echo with 10 rows per page then i show the pagination links: <?php $sql = "SELECT * FROM `ecmt_memberlist` WHERE toonCategory='Capital' AND oldMember = 0 ORDER BY CONCAT(MainToon, Name)"; $rs_result = mysql_query($sql); //run the query $total_records = mysql_num_rows($rs_result); //count number of records $total_pages = ceil($total_records / $num_rec_per_page); ?> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td align="center"><div style="width:100%; text-align:center;"> <ul class="pagination"> <li class="selected"> <?php echo "<a href='capitalmember.php?page=1'>".'«'."</a> ";?> </li> <? for ($i=1; $i<=$total_pages; $i++) { echo "<li><a href='capitalmember.php?page=".$i."'>".$i."</a></li> "; }; ?> <li class="selected"> <? echo "<a href='capitalmember.php?page=$total_pages'>".'»'."</a> "; // Goto last page ?></li> </ul></div> <?php $pageNr = $page; // Get Current Page Number $from = $pageNr * $rowsPerPage; // 3 * 10 = 30 // 3 * 10 = 30 $to = $from + $rowsPerPage; // 30 + 10 = 40 echo $pageNr; /* Result: From page 30 to 40 */ ?></td> </tr> </table> this works great and shows me 10 results per page, what i need to work out and work on next is: echo the number of results above the records (for example: "showing records 1 to 10" and then on page 2 "showing records 11 to 21" and page 3 "showing records 22 to 32" how can i work out the maths for this echo? i was thinking along the lines of; <?php $pageNr = $page; // Gets Current Page Number $from = $pageNr * $rowsPerPage; // 3 * 10 = 30 $to = $from + $rowsPerPage; // 30 + 10 = 40 // Now Show Results echo $from; // Echo from echo $to // Echo to ?> but i'm still working on this.. then i need to look at shortening the amount of page links on the page if for example i have 500 records it shows me links 1 to 50 and eats up the page.... Appreciate any help and light onto my problems. Many thanks Edited January 11, 2015 by jacko_162 Quote Link to comment Share on other sites More sharing options...
jacko_162 Posted January 11, 2015 Author Share Posted January 11, 2015 (edited) ok so i did this; <?php $pageNr = $page; // Get Current Page Number $from = $pageNr * $num_rec_per_page - 9; // 3 * 10 = 30 $to = $from + 9; // 30 + 9 = 40 // ECHO results Statements echo "Showing Results " .$from. " to " .$to. " "; ?> which works, but the last page may not be equal to exactly 10, for example 47 total results on page 4 it will only show 7 rows, so i did an if statement to check if its the last page and assign different math to the variable. how do i work out the last number?? <?php$pageNr = $page; // Get Current Page Number $from = $pageNr * $num_rec_per_page - 9; // 3 * 10 = 30 //check if last page and change variables if (isset($_GET['page']) && $_GET['page'] == $total_pages) { $to = $count / $num_rec_per_page; } else { $to = $from + 9; } // ECHO results Statements echo "Showing Results " .$from. " to " .$to. " "; ?> Edited January 11, 2015 by jacko_162 Quote Link to comment Share on other sites More sharing options...
mac_gyver Posted January 11, 2015 Share Posted January 11, 2015 you know the total number of rows in $total_records. you can simply limit the $to value to that. $to = min($total_records,$to); // use the smaller value in $total_records or in $to. as to how to limit the number of pagination links that are displayed around the currently selected page, see the phpfreaks,com main site pagination tutorial - http://www.phpfreaks.com/tutorial/basic-pagination specifically, see the $range variable and how it is used. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.