Имею систему добавления друзей на сайте, необходимо добавить в настройку аккаунта новый пункт в настройку кто может отправлять заявку в друзья. На данный момент есть только настройка ВСЕ и НИКТО необходимо добавить пункт ДРУЗЬЯ ДРУЗЕЙ. Значение которое настраивается в настройках профля помещается в таблицу setting где id_user равен моему айди и столбец friends = 3. Необходимо написать обработку на PHP которая переберёт всех друзей друзей и если есть значение в котором друг является моим другом то поставить в переменную $access = 'Y'. Сам код не обязательно писать, напишите примерное понимание как это можно реализовать. Спасибо.
Допустим у нас есть таблица friends
с полями guy_id
и friend_id
, которая печесляет идентифиакторы всех друзей (friend_id) для конкретного пользователя (guy_id).
Предполагается, что для каждой записи guy_id = A, friend_id = B
существует запись guy_id = B, friend_id = A
Тогда в общем случае получение списка всех друзей и друзей друзей будет выглядеть как
select t.friend_id
from friends t
where t.guy_id = <guy_id>
union
select distinct f.friend_id
from friends t
join friend f
on f.guy_id = t.friend_id
where t.guy_id = <guy_id>
Но, мне кажется, задачу правильно ставить не то, как выбрать всех друзей друзей, а как именно реализовать проверку в момент когда кто-то кому-то собирается что-то написать.
...
case
when exists (
select *
from friends t
where t.guy_id = <кому_пишут_id>
and (t.friend_id = <кто_пишет_id>
or t.friend_id in (
select f.friend_id
from friends f
where f.guy_id = <кто_пишет_id>
)
)
)
then <можно писать>
else <нельзя писать>
end
В чём разница двух подходов: если в первом случае СУБД выбирет всех друзей, и затем для каждого друга выбирает список всех его друзей, затем устраняя дубликаты, то во втором случае СУБД выбирает только 2 списка: список друзей того, кто пишет, и список друзей того, кому пишут. Затем задача сводится к обнаружению существования пересечения этих списков, что является относительно дешёвой операцией.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть форма, там тег select, вот как запретить его редактирование не используя disabledПотому что этот disabled обходится очень просто
По умолчанию, если указывать несколько цен в Вариациях, то на странице товара они будут выводиться, как селектВыбираем нужную и в корзину
В коде в отдельном классе произвожу выборки и возвращаю ResultSet