PAGINATION. Function constructpageindex

They have: 2 posts

Joined: Aug 2007

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!