![]() |
Модераторы: skyboy, MoLeX, Aliance, ksnk |
![]() ![]() ![]() |
|
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
Привет всем.
Есть таблица с пользователями, id, name, age и тд. На страницу выводится один пользователь, и кнопка, добавить, или следующий. Логика работы должна быть такая, один пользователь, скажем с id 1, просматривает других пользователей. Если первый пользователь, добавляет второго пользователя, то он добавляеться другую таблицу, типа друзья, и в первом списке больше не показывается. Так же, пользователь может заблокировать другого пользователя, и его тоже больше не должно быть в списке. Там еще много наворотов, типа выбор по параметрам, странам, случайный вывод.. Но это пока не сильно интересует. Интересует именно логика, как и где лучше хранить параметры выбранных-удаленных пользователей? Пока на ум приходит два варианта, создать еще одну таблицу, и в ней хранить user1, user2. Если есть запись 1 -> 2, 1 -> 3, 1 -> 5. То этих пользователей не показывать. Не много смущает что что эта таблица очень быстро вырастет до гигантских размеров, и делать в ней перебор будет не очень хорошо. К тому же не совсем понятно как доставать пользователей из первой таблицы. Достал, проверил, следующий? Не очень логично. Второй вариант, создать таблицу user, users, и хранить там номер пользователя, номера пользователей, по типу 1 -> array(2,3,5), и просматривать этот массив на предмет соответствия. Массив в память, и базу уже не дергать. Боюсь за размеры массива. Который будет висеть в памяти. Но проблема в принципе та же, что и в первом варианте, как доставать пользователей? Перебирать все возможные варианты, пока не найдем нужного? А если нужный будет сотым? Может кто сталкивался с похожей ситуацией, помогите советом, как лучше организовать структуру. |
|||
|
||||
Absinthe |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 1 Всего: 11 |
N_Ghost, почему эта тема в профи?
Тебе нужны друзья и банлист? Мог вопрос одним предложением задать вместо этого месива текста? ![]() Дополнительная таблица: id, user_id, target_id, action targer_id - это пользователь, которого френдит или блокирует пользователь user_id. action может иметь значения 'friend' и 'blocked' Если используешь постгрес, то вместо этого можно прямо в твоей основной таблице добавить поля blocked и friends типа int[] и складывать в них id. Это сообщение отредактировал(а) Absinthe - 11.10.2011, 12:13 |
|||
|
||||
N_Ghost |
|
|||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
Absinthe, мне нужна логика, а не код.
Там не друзья, а не много сложнее. Но это не проблема. Основная проблема, что для вывода случайного человека, придется бегать по всей второй таблице. Сравнивать, и только потом, или выводить, или искать следующего юзера. Я боюсь что это может очень не плохо сказаться на нагрузке. Но, для полного счастья, надо еще проверять, чтоб пользователь не показывался 2 раза в одном круге, это уже конечно в сессию. Которая при новом поиске, обнуляется, и все по кругу. Вот я и спрашиваю, как рациональней такое реализовать. |
|||
|
||||
Absinthe |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 1 Всего: 11 |
Сюда свой вопрос напиши в минимизированном и полном виде. |
||||
|
|||||
N_Ghost |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 24 Регистрация: 18.6.2008 Репутация: нет Всего: нет |
Хорошо, пойдем по порядку. Мне нужно отсечь номера пользователей с которыми уже что то сделали. Причем, часть номеров отсечь навсегда. А вторую часть, только до перезагрузки страницы, или выбора новых параметров поиска. Все это дело на mysql. |
||||||
|
|||||||
Absinthe |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 526 Регистрация: 4.5.2011 Репутация: 1 Всего: 11 |
|
||||
|
|||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | PHP: Для профи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |