簡體   English   中英

分頁$ _GET ['page']在php中

[英]pagination $_GET['page'] in php

我有一個分頁問題。 當我在瀏覽器中加載此頁面並單擊類別鏈接以顯示我的產品時,第一頁顯示的產品受到限制,並且分頁鏈接到位,但無論如何發送分頁鏈接,它始終將我發送到第一頁,該頁面為零我點擊。 但是奇怪的是當我改變

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

$offset=($pageNum)= $perPage;

如果顯示的是單擊類別后要顯示的其余產品。 因此問題可能出在頁面上或附近。

這是我的代碼。

<?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>';
//
//} 
//}
?>

感謝您的幫助!!!

我會忽略效率低下的問題(請參閱對您問題的評論)。 問題不在於您的抵消代碼,它可以正常工作。 您的鏈接已損壞。

將編號鏈接生成到$nav ,您需要追加而不是覆蓋。 使用.=而不是= 另外,請注意大寫。 $maxpages不是$maxPages

這是更新的代碼。 證明這行得通 除非您的數據庫查詢結構錯誤(抱歉,我無法測試),否則您應該一切順利。

$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;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM