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

2018/01/18 (2018/02/09更新) カテゴリー:WEBシステム開発 タグ: , ,
SPONSOR
  • このエントリーをはてなブックマークに追加

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
IRITECはITエンジニアが「コンテンツで集客・広告収入を得る」「お客様の話をきいて価値を提案できる」 「自分で考えたアプリで収益を上げる」など、エンジニアが生き残っていくための情報をお届けしているビジネスハックメディアです。

COMMENT

コメントをどうぞ

RELATION

関連する記事

SPONSOR

RECOMMEND

おすすめの記事

SPONSOR

TAG

タグから記事をさがす

PROFILE

イリテクのプロフィール

イリテクはWEBシステム・スマホアプリ開発を得意とする制作会社です!
入江 慎吾/イリテク株式会社 代表取締役
1982年生まれ。長崎県 五島列島出身。福岡のWeb制作会社で10年間、ディレクション、Webデザイン、システム開発に従事。 その後、趣味で始めたiPhoneアプリ開発をきっかけにフリーランスとして独立後、2014年にイリテク株式会社として法人化。(もっと詳しいプロフィール)
SPONSOR

PRODUCT

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