2012-02-02 12 views
1

ページの下にリストされた記事を内容とするウェブサイトを作成しています。ブログスタイルを考えてみてください。しかし、私は50ページの記事を1ページに表示するのはちょっとばかげていると思うので、それを自動的にページに分割する最良の方法はなんですか?ページングされたインターフェイスを設計するための最良の方法

PHPとMySQLを使用してデータベースから記事を取得しています。

+2

ベストは少しあいまいです。一緒に検索の最後のポストのpost-timestampをリンク「次」を与えますそれによって特定のものを意味する場合は、明確にしてください。 – Ktash

+0

私はちょうどどんな方法を探していました。どこから始めたらいいか分からない。 – muttley91

+0

CMSでWordpressを試してみてください。人気があり、コミュニティで多くのサポートを受けています。 – Relic

答えて

2

混合し、他のものと一致させることができるカップルの提案。

  1. X件の記事をクエリします。ページの一番下には、最後に表示された記事の後にX個の記事を検索する次のX番号に行くためのリンクがあります。厳密なコードは物事をどのように整理するかによって異なりますが、基本的にはX記事に1ページの内容を呼び出し、動的ページに開始オフセットを与える値を与えます。
  2. 長い記事がある場合は特にいいです、いくつかのajaxを使うか、あるいは記事を "展開"するために良いole形式のjavascriptを使ってください。最初の段落だけに表示を制限してから、記事の残りの部分を表示する「もっと読む」ボタンを押してください。それがページに埋め込まれていて、cssとjavascriptで隠されている/表示されている場合でも、それはまだ検索エンジンによってインデックスに登録されます。
  3. おそらく以前のSEOの目的よりも優れています。各記事を自分のページに入れ、記事リストに最初の段落を表示するだけで、記事の全ページにリンクする「もっと読む」リンクが表示されます。 a)簡単です(KISSは常に良い方法です)b)キーワードを混在させることなくサイトのユニークなページを提供します(SEOに適しています)。c)記事を他のサイトから直接簡単にリンクすることができます。 (SEOに適しています)

ちょっとした思いです。何かを行う "最良の"方法は決してなく、文脈の中でより意味をなさない方法です。

1

総ページ数を取得するためにページごとの量によって、現在のカテゴリに

除算合計を記事の量をカウントします。 ID>(ページあたりPAGENUM *量)

のmysqlからページあたりの量で

セレクト記事、ナビゲーション用のリンクを作成します。

例のクエリは:

$sql = "SELECT * FROM articles ORDER BY date ASC LIMIT 0, 20"; // This will return the first 20 

$sql = "SELECT * FROM articles ORDER BY date ASC LIMIT 40, 20"; // This will return 40-60 

注:これは、将来の参照/検索用のページ付けと呼ばれています。良い例がたくさんありますし、これを処理するいくつかのフレームワークもあります。

シンプルなチュートリアル:http://www.phpfreaks.com/tutorial/basic-pagination

1

私は特にPHPでは動作しませんが、このようなことを行う一般的な戦略は、1ページあたりのアイテムの数とスキップするアイテムの数に基づいて動的に制限するクエリを設計することです。言い換えれば、あなたのSQLは次の行に沿っている:

$stmt = $mysqli->prepare("SELECT id, title, createdDate FROM tArticles ORDER BY createdDate desc LIMIT :skip, :itemsPerPage"); 

あなたはページ番号で、これを追跡している場合は、あなたの:スキップバインド・パラメータは、(0から始まる)現在のページ番号を取ることによって導出されます1ページあたりのアイテム数を掛けること。

バインドする前に変数を整数としてキャストする必要があるため、潜在的な一般的な落とし穴を回避するために、おそらくthe answer for this questionを見てください。

1

は私がBloggerはこれをしなかった方法について見ていたし、それは非常に興味深いものだった一度覚え

それはこのようなものだった:

  • が(最新のポストでなければなりません)デフォルトpost-timestampを持って
  • はデフォルトdisplay-per-page(10-20のようなもの)
  • を持ち、その後post-timestampと 限界で検索を開始するあなたのDBの検索を行いますdisplay-per-page
  • display-per-page
関連する問題