2016-05-22 8 views
0

私のウェブサイトには、テーブル内のすべてのレコードを表示するページがあります。だから、私は単純なページネーションの仕組みを持っています。すべてのレコードを日時と制限付きで取得する

ページングの場合、ページに応じて制限をテーブルに照会しています。

$query = "SELECT * "; 
$query .= "FROM records "; 
$query .= "LIMIT $start, $limit;"; 

これは完全に機能します。

ただし、レコードを取得するために必要な順序は、テーブルの順序ではありません。レコードのは日時に従うべきです。 (日付と時間の列があります)。

このようにクエリを変更すると、常にすべてのページに同じレコードが表示されます。私は必要なもの

$query = "SELECT * "; 
$query .= "FROM records "; 
$query .= "WHERE published = '1' ORDER BY date DESC, time DESC "; 
$query .= "LIMIT $start, $limit;"; 

は、すべてのレコードが日時で注文する必要があり、彼らはまた$start$limit変数に尊重するべきです。

基本的にはページネーションの仕組みです。

+0

正常に動作するはずです。あなたは '$ start'と' $ limit'を設定しますか? – nospor

+0

現在のクエリは機能しませんか? – Rahul

+0

現在のものは2番目のものです。それは働いていますが、それは適切に改ページされません。 – TharinduLucky

答えて

1

このための標準的なパターンは

$itemsPerPage = 10; 
$page = (int) $page; // get $page from route or $_GET['page'] or wherever 
$pageNum = (!empty($page)) ? (int) $page - 1 : 0; 
$start = $pageNum * $itemsPerPage; 

$query = "SELECT * "; 
$query .= "FROM records "; 
$query .= "WHERE published = '1' ORDER BY date DESC, time DESC "; 
$query .= "LIMIT $start, $itemsPerPage;"; 

のようなものではない最後に開始し、アイテムのその開始プラス番号を覚えています。

+0

ありがとう、私はそれが働いている! :)限界を正しく設定していなかったのは私の悪かったです! – TharinduLucky

1

$ start = 1、$ limit = 50、各ページの後に$ startと$ limitの両方を$ limitだけインクリメントすると仮定すると、 $start += $limit,$limit += $limit。これは、$ startと$ limitを次のページ分のレコードに移動するという効果があります。

関連する問題