質問

映画のレビューのリストを年代順に並べようとしています。ユーザーが選択できる2つのオプション、時系列およびアルファベット順があります。ページはデフォルトでアルファベット順ですが、ユーザーが時系列オプションをクリックしても何も起こりません。

ここに現在あるコードを示します:

// category 3 is 'reviews', category 12 is 'dvd reviews'
                if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
                {
                    $output = AL_HELPER::GetArticles($articleResult);
                }
                else
                {
                    $output = AL_HELPER::GetArticlesABC($articleResult);
                }

私がしたことは、2つのifをフリップフロップすることでした。 GetArticlesを最初に、GetArticlesABCを2番目に配置します。つまり、次のようになります。

// category 3 is 'reviews', category 12 is 'dvd reviews'
                if (($GLOBALS["CategoryId"] == 3 || $GLOBALS["CategoryId"] == 12) && !isset($_GET['unsort']))
                {
                    $output = AL_HELPER::GetArticlesABC($articleResult);
                }
                else
                {
                    $output = AL_HELPER::GetArticles($articleResult);
                }

実際にレビューを時系列順に並べ替えましたが、アルファベット順のオプションはすべて取り除いていました。本質的には、年代順のレビューの長いリストでした。したがって、明らかにそれは私たちが望むものではありません。

ページにリストするアイテムの数を制限する方法を知っている人はいますか?または、ここで完全に異なるアプローチが必要な場合は、提案がありますか?

役に立ちましたか?

解決

バックエンドデータベースとSQLの使用が、LIMIT演算子を使用して一定数の結果のみを取得するのと同じくらい簡単な場合、ページあたりの結果数を制限します。その後、プルした結果のセットに関連するページ間で変数を渡すことにより、次/前の操作を実装できます。

例:

SELECT <Whatever> FROM <review table> LIMIT 0,10

最初の10個の結果を取得します。

SELECT <Whatever> FROM <review table> LIMIT 10,20

次の10を取得します。数値を変数で置き換えることにより、ページネーションを実現できます。

SELECT <Whatever> FROM <review table> LIMIT resultIndex,resultIndex+10
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top