За последние 24 часа нас посетили 18893 программиста и 1623 робота. Сейчас ищут 905 программистов ...

Список друзей пользователя

Тема в разделе "PHP для новичков", создана пользователем sham, 25 мар 2014.

  1. sham

    sham Активный пользователь

    С нами с:
    19 мар 2014
    Сообщения:
    54
    Симпатии:
    0
    Встал вопрос,как организовать список друзей пользователя?
    Есть поле в таблице user(Например) с названием (friend).Была идея заносить ид друзей которых хотел пользователь добавить,но встала проблема.Поле после каждого добавления перезаписывается и в нем сохранается только последний ид.Подскажите как можно это организовать(список друзей), или что нужно исправить.

    Заранее, благодарю!
     
  2. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    2 таблицы.
    1 таблица пользователей.
    2 таблица связей.

    когда жмешь кнопку добавить в друзья, в 2 табл. пишется user_id = %you_id% friend_id = %friend_id% accepted = 0
    accepted = 0 означает, что предложение дружбы еще не принято.

    затем. когда надо вывести список друзей. просто выводи SELECT * ..... WHERE user_id = %you_id% and accepted = 1
    так же и с кол-вом друзей.

    если твой друг заходит посмотреть свою страницу. ты ведешь поиск по where friend_id = %you_id% and accepted = 0
    так узнаешь сколько заявок в друзья. когда подтверждает заявку. ты проставляешь accepted =1 а также делаешь копию
    user_id = %you_id% friend_id = %friend_id% accepted = 1

    Добавлено спустя 2 минуты 23 секунды:
    теперь по русски. жмешь кнопку добавить в друзья. в 2 таблицу записываешь себя и ид друга. проставляешь флаг, что дружба не принята.
    затем когда друг заходит к себе на страницу, скрипт просматривает входящие предложения дружбы (ищет свой ид в friend_id и аццептед = 0) и если такой находится, выводится пользователь, который предложил дружбу. есл иподтверждается, подтверждаешь в таблицедружбу, а также делаешь копию записи дружбы, но уже со своей стороны
     
  3. sham

    sham Активный пользователь

    С нами с:
    19 мар 2014
    Сообщения:
    54
    Симпатии:
    0
    А в таблице user можно создать 2 поля(Например add_fr-заявка в друзья ,friend-список друзей пользователя)

    Добавлено спустя 1 минуту 29 секунд:
    И каким образом перезаписывать поля, например у меня были заявки в друзья, чтоб их дополнить новой.
    Через UPDATE? Но он вроде как перезапишит
     
  4. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    почитайте мат часть баз данных на тему связей.
    http://www.online-academy.ru/demo/access/urok1/teor/teor4.htm - для новичков совсем
    http://habrahabr.ru/post/193380/ серия интересных статей

    Добавлено спустя 1 минуту 1 секунду:
    кто кого перезапишит?
    новая заявка в друзья - новая запись в бд.
    при отзыве дружбы - записи просто удаляются.

    включите мозг
     
  5. sham

    sham Активный пользователь

    С нами с:
    19 мар 2014
    Сообщения:
    54
    Симпатии:
    0
    ("INSERT INTO user(add_fr) VALUES('$add_id') WHERE mail="$mail_c" AND pass="$pas_c"");
    Скажите где ошибка синтак ?
     
  6. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    "");

    Добавлено спустя 55 секунд:
    mysql_query("INSERT INTO user(add_fr) VALUES($add_id) WHERE mail='$mail_c' AND pass='$pas_c' ");

    Добавлено спустя 43 секунды:
    не жалей букв на переменные. потом легче будет оперировать словами, а не их кривыми сокращениями.
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    sham
    В таблице user одна строка на одного пользователя. Соответственно, в ней ты можешь хранить только одного друга.
    Вместо поля в таблице user надо создать таблицу friends с двумя полями: user1 и user2.
    Например, если пользователь с id = 12 подружился с тремя пользователями, таблица friends должна выглядеть вот так
    Код (Text):
    1. |user1|user2
    2. +-----+-----
    3.  12  |   43
    4.  12  |   55
    5.  12  |   17
     
  8. maxycwebber

    maxycwebber Новичок

    С нами с:
    25 мар 2014
    Сообщения:
    263
    Симпатии:
    11
    Адрес:
    Gdansk
    ну сопсна как я и предложил, только 3 поле у меня флажок принял не принял дружбу
     
  9. sham

    sham Активный пользователь

    С нами с:
    19 мар 2014
    Сообщения:
    54
    Симпатии:
    0
    Спасибо что так обьяснил! :)