Случайная выборка товара, с последующей разбивкой на страницы

Alex2004

Новичок
Случайная выборка товара, с последующей разбивкой на страницы

Всем привет!
Может подскажете как это осуществить:
Есть таблица товаров, из этой таблицы случайным образом выбираются все товары и разбиваются на страницы, как сделать так чтобы товары которые отобразились на первой странице не отображались на следующих и т.д.
 
случайным образом выбираются все товары
это как? )

вообще
http://www.google.ru/search?hl=ru&q=%D0%BF%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%87%D0%BD%D1%8B%D0%B9+%D0%B2%D1%8B%D0%B2%D0%BE%D0%B4+mysql&btnG=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA&lr=
 
Вот пример запроса.
select id from goods order by rand() limit начальное значение, колличество
Выборка происходит когда пользователь заходит на главную страницу.

-~{}~ 28.01.06 12:13:

Но при такой выборке очень часто на других страницах повторяются товары которые были на предыдущих страницах.
 
мне вот очень интересно - А ЗАЧЕМ такая х... может вообще в принципе понадобиться?
 
Alex2004
А как ты себе это представляешь? Чтобы не повторялись на разных страницах при случайной сортировке нужно сохранять отсортированное множество сразу после первого показа. Откуда MySQL будет знать какие элементы уже были показаны пользователю?
 
Это пожелание клиента. Вот с этим пожеланием сейчас и борюсь.

-~{}~ 28.01.06 12:36:

Вот и я думаю сохранять историю. Но подумал возможно есть более простой способ.
 
Alex2004
А что он хочет? Чтобы человек пришел на сайт, получил SID, табличка отсортировалась по RAND(), запомнился порядок следования элементов, и появился постраничный вывод? Это даже со стороны пользователя неудобно помоему.

-~{}~ 28.01.06 12:42:

Проще сделать вот как: при создании сессии получи кол-во рядов в таблице, задай массив в котором каждый ключ (1,2,3...) означает номер страницы, а значение - специальное случайно выбранное (распределенное) start_pos для LIMIT'а. Этот массив сохрани в сессии, а потом для получения элементов страницы [sql]SELECT `id` FROM `goods` LIMIT $pages[N], $per_page[/sql]
 
Это пожелание клиента.
Приходит клиент в больницу...
- Доктор, кастрируйте меня!
-Зачем?! Молодой, симпатичный парень...
-Доктор, надо!!!
После операции.
-Ну, как самочуствие?
-Спасибо, хорошо.
-И все-таки, зачем вам это?
-Все дело в том, что моя девушка сказала,
что выйдет замуж только за еврея...
-Э-э, батенька, так вам нужно было делать
обрезание.
- А Я ЧТО СКАЗАЛ???
 
Я это ему объяснял. Думаю придеться еще раз объяснять.

-~{}~ 28.01.06 12:48:

Хороший анекдот :).
 
Гы =) Проще всё. В выражение order by rand() подставляем число. Не помню, как в MySQL правильно. order by rand(NUM), кажется. Которое генерируем в скрипте случайным образом для каждого посетителя и храним в сессии. Одно(!) число, а не последовательность.

P.S.: Рома, прости, не сдержалась =)
 
svetasmirnova
Я об этом варианте подумал изначально, но потом отказался т.к. сортировать приходится каждый раз всю таблицу. А если сразу распределить, то не надо.
 
Сверху