使用PHP显示"Next"一个“Previous"在分页


Using PHP to show "Next" an "Previous" in 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 "";
}
?>

我希望只有在有更多的条目要显示时才显示下一个,只有在有更多的条目要循环返回时才显示前一个。它在第一页工作,然后在最后一页Next显示,尽管事实上没有更多的结果要显示。

我试着添加'else',但它仍然不起作用。

任何想法?

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;

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

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

我认为如果你按照教程来掌握基本概念会对你有好处。它甚至附带了一个示例,可以1.)替换当前分页或2.)修复它。

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