За последние 24 часа нас посетили 17495 программистов и 1283 робота. Сейчас ищут 1355 программистов ...

Mysqli запрос по получению друзей

Тема в разделе "PHP и базы данных", создана пользователем PHP-Chainik12, 23 дек 2018.

  1. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    Есть 2 бд data где пользователи и friends где друзья:
    data
    id login password nickname ban
    1 Mike 123 Sal 0
    2 Alex 123 Master 0
    3 John 123 John 0
    4 Alexey 123 Priler 0
    friends
    id uid_1 uid_2 query
    1 2 3 1
    2 2 5 0
    3 3 6 1
    4 3 1 1

    Поясню бд friend
    id - идентификатор(Вы уже поняли)
    uid_1 - друг1
    uid_2 - друг2
    query - это boolean поле которое имеет 2 значения 1 значит друг добавлен и 0 значит друг не добавлен (значит что друг еще не принял заявку)

    Вопрос :
    1.Каков запрос mysqli чтобы выбрать всех друзей допустим Alex, тип так ? :
    PHP:
    1. $id = 2(id алекса)
    2. $query = mysqli_query($con,"SELECT * FROM `friends` WHERE (`query` = 1 )  AND `uid_1` = $id OR `uid_2` = $id";
    3. $fetch = mysqli_fetch_assoc($query);
    4. if($fetch['uid_1'] != $id){
    5.   $query_1 = mysqli_query($con,"SELECT * FROM `data` WHERE `id` =  " .$fetch['uid_1'] . " ");
    6.   while($fetch_1 = mysqli_fetch_assoc($query_1)){
    7.     echo $fetch_1['login'];
    8.   }
    9. }elseif($fetch['uid_2'] != $id){
    10.    $query_1 = mysqli_query($con,"SELECT * FROM `data` WHERE `id` =  " .$fetch['uid_2'] . " ");
    11.    while($fetch_1 = mysqli_fetch_assoc($query_1)){
    12.     echo $fetch_1['login'];
    13.    }
    14. }
    Пытался так сделать но не получалось может у вас выйдет
    Спасибо заранее
    бд таблицы сверху искажены форумом пробелы удалились но думаю вы поймете
     
  2. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.210
    Симпатии:
    185
    думаю тут нужна промежуточная таблица

    ид, ид_юзера, ид_друга
    --- Добавлено ---
    Я так понял, что по твоей таблице, можно добавить только двух друзей?
     
  3. nospiou

    nospiou Старожил

    С нами с:
    4 фев 2018
    Сообщения:
    3.400
    Симпатии:
    510
    @PHP-Chainik12 Гугли по запросу many to many relationships и да прибудет с тобой сила.
     
  4. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @PHP-Chainik12 я вот 5 раза перечитал, но [​IMG]


    Покажи пожалуйста где в таблице friend находится Alex и где там у него друзья, я уж напишу как это вытянуть.
     
  5. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    У алекса id 2. uid_1 и uid_2 это id 2 друзей тоесть если uid_1 = 2 и uid_2 = 1 то алекс и майк друзья
    --- Добавлено ---
    Потом попробую а так по моему замыслу можно добавлять их много допустим uid_1 = 2 и uid_1 = 3 значить алекс и джон друзья и еще uid_1 = 4 и uid_2 = алексей ,друзья как вы видите у алекса несколько друзей
    --- Добавлено ---
    Потом попробую а так по моему замыслу можно добавлять их много допустим uid_1 = 2 и uid_1 = 3 значить алекс и джон друзья и еще uid_1 = 4 и uid_2 = 4 , алекс и алексей друзья как вы видите у алекса несколько друзей
    --- Добавлено ---
    --- Добавлено ---
    Также скоро добавлю 2 бд это chat и messages
    Chat
    id uid_1 uid_2
    1 2 4
    Messages
    id chat_id sender folder text
    1 1 2 4 Привет

    Ну это пока тестовый вариант
     
  6. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Очередной чувак которому не дают покоя лавры Цукерберга и который начал писать соцсеть раньше чем прочитал хотя бы одну книгу по php. : D
     
  7. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    Да я просто так для себя
     
  8. Valick

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

    С нами с:
    12 авг 2018
    Сообщения:
    1.911
    Симпатии:
    328
    Чат и меседжер для себя, поговорить чтоль не с кем? :)
    Да ладно я шучу. Но только отчасти. Хочешь изучать язык, купи нормальную бумажную книгу
     
  9. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    [​IMG]
    Подойдет 100%
     
  10. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.264
    Симпатии:
    405
    @PHP-Chainik12 примерно так будет то что ты хочешь:
    PHP:
    1. SELECT DA.login AS frend
    2. FROM friends AS FR
    3. LEFT JOIN data AS DA ON DA.uid_2 = FR.id
    4. WHERE FR uid_1 = '2'
     
  11. PHP-Chainik12

    PHP-Chainik12 Новичок

    С нами с:
    31 янв 2018
    Сообщения:
    32
    Симпатии:
    2
    Спасибо
    --- Добавлено ---
    В mysqli не силен и хз что ты там написал потом попробую