Skip to content →

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

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

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

seedを指定すればいい

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

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

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

SHARE

PROFILE

入江 慎吾
教える、学べるオンラインメンターサービスMENTAの代表 / 2-30個のサービスをつくり、M&Aで億単位の売却 / 受託開発20年→受託をやめサービス開発に専念→個人開発でつくったMENTAがヒット→ランサーズグループにジョイン / YouTubeで「サービスづくりで生きていく」配信中 / 「自分のサービスで生きていく」をコンセプトに個人開発オンラインサロン「入江開発室」を運営(詳しいプロフィール)

SUBSCRIBE

メールマガジンに登録いただけると、ブログの新着記事をお知らせいたします。(励みにもなります!)また、YouTubeチャンネルでも個人開発・サービスについての情報を発信中です。

SPONSOR

Published in WEBシステム開発