За последние 24 часа нас посетили 19388 программистов и 1607 роботов. Сейчас ищут 902 программиста ...

Организация скрипта "Друзья на сайте"

Тема в разделе "PHP и базы данных", создана пользователем Noob1984, 12 янв 2014.

  1. Noob1984

    Noob1984 Новичок

    С нами с:
    27 сен 2013
    Сообщения:
    12
    Симпатии:
    0
    Всем привет!
    Уважаемые друзья, давно хотел реализовать скрипт "Друзья на сайте". Что получилось.
    Сам понимаю что выборка с базы оставляет желать лучшего, но чтобы она была таковой вот как раз с этим и проблема.
    /=======================/
    На сколько я все правильно понимаю, я создал таблицу friends
    Поместил колонки:
    id AUTO_INCREMENT;
    id_from кто пригласил;
    id_to кого пригласили в друзья;.

    Далее вытягиваю с помощью Join с базы
    Код (Text):
    1.     function friend ( $idгUser )
    2.    
    3.     {
    4.         global $dbc;
    5.         $sql_frends = "SELECT `frends_from`, `frends_to`, `users`.`nickname`, `users`.`vatar` FROM `frends` AS `mt`
    6.         LEFT JOIN `users` ON `mt`.`frends_from`=`users`.`users_id` WHERE `frends_to`='$idгUser'";
    7.         $result_friend = @$dbc->query($sql_frends);
    8.         if ( !$result_friend ) return false;
    9.         else while ( $friend = @$result_friend->fetch_array ())
    10.         {
    11.             $freends[] = $friend;
    12.         }
    13.             if (!$freends) return false;
    14.             else return $freends;
    15.             $freends->free();
    16.             @$dbc->close();
    17.     }
    Далее, приходится писать еще одну функцию для того чтобы пользователь видел что он есть у добавившего пользователя в друзьях, с одним лишь изменением в условии запроса
    Код (Text):
    1. WHERE `frends_from`
    Код (Text):
    1.     function friend2 ( $idгUser )
    2.    
    3.     {
    4.         global $dbc;
    5.         $sql_frends = "SELECT `frends_from`, `frends_to`, `users`.`nickname`, `users`.`vatar` FROM `frends` AS `mt`
    6.         LEFT JOIN `users` ON `mt`.`frends_from`=`users`.`users_id` WHERE `frends_from`='$idгUser'";
    7.         $result_friend = @$dbc->query($sql_frends);
    8.         if ( !$result_friend ) return false;
    9.         else while ( $friend = @$result_friend->fetch_array ())
    10.         {
    11.             $freends[] = $friend;
    12.         }
    13.             if (!$freends) return false;
    14.             else return $freends;
    15.             $freends->free();
    16.             @$dbc->close();
    17.     }
    Помогите вытащить все одним запросам, чтобы пользователь видел и своих друзей и друзей пригласивших его дружить!
    заранее благодарен!
     
  2. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    OR

    id_from = номер юзера OR id_to = номер юзера

    Добавлено спустя 19 секунд:
    если есть другие условия - то надо брать в скобки это всё дело
     
  3. Noob1984

    Noob1984 Новичок

    С нами с:
    27 сен 2013
    Сообщения:
    12
    Симпатии:
    0
    Код (Text):
    1.    function friend2 ( $idгUser )
    2.    
    3.    {
    4.       global $dbc;
    5.       $sql_frends = "SELECT `frends_from`, `frends_to`, `users`.`nickname`, `users`.`vatar` FROM `frends` AS `mt`
    6.       LEFT JOIN `users` ON `mt`.`frends_from`=`users`.`users_id` WHERE `frends_from`='$idгUser' OR `frends_to`='$idгUser'";
    7.       $result_friend = @$dbc->query($sql_frends);
    8.       if ( !$result_friend ) return false;
    9.       else while ( $friend = @$result_friend->fetch_array ())
    10.       {
    11.          $freends[] = $friend;
    12.       }
    13.          if (!$freends) return false;
    14.          else return $freends;
    15.          $freends->free();
    16.          @$dbc->close();
    17.    }
    Если я все правильно понял, то предложивший дружбу одному из юзеров сам в итоге оказывается у себя в друзьях, а у пользователя которому было предложено отображается верно., то-есть тот узер который предлагал дружбу!
     
  4. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    =) не знаю, надо думать, а я не могу