简体   繁体   中英

pagination $_GET['page'] in php

I have a pagination question. When I load this page in the browser and click on the category link to show my products the first page shows with the products limited and the links for pagination are in place but it keeps sending me to the first page which is zero for whatever pagination link I click on. But the odd thing is is when I change

$offset=($pageNum - 1) * $perPage;

to

$offset=($pageNum)= $perPage;

if shows the rest of the products I'm trying to show after clicking on the category. So the problem might be in the page or somewhere around there.

Here is my code.

<?php
$productUlList="";
error_reporting (E_ALL ^ E_NOTICE);
include_once "convenientglobal2localhost.php";
$result = mysql_query("SELECT * FROM category WHERE 1")or die(mysql_error());


while($rowp=mysql_fetch_array($result)){
    $categoryId=$rowp['catId'];
    $categoryName=$rowp['catName'];
 $productUlList.='
    <ul id="ul" >
        <li id="lists"> <a href="'.$_SERVER['PHP_SELF'].'?category='.$categoryName.'"> '.$categoryName.'   </a> </li> 
    </ul>';
}
?>
<?php
$msg_to_user3='';

$productList.='';
$categoryList='';
include_once "convenientglobal2localhost.php";
 $perPage= 3;
if(isset($_GET['category']))


$categoryNames=$_GET['category'];
$pageNum=(isset($_GET['page']))? (int)$_GET['page']: 1;
$pages_query= mysql_query("SELECT * FROM products INNER JOIN category ON categoryName=catName WHERE categoryName='$categoryNames'");
$numrows= mysql_num_rows($pages_query);
 $maxpages=ceil($numrows / $perPage);
 $offset=($pageNum-1) * $perPage;
if ($offset < 0)
 {
 $offset = 0 ;
 }


include_once "convenientglobal2localhost.php";
$results = mysql_query("SELECT * FROM products WHERE categoryName='$categoryNames' LIMIT $offset, $perPage")or die(mysql_error());
$num=mysql_num_rows($results);

if($num > 0){


while($row=mysql_fetch_array($results)){


 $productId=$row['productId'];
 $productName=$row['name'];
 $productDescription=$row['description'];
 $productPrice=$row['price'];
 $productDiscountedPrice=$row['discountedPrice'];
 $productStock=$row['stock'];
 $productCategory=$row['categoryName'];
 $categoryId=$row['catId'];
 $catName=$row['catName'];

 $categoryList='<table><th id="toptable"></th></table>
 <table id="categorytable">
 <th><img src="inventory_category_images/' . $categoryId . '.jpg" width="498px"; height="125px";/></th> 
</table>';
 $productList.='<table id="productoutputtable">
 <tr>
 <td rowspan="7" valign="top"><img style="border-style=solid; border-color:#767475; padding=; "src="inventory_images/' . $productId . '.jpg" width="150" height="135"/>
    </td> 
    </tr>
    <tr> 
    <td id="tablecolor" ><strong>Product</strong></td> 
    <td colspan="2">' . $productName . ' </td> 
    <td id="tablecolor"><strong>Category</strong></td> 
    <td>' . $productCategory . ' </td> 
    </tr>
     <tr> 
    <td id="tablecolor"><strong>Description:</strong></td> 
     <td colspan="3">' . $productDescription . ' </td> 
    </tr> 
    <tr> 
    <td id="tablecolor" ><strong>Price:</strong></td> 
     <td>$' . $productPrice . ' </td>
     </tr><tr>
     <td id="tablecolor"colspan="1"><strong>Sale Price:</strong></td> 
    <td>$' . $productDiscountedPrice . ' </td> 
    <td id="tablecolor"colspan="2"><strong>In Stock </strong></td> 
    <td>' . $productStock . ' </td> 
    </tr>
    </table>';

}   

$self= $_SERVER['PHP_SELF'];
 for($page=1; $page<=$maxpages; $page++){
    if($page == $pageNum){
        $nav= "$page";
    }
    else{
        $nav= "<a href=\"$self?page=$page\">$page</a>";
    }
 }

 if($page > 1)
 {
    $page=$pageNum-1;
    $prev ="<a href=\"$self?page=$page\">[Prev]</a>";
    $first="<a href=\"$self?page=1\">[First Page]</a>";
 }
 else
 {
    $prev= "&nbsp";
    $first="&nbsp";
 }
 if($pageNum < $maxPages)
 {
    $page=$pageNum+1;
    $next ="<a href=\"$self?page=$page\">[Next]</a>";
    $last="<a href=\"$self?page=$maxPages\">[Last Page]</a>";
 }
 else
 {
    $next= "&nbsp";
    $last="&nbsp";
 }
$pageList.= $first. $prev. $nav. $next. $last;

 } 
else{
    $msg_to_user3="You have no products listed.";

}
//$pageList.=""; 
//for($i = 0 ; $i <= $maxpages ; $i++) { 
//if($i == $page) { 
//$pageList.= "<B>$i</B>"; 
//}else{ 
//$pageList.= '<A HREF="?page='.$i.'">'.$i.'</A>';
//
//} 
//}
?>

Thanks for all you help!!!

I'll ignore the inefficiencies (refer to comments on your question). The problem is not your offsetting code—that works fine. Your links are broken.

When generating your numbered links into $nav , you need to append, not overwrite. Use .= , not = . Also, beware of capitalization. $maxpages is not $maxPages .

Here's updated code. Proof this works . Unless your database query is misconstructed (I can't test that, sorry!), you should be good to go.

$self= $_SERVER['PHP_SELF'];
 for($page=1; $page<=$maxpages; $page++){
    if($page == $pageNum){
        $nav.= "$page";
    }
    else{
        $nav.= "<a href=\"$self?page=$page\">$page</a>";
    }
 }

 if($page > 1)
 {
    $page=$pageNum-1;
    $prev ="<a href=\"$self?page=$page\">[Prev]</a>";
    $first="<a href=\"$self?page=1\">[First Page]</a>";
 }
 else
 {
    $prev= "&nbsp";
    $first="&nbsp";
 }
 if($pageNum < $maxpages)
 {
    $page=$pageNum+1;
    $next ="<a href=\"$self?page=$page\">[Next]</a>";
    $last="<a href=\"$self?page=$maxpages\">[Last Page]</a>";
 }
 else
 {
    $next= "&nbsp";
    $last="&nbsp";
 }
$pageList.= $first. $prev. $nav. $next. $last;

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM