2017-02-10 13 views
0

私はページ区切りを新しくしています。それは部分的に動作します。私のページネーションは、正しいページ数だけでなく、各ページの正しい結果数を引き出します。しかし、問題はそれが各ページで同じ結果を示すことです。私も問い合わせの際にこれを試してみましたPHP-ページ区切り、すべてのページで同じ結果

$rows = mysqli_num_rows($result); 
echo $rows; 
//Total row count. 


//Number of results we want displayed per page. 
$page_rows = 3; 
//Last page, page number. 
$last = ceil($rows/$page_rows); 
//Making sure that last page cannot be less than one. 
if($last < 1){ 
$last = 1; 
} 
//Establish pagenum variable; 
$pagenum = 1; 
//Get paenum variable from the URL if it exists. 
if(isset($_GET['pn'])){ 
$pagenum = preg_replace('#[^0-9]#', '', $_GET['pn']); 
} 
//Making sure the pagenum isn't below one. 
if($pagenum < 1){ 
$pagenum = 1; 
}else if($pagenum > $last){ 
$pagenum = $last; 
} 
//This sets the limit. 
$limit = 'LIMIT ' .($pagenum-1) * $page_rows .',' .$page_rows; 
//Establish the pagination controls. 
$paginationCtrls = ''; 
//If there is more than one page worth of results. 
if($last != 1){ 
if($pagenum > 1){ 
    $previous = $pagenum - 1; 
    $paginationCtrls .= '<a href = "'.$_SERVER['PHP_SELF'].'?pn='.$previous.'">Previous</a> &nbsp; &nbsp; '; 
    //Clickable links that should appear on the left. 
    for($i = $pagenum - 4; $i < $pagenum; $i++){ 
     if($i > 0){ 
      $paginationCtrls .='<a href = "'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> &nbsp; '; 
     } 
    } 
} 
$paginationCtrls .= ''.$pagenum.' &nbsp; '; 
for($i = $pagenum+1; $i<= $last; $i++){ 
    $paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> &nbsp; '; 
    if($i > $pagenum+4){ 
     break; 
    } 
} 
if($pagenum != $last){ 
    $next = $pagenum+1; 
    $paginationCtrls .= ' &nbsp; &nbsp; <a href="'.$_SERVER['PHP_SELF'].'?pn='.$next.'">Next</a>'; 
} 
} 
$sql = "SELECT * FROM blogdata2 ORDER BY id DESC ".$limit; 

$sql = "SELECT * FROM blogdata2 ORDER BY id DESC $limit"; 

しかし、どれもが動作するように見える。ここ

はコードです。何が問題なの?

ご協力ありがとうございます。

+0

最下部に '$ sql'を指定した後でクエリを再実行しますか? – Barmar

+0

'$ result'に必要な結果が既にあるので、' LIMIT'で別のクエリを実行する代わりに、 'mysqli_data_seek'を使って始めたい行にジャンプすることができます。 – Barmar

+0

はい、私は下のクエリを再実行します、またLIMITを使用するのは大丈夫ですか?コードに何か問題がありますか? –

答えて

0

問題がここにあります: $ last = ceil($ rows/$ page_rows);

制限のないクエリを増やすロジックを作成します。