So I've decided to use a paging class with my custom query. The issue I seem to be having is that when I click on '2' or 'next' and goto http://mysite/cart/index.php?cat=18&page=2, it doesn't seem to change the query selection and I get the same results at page=1. Is it something with the limit or offset? I'm confused.
<?php
// -- The db calling for class
if (isset($_GET['cat'])){
//Paging class
include("MySQLPagedResults.class.php");
//Instantiate a new instance of the class
$paging_results = new MySQLPagedResults("SELECT count(*) FROM products WHERE category='$_GET[cat]'","cat=$_GET[cat]&page","",2,2,"<<","Previous","Next",">>"," | ");
//Make the variables from the class easier to read/use
$first_nav = $paging_results->getFirstNav();
$prev_nav = $paging_results->getPrevNav();
$next_nav = $paging_results->getNextNav();
$last_nav = $paging_results->getLastNav();
$pages_nav = $paging_results->getPagesNav();
$offset = $paging_results->currentOffset();
$results_per_page = $paging_results->results_per_page;
$current_page = $paging_results->current_page;
$total_pages = $paging_results->totalPages();
$start_number = $paging_results->getResultNumbersStart();
$end_number = $paging_results->getResultNumbersEnd();
$query2 = "SELECT name from categories where id='$_GET[cat]'";
$res=mysql_query($query2) or die("SQL: $query<br />\nError: ".mysql_error());
$row=mysql_fetch_array($res);
$queryp = "SELECT * from products WHERE category='$_GET[cat]' LIMIT $offset, $results_per_page";
$res=mysql_query($queryp) or die("SQL: $query<br />\nError: ".mysql_error());
$num_rows = mysql_num_rows($res);
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\"><tr><td class=\"title1\">";
echo "<font face=arial size=2><a href=index.php>Template Home</a> |</font> Category: <b>$row[name]</b>";
echo "</td><td class=\"body1\"><div align=\"right\"><b>Page:</b> $current_page of $total_pages | <b>Results:</b> $start_number - $end_number ";
echo "$first_nav $prev_nav $pages_nav $next_nav $last_nav";
echo "</div></td></tr></table>";
if (($num_rows) == 0) {
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\"><tr class=\"cells\"><td class=\"body1\" colspan=\"6\"><font color=red>No templates found. Please select another search criteria.</font></td></tr></table>";
} else {
while ($rowp=mysql_fetch_array($res)){
echo "<table width=\"100%\" border=\"0\" cellspacing=\"0\" cellpadding=\"10\"><tr><td class=\"body1\" width=\"1%\"><a href='index.php?product=$rowp[id]&category=$rowp[category]&format=$rowp[format]'><img src='images/thumbs/$rowp[photo]' border=0></a></td><td class=\"body1\" valign=\"top\"><p class=\"cartheader\">Template Name: <b>$rowp[name]</b></p>
<p>$rowp[description]</p>
<p><strong>Price: <b><font class=\"body3\"><font color=\"red\">$".($rowp['price'] + 25.00).".00</font></font></b> Discounted Price: <font color=\"red\">$$rowp[price]</font><br><a href='catalog.php?product=$rowp[id]'>Add to Cart</a> | <a href='images/screenshot1/$rowp[photo]' target='_blank'>Enlarge Image</a> | <a href='index.php?product=$rowp[id]&category=$rowp[category]&format=$rowp[format]'>Screenshots</a></strong></p></td>
</tr>
</table>
<hr size=\"1\">";
}
} ?>
<?php
class MySQLPagedResults {
var $total_results_sql;
var $current_page;
var $results_per_page;
var $links_per_page;
var $previous_link_text;
var $next_link_text;
function MySQLPagedResults($total_results_sql,$page_name,$url_string,$results_per_page,$links_per_page,$first_link_text,$previous_link_text,$next_link_text,$last_link_text,$seperator) {
$this->total_results_sql = $total_results_sql;
if(!isset($_GET[$page_name])) {
$this->current_page = 1;
} else {
$this->current_page = $_GET[$page_name];
}
$this->results_per_page = $results_per_page;
$this->links_per_page = $links_per_page;
$this->previous_link_text = $previous_link_text;
$this->next_link_text = $next_link_text;
$this->first_link_text = $first_link_text;
$this->last_link_text = $last_link_text;
$this->page_name = $page_name;
$this->url_string = $url_string;
$this->seperator = $seperator;
}
function totalResults() {
$query = mysql_query($this->total_results_sql);
$result = mysql_fetch_array($query);
return $result[0];
}
function totalPages() {
return ceil($this->totalResults()/$this->results_per_page);
}
function currentOffset() {
return ($this->current_page-1)*$this->results_per_page;
}
function isFirstPage() {
return ($this->current_page <= 1);
}
function isLastPage() {
return ($this->current_page >= $this->totalPages());
}
function getPrevNav() {
$nav='';
//Deal with previous link
if(!$this->isFirstPage()) {
$nav.='<a href="?'.$this->page_name.'='.($this->current_page-1).''.$this->url_string.'">'.$this->previous_link_text.'</a>';
} else {
$nav.=$this->previous_link_text;
}
return $nav;
}
function getNextNav() {
//Deal with next link
if(!$this->isLastPage()) {
$nav.='<a href="?'.$this->page_name.'='.($this->current_page+1).''.$this->url_string.'">'.$this->next_link_text.'</a>';
} else {
$nav.=$this->next_link_text;
}
return $nav;
}
function getFirstNav() {
$nav='';
//Deal with previous link
if(!$this->isFirstPage()) {
$nav.='<a href="?'.$this->page_name.'=1'.$this->url_string.'">'.$this->first_link_text.'</a>';
} else {
$nav.=$this->first_link_text;
}
return $nav;
}
function getLastNav() {
$nav='';
//Deal with previous link
if(!$this->isLastPage()) {
$nav.='<a href="?'.$this->page_name.'='.$this->totalPages().''.$this->url_string.'">'.$this->last_link_text.'</a>';
} else {
$nav.=$this->last_link_text;
}
return $nav;
}
function getResultNumbersStart() {
return ($this->current_page*$this->results_per_page)-$this->results_per_page+1;
}
function getResultNumbersEnd() {
return $this->getResultNumbersStart()+$this->results_per_page-1;
}
function getStartNumber() {
$links_per_page_half = $this->links_per_page/2;
if($this->current_page<=$links_per_page_half) {
return 1;
} elseif($this->current_page>=$this->totalPages()-$links_per_page_half) {
return $this->totalPages()-$this->links_per_page+1;
} else {
return $this->current_page-$links_per_page_half;
}
}
function getEndNumber() {
if($this->totalPages() < $this->links_per_page) {
return $this->totalPages();
} else {
return $this->links_per_page;
}
}
function getPagesNav() {
$nav='';
for($i=$this->getStartNumber(); $i<$this->getStartNumber()+$this->getEndNumber(); $i++) {
if($i!=$this->current_page) {
$nav.="<a href='?".$this->page_name."=$i".$this->url_string."'>$i</a>";
} else {
$nav.="$i";
}
if($i!=$this->getStartNumber()+$this->getEndNumber()-1) { $nav.=$this->seperator; }
}
return $nav;
}
}
?>