使用PHP在分页中显示“下一步”和“上一页”

时间:2011-09-13 22:27:11

标签: php pagination

我使用以下代码:

   $result = mysql_query("SELECT * FROM table LEFT JOIN table2 
   ON table.field = table2.field WHERE ( table.field = '$pid' ) 
   AND ( table.field5 LIKE '%$q%' OR table.field3 LIKE '%$q%' 
    OR table2.field2 LIKE '%$q%' )");


     if (empty($what)) {

      $countpls = "0";
      } else {

     $countpls = mysql_num_rows($result);
      }


<?php
if ($countpls > 10) {
    echo '<a id=pgnvg href="' . $_SERVER['PHP_SELF'] . '?pg=' . ($startrow + 20) . '&q=' . ($what) . '">Next</a>';
} else {
    echo "";
}

$prev = $startrow - 20;

//only print a "Previous" link if a "Next" was clicked
if ($prev >= 0) {
    echo '<a id=pgnvg2 href="' . $_SERVER['PHP_SELF'] . '?pg=' . $prev . '&q=' . ($what) . '">Previous</a>';
} else {
    echo "";
}
?>

我希望下一个只显示有更多条目要显示,而之前只有在有更多条目要循环回来时才显示。它适用于第一页bt然后在最后一页上显示尽管事实上没有更多的结果显示。

我尝试添加'else',但它仍无效。

有什么想法吗?

3 个答案:

答案 0 :(得分:1)

如果您提供设置$countpls的代码,将会有所帮助。这可能是导致问题的部分。另外,别的是不必要的。但是,试试这个:

if($countpls - $startrow > 20)
{
    echo '<a id=pgnvg href="'.$_SERVER['PHP_SELF'].'?pg='.($startrow+20).'&q='.($what).'">Next</a>';
}

答案 1 :(得分:1)

if($countpls > 0){
    $pg = $_POST['pg']?$_POST['pg']:1;

    //if it's not the first page...
    if($pg>1){
        echo '<a id="pgnvg" href="'.$_SERVER['PHP_SELF'].'?pg='.($pg-1).'&q='.$what.'">Previous</a>';
    }
    //if you have more registers to show...
    if(($countpls-(($pg-1)*10))>10){
     echo '<a id="pgnvg" href="'.$_SERVER['PHP_SELF'].'?pg='.($pg+1).'&q='.$what.'">Next</a>';
    }
}

要计算要在查询中使用的偏移量,请使用:

$offset = ($_POST['pg']-1)*10;

答案 2 :(得分:0)

如果您按照教程掌握基本概念,我认为这对您有好处。它甚至可以提供以下示例:1)替换当前的分页或2.)修复它。

http://www.phpfreaks.com/tutorial/basic-pagination