#96 ページングの実装についてご相談

 [Public]
icon written by Monota at Aug 31, 2018 2:56 PM ( icon updated by Monota at Sep 1, 2018 9:19 PM <History> )
  Edit(Sign in)
  Stock
  Answer survey   Answer survey

  TOC

現在、記事一覧にページング機能を追加できないか検討中で、いずれプルリクを送れればと考えているところなのですが、ピン留め機能との兼ね合いで悩んでいます。お時間あるときでかまいませんので、相談させていただけないでしょうか。

ご相談というのは、添付ファイルのように、

  • 前へボタンは Offset が 0 の場合は表示しない。
  • 次へボタンは次のページがない場合は表示しない。
  • 全 XX 件中、XX 件目 〜 XX 件目 の表示を画面下部に追加。

としてみたのですが、ピン留め記事があると 1 ページ目に 51 件表示されてしまいます。そして 2 ページ目には、(もともと 2 ページ目に表示されるはずだった)ピン留め記事が 1 件表示されています。記事は全部で 51 件ですが、1 ページ目に 51 件、2 ページ目に 1 件で、全部で 52 件あるように見えています。このため、どのように件数を表示するべきかで悩んでいます。

ピン留めすると、1 ページ目のトップに固定されますが、これは本来 2 ページ目以降に表示されるべき記事であっても 1 ページ目に移動して表示していると思います。このため、1 ページ目には、

1 ページ目の表示件数(上限 50)+ ピン留め件数

が表示されていると推測しています。

今のところ修正方法として考えているのは、以下の3案のいずれかですが、いかがでしょうか?

  • ピン留め記事があると 1 ページ目のみ件数が多少ずれるが気にしない(添付ファイルのまま)。
  • 「 全 XX 件中、XX 件目 〜 XX 件目」の表示を画面下部に追加するのをやめる。
  • 全件数だけ表示して、「XX 件目 〜 XX 件目」の表示をやめる。

件数表示をやめて、単純に前へ/次へボタンの表示/非表示だけを制御するのが無難かなとも思っていますが、利便性を考えると、添付ファイルのままの方がいいような気もしています。

 Attach Files     - [2]


 Comment
[Registration] Aug 31, 2018 3:14 PM [Monota]
icon

または、

page1_pinnedcount.png

のようにすると、少し親切な気がしてきました。


 Like! × 0  
Collapsed
[Registration] Sep 18, 2018 9:22 PM [Koda]
icon

ご検討ありがとうございます。また、お返事が遅くなり申し訳ありません。

ピンどめを考慮すると、上のコメントのような表示がわかりやすいと思いました。

はじめのページだけ、ピンどめ表示になって50件+ピンどめの件数になるのですが、次のページからはピンどめがなくなって、
通常表示になるので、それぞれを表示する上のコメント案がわかりやすいと思ったからです。


 Like! × 0  
Collapsed
[Registration] Sep 23, 2018 12:17 PM [Monota]
icon

ご多忙のところ、ご回答ありがとうございます。
コメントに書いた方式で進めてみます。


 Like! × 0  
Collapsed
[Registration] Sep 27, 2018 9:43 PM [Monota]
icon

ストック一覧の「前へ」「次へ」の実装について考えてみたのですが、
もしご意見あればご教授いただけないでしょうか?(特になければスルーで構いません)

現状、ストック一覧の取得は、
権限によって 4 種類ほど SQL を使い分けているように見受けられました。

総件数を取得するためにほぼ同条件で select count する必要があるのですが、
これをすると SQL も倍増するため、今後の保守が大変になるかと思いました。

ですので、ストック等の SQL で取得しているものについては、
・オフセットが 0 の場合は「前へ」を表示しない。
・現在 SQL で 50 件を LIMIT で取得しているのを 50 + 1 件とし、結果リストも 50 + 1 件だったら「次へ」を表示する。
 画面上は取得した最後の 1 件をリストから削除して表示する。
というようにしたいと考えています。
この場合、総件数が取得できないので、○○件中XX〜YY件目を表示中、みたいな画面表示はできません。

ただ、それでも「前へ」「次へ」ボタンでユーザが迷子になることは
少なくなるというメリットはあるかなと考えています。


 Like! × 0  
Collapsed



 Add Comment