2011-01-11 11 views
2

1ページに10個のレコードが表示されています。私は現在、私が働いていることを持っている変数.. PHP: "prev"と "next"のリンクを試してみよう

$total = total number of records 
$page = whats the current page I'm displaying 

私は私のページの上部にこれを置い

...

if ($_GET['page'] == '') { $page = 1; } //if no page is specified set it to `1` 
else { $page = ($_GET['page']); } // if page is specified set it 
ここ

私の2つのリンクがある...

if ($page != 1) { echo '<div style="float:left" ><a href="index.php?page='. ($page - 1) .'" rev="prev" >Prev</a></div>'; }  
    if (!(($total/(10 * $page)) < $page)) { echo '<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>'; } 

私は何かを考えていない限り、ページが '1'以外のときはいつでも「前の」リンクを表示できます。どうしたら、最後のページに「次へ」リンクが表示されないのですか?

答えて

2

はとコードの最後の行を置き換えます。 ceil関数を使用します。

$page < ceil($total/10) 
+0

にきちんと記事があります私は複雑に行っていた:(それを考えなかった理由。おかげで再び大きな感謝を知らない作品! – daveomcd

1
!(($total/(10 * $page)) < $page) 

...これは正しいとは思わない。

$totalが1000であるとし、99/990 であるとしますが、さらに別のページが表示されます。

10 * $page$total以上であることを確認してください。あなたは残りの部分がある場合、余分なページとPAGECOUNT ($total/10)で割った合計が必要

if ($page*10 < $total) echo '<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>'; 
1

ページネーションは、それがどこかのクラスのいくつかの種類を作成することが最善だと、Webプロジェクトではそれほど頻繁に来るものですか、あなたが必要なすべてを与える少なくともいくつかの便利機能、。

$totalPages = ceil($total/10); 
if ($page < $totalPages)) { echo "<div style="float:right" ><a href="index.php?page='. ($page + 1) .'" rev="next" >Next</a></div>"; } 
+0

うんPaginationクラスが最適なオプションです。ここには多くのクラスがあります:) – Andreyco

1

はここで役に立つかもしれないものの辞書を返す関数です。 ..これはちょうどクイックコードです...後で、いくつかのページスパンで作業します(いくつのページが前のページ番号の前/後に表示されるべきかを設定します...)

1

// lets get total number of pages here 
$itemsPerPage = 10; 
$totalItems = 105; // just for example 
$pagesNo = ceil($totalItems/$itemsPerPage); 

// get the current page here... 
$current = (isset($_GET['page'])) ? (int)$_GET['page'] : 1; // if page is defined, use it, instead use 1 
$current = ($current > 0) ? $current : 1;     // if page was -1,-2... for instance, use 1 

// show us 'Prev' button 
echo ($current > 1) ? "<a href='".($current-1)."'>Prev</a>" : ""; 

// show current page NO 
echo $current; 

// show 'Next' button 
echo ($current < $pagesNo) ? "<a href='".($current+1)."'>Next</a>" : ""; 

は、このようにする必要があります:あなたが最後の行に誤りがあり

function pagination($numberItems, $perPage, $currentPage) { 
    $numPages = ceil($numberItems/$perPage); 
    return array( 
     'numberPages' => $numPages, 
     'start' => ($currentPage - 1) * $perPage + 1, 
     'end' => min($currentPage * $perPage, $numberItems), 
     'hasNext' => $page != $numPages, 
     'hasPrev' => $page != 1 
    ); 
} 
1

最初のページか最後のページかを検出し、それらの条件に対してコードを「ガード」する必要があるように聞こえます。

if (/* not the first page */) { 
    // print the prev link 
} 

if (/* not the last page */) { 
    // print the next link 
} 

ページ= 1は非常に今、あなたはちょうどあなたが(整数の除算またはCEIL()行く方法でなければなりません)最後のページにいるかいないかどうかを判断する必要がある場合には、既にを検出するためのコードを持っています。 SQLからPHP結果のページの場合

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

関連する問題