Why?, I am getting 5 results I only have 3 records Paginate

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
ianhull
Forum Contributor
Posts: 310
Joined: Tue Jun 14, 2005 10:04 am
Location: Hull England UK

Why?, I am getting 5 results I only have 3 records Paginate

Post by ianhull »

Hi Guys,

can anyone here see why I would be getting 5 results from my db query when I only have 3 entries in the db, the additional 2 entries are blank however but it is creating blank spaces whi I dont need.

Code: Select all

<?php session_start();

if(empty($_SESSION['Company Manager'])){
include_once($_SESSION['DOMAIN_NAME'].'error_pages/un-authorised.php');
session_destroy();
exit();
};

$company_name = $_SESSION['user']['1'];
$company_site = $_SESSION['user']['2'];

include_once($_SESSION['ROOT_PATH'].'_includes/connection.php');

class Pager
   {  
       function getPagerData($numHits, $limit, $page)  
       {  
           $numHits  = (int) $numHits;  
           $limit    = max((int) $limit, 1);  
           $page     = (int) $page;  
           $numPages = ceil($numHits / $limit);  

           $page = max($page, 1);  
           $page = min($page, $numPages);  

           $offset = ($page - 1) * $limit;  

           $ret = new stdClass;  

           $ret->offset   = $offset;  
           $ret->limit    = $limit;  
           $ret->numPages = $numPages;  
           $ret->page     = $page;  

           return $ret;  
       }  
   }
    
	$page = $_GET['page'];
    $limit = 10;
    $countCompanies = mysql_query("select count(*) FROM companies");  
    $total = mysql_result($countCompanies, 0, 0);
 
    $pager  = Pager::getPagerData($total, $limit, $page);  
    $offset = $pager->offset;  
    $limit  = $pager->limit;  
    $page   = $pager->page;
	
    if($_SESSION['Company Manager'] == 'Master'){
  
    $getCompanies = mysql_query("SELECT
	id,
    company_name,
    company_site,
    industry,
    status,
    number_employees FROM companies LIMIT $offset, $limit")or die(mysql_error());  

};

if($_SESSION['Company Manager'] == 'Area Manager'){

    $getCompanies = mysql_query("SELECT
	id,
    company_name,
    company_site,
    industry,
    status,
    number_employees FROM companies WHERE company_name = '$company_name' ORDER BY company_name ASC LIMIT $offset, $limit")or die(mysql_error());  

};

if($_SESSION['Company Manager'] == 'Manager'){

    $getCompanies = mysql_query("SELECT
	id,
    company_name,
    company_site,
    industry,
    status,
    number_employees FROM companies WHERE company_name = '$company_name' AND company_site = '$company_site' ORDER BY company_name ASC LIMIT $offset, $limit")or die(mysql_error());

}; 
    while ($companiesRecieved = mysql_fetch_array($getCompanies))    
    {
    extract($companiesRecieved);
    echo '<strong>'.$company_name.'</strong><br />
    '.$company_site.'<br />
    '.$number_employees.'<br />';
    }
	
    for ($i = 1; $i <= $pager->numPages; $i++) {  
    echo " ";
    if ($i == $pager->page)  
    echo "Page $i";  
    else  
    echo "<a href=\"index.php?page=$i\">Page $i</a><br />";  
    }  

?>
User avatar
volka
DevNet Evangelist
Posts: 8391
Joined: Tue May 07, 2002 9:48 am
Location: Berlin, ger

Post by volka »

printf-debugger time

Code: Select all

error_reporting(E_ALL);
ini_set('display_errors', true);
...
function getPagerData($numHits, $limit, $page) 
{ 
	echo "<pre>debug: function getPagerData($numHits, $limit, $page) invoked</pre>\n";
	$numHits  = (int) $numHits;
	$limit    = max((int) $limit, 1); 
	$page     = (int) $page; 
	$numPages = ceil($numHits / $limit); 
	echo "<pre>debug: numPages = $numPages = ceil($numHits / $limit);</pre>\n";

	$page = max($page, 1); 
	$page = min($page, $numPages); 
	echo "<pre>debug: page = $page = min($page, $numPages); </pre>\n";
	$offset = ($page - 1) * $limit; 
	echo "<pre>offset = $offset = ($page - 1) * $limit; </pre>\n";
	$ret = new stdClass; 

	$ret->offset   = $offset; 
	$ret->limit    = $limit; 
	$ret->numPages = $numPages; 
	$ret->page     = $page; 

	return $ret; 
}
Post Reply