mysql - avoid duplicate values in php -


i have created "people may know" script in php. script shows me friends of friends, in php friend system. have table called users (user_id, name, surname, email, profile) thats holds information users. table called friends(friend_id, user_one, user_two) holds id of users friends. code following:

<?php   // ------ gives me friends    $friend_query = mysql_query("  select `user_one`, `user_two` `friends` `user_one`='$session_user_id' or `user_two`='$session_user_id' ");      while($run_friend = mysql_fetch_array($friend_query)){     $user_one = $run_friend['user_one'];     $user_two = $run_friend['user_two'];      if($user_one == $session_user_id){       $user = $user_two;     } else {       $user = $user_one;     }      $friend_id = getuser($user, 'user_id');       // ----- gives me friends of friends     $friend_query_two = mysql_query("  select `user_one`, `user_two` `friends` (`user_one`='$friend_id' , `user_two` != '$session_user_id') or (`user_one`!='$session_user_id' , `user_two`='$friend_id' )  ");        while($run_friend_two = mysql_fetch_array($friend_query_two)){                                 $user_one_two = $run_friend_two['user_one'];       $user_two_two = $run_friend_two['user_two'];        if($user_one_two == $friend_id){         $user_two = $user_two_two;       } else {         $user_two = $user_one_two;       }        $friend_id_two = getuser($user_two, 'user_id');       // ------- gives me friends of friends friends        $check_friend_query = mysql_query("  select friends_id friends  (user_one='$session_user_id' , user_two='$friend_id_two') or (user_one='$friend_id_two' , user_two='$session_user_id')  ");        if (mysql_num_rows($check_friend_query) != 1){          //here problem duplicate values friends of friends          $my_friend = $friend_id_two;         $friends_friends = mysql_query("select `user_id`, `name`, `surname`, `email`, `profile` `users` (`user_id`='$my_friend')  ");          while ($run_friends= mysql_fetch_assoc($friends_friends)) {           $friend_user_id = $run_friends['user_id'];         } ?> 

my code works fine , gives me friends of friends. problem duplicate values. idea how avoid this?

updated

a php implementation might this:

global $db; $db = new pdo('mysql:host=localhost;dbname=<somedb>', '<username>', 'password');  $friends = getfriendsof( $session_user_id ); $friends_of_friends = getfriendsof( $friends );  // whatever want right here // friends ($friends) // , friends' friends ($friends_of_friends)  function getfriendsof( $user ) {     global $db;      if ( is_array( $user ) ) $where = ' in (' . implode( ',', $user ) . ')';     else $where = ' = ' . $user;      $sql = " select group_concat( f.user_id ) friends   (select user_one user_id           friends          user_two {$where}          union distinct         select user_two           friends          user_one {$where}        ) f";      $results = $db->query( $sql );     $row = $results->fetch();     return explode( ',', $row[ 'friends' ] ); } 

original

don't have data test with. should trick.

get friends:

select u.*   (select user_one user_id           friends          user_two = '$session_user_id'          union distinct         select user_two           friends          user_one = '$session_user_id'        ) f   join users u     on u.user_id = f.user_id 

get friends of friends:

select u.*   (select distinct user_one user_id           friends          user_two in (select user_one user_id                               friends                              user_two = '$session_user_id'                              union distinct                             select user_two                               friends                              user_one = '$session_user_id'                            )          union distinct         select distinct user_two           friends          user_one in (select user_one user_id                               friends                              user_two = '$session_user_id'                              union distinct                             select user_two                               friends                              user_one = '$session_user_id'                            )        ) f   join users u     on u.user_id = f.user_id 

Comments

Popular posts from this blog

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

html - How to style widget with post count different than without post count -

url rewriting - How to redirect a http POST with urlrewritefilter -