order by RANDのページネーションでアイテムが重複する問題を解決

2018/02/09更新 カテゴリー:WEBシステム開発 タグ: , ,

order by RANDを使うと、表示順番を変えられます。

しかし、limitをつかってページネーションを組み込む場合、毎回order by RANDされるため、表示されるアイテムが重複してしまいます。1ページ目に表示されているアイテムを考慮しておらず、毎回全データからランダムなアイテムが表示されるということです。

SPONSOR

seedを指定すればいい

結論として、order by RAND(seed)というように、seedを指定してあげればいいです。このseedは文字列でOKです。

使えそうなアイディアとしては、セッションをつかって
$_SESSION[“rankey”] = uniqid(rand(), true);
のようにセッションがきれるまでは固有のseedをつくり、利用する方法です。

このようにすると、同じseedが使われるためページをまたいでもアイテムが重複されることがありません。

SPONSOR

PROFILE

プロフィール

入江 慎吾
サービスで世界をよりよくするために挑戦中。個をエンパワーメントするプロダクトをつくっています。個人開発コミュニティ「入江開発室」を運営(約300名) / MENTAなど20個以上のプロダクトを開発。
(詳しいプロフィール)

PRODUCT

イリテクで開発したプロダクト

RELATION

関連する記事

SPONSOR

TAG

タグから記事をさがす