分页下一页应为2但为0

时间:2015-12-21 14:32:41

标签: php mysql

第一页应为1,但其为-1,下一页应为2,但为0。

我该如何使这项工作?我试图编辑$ page但是当我这样做时,if / else变得很奇怪。

我添加了整个代码......

 ...
$resultt= "SELECT * FROM users WHERE AND country='$okc' AND state='$oks'";

if(!empty($a1) && empty($a2)){
  $resultt .= " AND aar>=";
  ...
}

if语句超过1个。

         $result = mysqli_query($con,"$resultt");
         $rec_limit = 19;
         $row = mysqli_fetch_array($result);
         $rec_count = $row[0];

         if( isset($_GET['page'] ) )
         {
            $page = $_GET['page'] + 1;
            $offset = $rec_limit * $page ;
         }
         else
         {
            $page = 0;
            $offset = 0;
         }
         $left_rec = $rec_count - ($page * $rec_limit);

         $resultt .= "LIMIT $offset, $rec_limit";
         $sql = $resultt;

         $retval = mysqli_query( $con, "$resultt" );

         if( $page > 0 )
         {
            $last = $page - 1;
            echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |";
            echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
         }

         else if( $page == 0 )
         {
            echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
            }

         else if( $left_rec < $rec_limit )
         {
            $last = $page - 2;
            echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>";
         }

while($row = mysqli_fetch_array($retval, MYSQL_ASSOC))
{

}

2 个答案:

答案 0 :(得分:1)

$ _ GET是一个类似于$ row的数组。

访问您始终使用[]的数组键。

将您的内容更改为$ _GET ['page']

更好:

$page = isset($_GET['page']) ? intval($_GET['page']) : 1;

是页面设置然后将值转换为int,因为你不知道什么是incomming。 如果没有设置,请参阅第1页。

顺便说一句。像这样的结构:

$resultt = "LIMIT $offset, $rec_limit";

可以/会在你的主页内导致sql注入错误! 永远不要用变量构建一个sql! 改为使用参数!

答案 1 :(得分:1)

您应该更改部分代码才能使其正常工作。 $_GET['page']应该为您提供查询的页码,所以不要试图操纵它。

$sql = "SELECT * FROM users WHERE country='$okc' AND state='$oks'"
$rec_limit = 10;
$result = mysqli_query( $con, $sql );
$row = mysqli_fetch_array( $result );
$rec_count = $row[0];
$left_rec = $rec_count - ( $rec_limit * $page );


$page = isset($_GET['page']) ? intval($_GET['page']) : 1;
$offset = $rec_limit * ( $page - 1 ) ;

$sql.= " LIMIT $rec_limit OFFSET $offset";
$result = mysqli_query( $con, $sql );

$row = mysqli_fetch_array( $result );

if( $page > 1 ){
    $last = $page - 1;
    echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |";
    echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
}else if( $page == 1 ){
    echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>";
}else if( $left_rec < $rec_limit ){
    $last = $page - 2;
    echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>";
}

while( $row = mysqli_fetch_array( $result, MYSQL_ASSOC ) ){

    // use $row to echo row contents ...

}