Page 1 of 1
php pagination
Posted: Wed Sep 02, 2009 6:57 pm
by c0mrade
Hiya all,
I've been googling for few minutes now and I can't seem to find pagination explained in details. What I need is when I extract data from my database into <tr> rows of page, to display lets say only 10 of those rows from database on first page and 10 on second and so on .. now I know how to do this with LIMIT in the mysql_query .. to manually put links to page numbers like 1 2 .. next previous and so on .. but I'm sure there is a way that php does it by itself .. without me doing everything manually .. any ideas ? maybe links to good tutorials ?
Thank you
Re: php pagination
Posted: Wed Sep 02, 2009 8:01 pm
by synical21
Use mine as a template, i would explain it but its noted enough so read it all....I find the best way to learn is when your given a whole example and you can implement it into your own needs aswell as read all the notes
Code: Select all
// database connection info
$conn = mysql_connect(*********) or trigger_error("SQL", E_USER_ERROR);
$db = mysql_select_db(*******,$conn) or trigger_error("SQL", E_USER_ERROR);
$CharacterLimit=30;
// find out how many rows are in the table
$sql = "SELECT COUNT(*) FROM [color=#FF0000]TABLENAME[/color]";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
$r = mysql_fetch_row($result);
$numrows = $r[0];
// number of rows to show per page
$rowsperpage = 24;
// find out total pages
$totalpages = ceil($numrows / $rowsperpage);
// get the current page or set a default
if (isset($_GET['currentpage']) && is_numeric($_GET['currentpage'])) {
// cast var as int
$currentpage = (int) $_GET['currentpage'];
} else {
// default page num
$currentpage = 1;
} // end if
// if current page is greater than total pages...
if ($currentpage > $totalpages) {
// set current page to last page
$currentpage = $totalpages;
} // end if
// if current page is less than first page...
if ($currentpage < 1) {
// set current page to first page
$currentpage = 1;
} // end if
// the offset of the list, based on current page
$offset = ($currentpage - 1) * $rowsperpage;
// get the info from the db
$sql = "SELECT * FROM [color=#FF0000]TABLE NAME [/color]LIMIT $offset, $rowsperpage";
$result = mysql_query($sql, $conn) or trigger_error("SQL", E_USER_ERROR);
// START AN OUTPUT TABLE
echo "<table>";
// IF NO RESULTS
if (!mysql_num_rows($result))
{
echo "<tr><td colspan='2'>Why oh why is my php table failing??</td></tr>";
}
// IF WE HAVE RESULTS
else
{
// TITLE FOR COLUMNS
echo "<tr><td nowrap><b>example22</b></td></tr>";
// ITERATE OVER THE RESULTS SET
while ($line = mysql_fetch_assoc($result))
{
// GET EASY-TO-READ LOCAL VARIABLES
foreach ($line as $key => $val) { $$key = htmlentities($val); }
// CREATE THE ROW OF DATA
echo "<tr>";
echo "<td>>This table has pages me = clever</td>\n";
echo "</tr>\n";
} // END WHILE ITERATOR
echo "</table>\n";
} // END IF/ELSE
/****** build the pagination links ******/
// range of num links to show
$range = 2;
// if not on page 1, don't show back links
if ($currentpage > 1) {
// get previous page num
$prevpage = $currentpage - 1;
// show < link to go back to 1 page
echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$prevpage'><</a> ";
} // end if
// loop to show links to range of pages around current page
for ($x = ($currentpage - $range); $x < (($currentpage + $range) + 1); $x++) {
// if it's a valid page number...
if (($x > 0) && ($x <= $totalpages)) {
// if we're on current page...
if ($x == $currentpage) {
// 'highlight' it but don't make a link
echo " [<b>$x</b>] ";
// if not current page...
} else {
// make it a link
echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$x'>$x</a> ";
} // end else
} // end if
} // end for
// if not on last page, show forward and last page links
if ($currentpage != $totalpages) {
// get next page
$nextpage = $currentpage + 1;
// echo forward link for next page
echo " <a href='{$_SERVER['PHP_SELF']}?currentpage=$nextpage'>></a> ";
} // end if
/****** end build pagination links ******/
?>
Obviously you can take out my example table part and change with your own =D
ALSO: you can not of looked very hard on google, it took me 30min to create a pageination system from google..
Re: php pagination
Posted: Wed Sep 02, 2009 8:17 pm
by c0mrade
here is a perfect working example .. with downloadable/customizable source code .
http://www.vipercreations.com/tutorials ... 9&act=view
awesome

Re: php pagination
Posted: Wed Sep 02, 2009 8:18 pm
by c0mrade
synical21:
sorry m8 I haven't refreshed this post .. I saw yours now .. kinda looks like the link I posted above .. ur right about not trying hard, it took me slightly more than 30 mins to find this one . Thank you