嗨,我有一个基于PHP的分页和排序方法,可以正常工作。

我可以根据任何类别进行排序和分页,但是每页行数却有问题。

我已经使用GET方法来获取信息以进行分页和排序

    if (isset($_GET['rpp'])&& is_numeric($_GET['rpp'])) {
    $rowsperpage = mysql_real_escape_string($_GET['rpp']);
}else{
    $rowsperpage='5';
}
if (isset($_GET['page']) && is_numeric($_GET['page'])) {
   $currentpage = (int) mysql_real_escape_string($_GET['page']);
} else {
   $currentpage = 1;
}
if (isset($_GET['order']) && in_array($_GET['order'], $order)) {
    $orderby = mysql_real_escape_string($_GET['order']);
}else{
    $orderby='id';
}
$sortby = '';
if (isset($_GET['sort'])) {
    $sortby = mysql_real_escape_string($_GET['sort']);
}else{
    $sortby='desc';
}


对于分页,我使用了以下类型的url字符串

echo " <li><a href='$pagename?order=$orderby&sort=$sortby&rpp=$rowsperpage&page=$nextpage'>Next&raquo;&raquo;</a>


和我的mysql查询是

$sql2 = "SELECT * FROM internet_security ORDER BY $orderby $sortby LIMIT $rowsperpage OFFSET $offset";


在html中,我使用链接对类别进行排序

        <a href="?order=id&sort=desc">id-desc:</a>
        <a href="?order=id&sort=asc">id-asc:</a>

        <a href="?order=title&sort=desc">title-desc:</a>
        <a href="?order=title&sort=asc">title-asc:</a>

        **limit rows by**
        <a href="?&rpp=5">5</a>
        <a href="?&rpp=10">10</a>
        <a href="?&rpp=20">20</a>


我的问题是
一切都工作正常,除非我通过限制行来限制每页的行数-将行限制为选择的limit(5,10,20),但是如果我单击分页,则所有事物都将返回其默认设置值,即按id和以DESC顺序,LIMIT为5。

如果我喜欢

            <a href="?order=id&sort=desc&rpp=5">id-desc:</a>
            <a href="?order=id&sort=desc&rpp=10">id-desc:</a>
            <a href="?order=id&sort=desc&rpp=20">id-desc:</a>


然后它可以工作,但然后我必须至少具有12个链接才能使用全部功能。这不是标准方法。

我想要的是一旦默认情况下设置了限制或通过排序选项设置了限制,我将能够按ID标题等进行排序。并且paginatin应该与其一起工作。

我希望我说清楚了。
请查看我做错了什么,并为我的方法提出任何可能的解决方案。

最佳答案

(升级为答案)

$rpp存储在$_SESSION变量中,仅在$_GET中存在时更新:

    if ( isset($_GET[    'rpp'])) $_SESSION['rpp'] = intval($_GET['rpp']);
elseif (!isset($_SESSION['rpp'])) $_SESSION['rpp'] = 5;


然后在查询中使用$_SESSION['rpp']

$sql2 = "
  SELECT   *
  FROM     internet_security
  ORDER BY $orderby $sortby
  LIMIT    $_SESSION[rpp] OFFSET $offset
";

关于php - 修改分页排序方法以更改每页行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10783445/

10-16 05:56
查看更多