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> ';
//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> ';
}
}
}
$paginationCtrls .= ''.$pagenum.' ';
for($i = $pagenum+1; $i<= $last; $i++){
$paginationCtrls .= '<a href="'.$_SERVER['PHP_SELF'].'?pn='.$i.'">'.$i.'</a> ';
if($i > $pagenum+4){
break;
}
}
if($pagenum != $last){
$next = $pagenum+1;
$paginationCtrls .= ' <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";
しかし、どれもが動作するように見える。ここ
はコードです。何が問題なの?ご協力ありがとうございます。
最下部に '$ sql'を指定した後でクエリを再実行しますか? – Barmar
'$ result'に必要な結果が既にあるので、' LIMIT'で別のクエリを実行する代わりに、 'mysqli_data_seek'を使って始めたい行にジャンプすることができます。 – Barmar
はい、私は下のクエリを再実行します、またLIMITを使用するのは大丈夫ですか?コードに何か問題がありますか? –