PAGINATION. Function constructpageindex
Well i'm a newbie in php. I needed a good pagination script,so i adapted one for my needs. Here is the code:
PHP Code:
<?php
// Connects to your Database
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("facts") 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;
}
//Here we count the number of results
//Edit $data to be your query
$data = mysql_query("SELECT * FROM content") 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
$result = mysql_query("SELECT * FROM content $max") or die(mysql_error());
//This is where you display your query results
while($row = mysql_fetch_array( $result ))
{
Print $row['facts'];
echo "<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> ";
}
// Constructs a page list.
// $pageindex = constructPageIndex($scripturl . '?board=' . $board, $_REQUEST['start'], $num_messages, $maxindex, true);
function constructPageIndex($base_url, &$pagenum, $last, $page_rows)
{
// Save whether $pagenum was less than 0 or not.
$pagenum_invalid = $pagenum < 0;
// Make sure $pagenum is a proper variable - not less than 0.
if ($pagenum_invalid)
$pagenum = 0;
// Not greater than the upper bound.
elseif ($pagenum >= $last)
$pagenum = max(0, (int) $last - (((int) $last % (int) $page_rows) == 0 ? $page_rows : ((int) $last % (int) $page_rows)));
// And it has to be a multiple of $page_rows!
else
$pagenum = max(0, (int) $pagenum - ((int) $pagenum % (int) $page_rows));
$base_link = '<a class="navPages" href="' . $_SERVER['PHP_SELF'] . 'pagenum=%d' . '">%s</a> ';
// Compact pages is off or on?
// If they didn't enter an odd value, pretend they did.
$PageContiguous = 3;
// Show the first page. (>1< ... 6 7 [8] 9 10 ... 15)
if ($pagenum > $page_rows * $PageContiguous)
$pageindex = sprintf($base_link, 0, '1');
else
$pageindex = '';
// Show the ... after the first page. (1 >...< 6 7 [8] 9 10 ... 15)
if ($pagenum > $page_rows * ($PageContiguous + 1))
$pageindex .= '<b> ... </b>';
// Show the pages before the current one. (1 ... >6 7< [8] 9 10 ... 15)
for ($nCont = $PageContiguous; $nCont >= 1; $nCont--)
if ($pagenum >= $page_rows * $nCont)
{
$tmpStart = $pagenum - $page_rows * $nCont;
$pageindex.= sprintf($base_link, $tmpStart, $tmpStart / $page_rows + 1);
}
// Show the current page. (1 ... 6 7 >[8]< 9 10 ... 15)
if (!$pagenum_invalid)
$pageindex .= '[<b>' . ($pagenum / $page_rows + 1) . '</b>] ';
else
$pageindex .= sprintf($base_link, $pagenum, $pagenum / $page_rows + 1);
// Show the pages after the current one... (1 ... 6 7 [8] >9 10< ... 15)
$tmpMaxPages = (int) (($last - 1) / $page_rows) * $page_rows;
for ($nCont = 1; $nCont <= $PageContiguous; $nCont++)
if ($pagenum + $page_rows * $nCont <= $tmpMaxPages)
{
$tmpStart = $pagenum + $page_rows * $nCont;
$pageindex .= sprintf($base_link, $tmpStart, $tmpStart / $page_rows + 1);
}
// Show the '...' part near the end. (1 ... 6 7 [8] 9 10 >...< 15)
if ($pagenum + $page_rows * ($PageContiguous + 1) < $tmpMaxPages)
$pageindex .= '<b> ... </b>';
// Show the last number in the list. (1 ... 6 7 [8] 9 10 ... >15<)
if ($pagenum + $page_rows * $PageContiguous < $tmpMaxPages)
$pageindex .= sprintf($base_link, $tmpMaxPages, $tmpMaxPages / $page_rows + 1);
return $pageindex;
}
?>
Now all i want is to echo the function,or to call it,but i don't know how to do that. Please, somebody help me.
Thanks in advance!