sh0wtym3 Posted September 25, 2008 Share Posted September 25, 2008 Hey all, I'm trying to add pagination to a page that will (potentially) show hundreds of results. I got the code below from About.com, and modified it slightly. Four records should display on each page, but instead of starting with the FIFTH record on page 2, it still shows the first four. Thanks in advance. <?php // Connects to your Database mysql_connect("localhost", "username", "password") or die(mysql_error()); mysql_select_db("my_database") or die(mysql_error()); //This checks to see if there is a page number. If not, it will set it to page 1 if (!(isset($pagenum))) { $pagenum = 1; } $username = $_COOKIE['ID_my_site']; //Here we count the number of results //Edit $data to be your query $data = mysql_query("SELECT title, username, filename, filesize FROM table WHERE username = '$username'") or die(mysql_error()); $rows = mysql_num_rows($data); //This is the number of results displayed per page $page_rows = 4; //This tells us the page number of our last page $last = ceil($rows/$page_rows); //this makes sure the page number isn't below one, or more than our maximum pages if ($pagenum < 1) { $pagenum = 1; } elseif ($pagenum > $last) { $pagenum = $last; } //This sets the range to display in our query $max = 'limit ' .($pagenum - 1) * $page_rows .',' .$page_rows; //This is your query again, the same one... the only difference is we add $max into it $data_p = mysql_query("SELECT title, username, filename, filesize FROM table WHERE username = '$username' $max") or die(mysql_error()); //This is where you display your query results while($row = mysql_fetch_array( $data_p )) { print "<u>Song Title</u> : <b>{$row['title']}</b> <br>"; print "Producer : {$row['username']} <br>"; print "<br><br>"; } echo "<p>"; // This shows the user what page they are on, and the total number of pages echo " --Page $pagenum of $last-- <p>"; // First we check if we are on page one. If we are then we don't need a link to the previous page or the first page so we do nothing. If we aren't then we generate links to the first page, and to the previous page. if ($pagenum == 1) { } else { echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=1'> <<-First</a> "; echo " "; $previous = $pagenum-1; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$previous'> <-Previous</a> "; } //just a spacer echo " ---- "; //This does the same as above, only checking if we are on the last page, and then generating the Next and Last links if ($pagenum == $last) { } else { $next = $pagenum+1; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$next'>Next -></a> "; echo " "; echo " <a href='{$_SERVER['PHP_SELF']}?pagenum=$last'>Last ->></a> "; } ?> Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/ Share on other sites More sharing options...
Stryves Posted September 25, 2008 Share Posted September 25, 2008 if (!(isset($pagenum))) { $pagenum = 1; } // ADD THIS BELOW THE ABOVE CODE else { $pagenum = $_GET['pagenum']; } Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650755 Share on other sites More sharing options...
JsusSalv Posted September 25, 2008 Share Posted September 25, 2008 You could look at these sites as well for some examples: 1) http://www.joedolson.com/search-engine/?q=california&o=vintner&d=DESC 2) http://www.roughguidetophp.com/pagination-splitting-data-across-multiple-pages-with-mysql-and-php/ 3) http://www.designplace.org/scripts.php?page=1&c_id=25 Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650757 Share on other sites More sharing options...
MatthewJ Posted September 25, 2008 Share Posted September 25, 2008 It does not look like you are getting the page number out of the link using $_GET. So each time, the if(!isset($pagenum)) conditional is resetting the $pagenum var back to 1. I would think that should be something like if(!isset($_GET['pagenum'])) { $pagenum = 1; } else { $pagenum = $_GET['pagenum']; } Hope that helps, Stryves, good catch... posting it because I already typed it Matt Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650758 Share on other sites More sharing options...
Stryves Posted September 25, 2008 Share Posted September 25, 2008 Your code is easier to read too! Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650759 Share on other sites More sharing options...
.josh Posted September 25, 2008 Share Posted September 25, 2008 You should also check to make sure $_GET['pagenum'] is a valid int between 1 and $last and assign a default. Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650858 Share on other sites More sharing options...
sh0wtym3 Posted September 26, 2008 Author Share Posted September 26, 2008 It works now, thanks guys! Quote Link to comment https://forums.phpfreaks.com/topic/125842-solved-implementing-pagination-with-php/#findComment-650892 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.