PHPで「知っている人」スクリプトを作成しました。このスクリプトは、php フレンド システムで、私のフレンドのフレンドを表示します。users (user_id, name, surname, email, profile)
ユーザーに関する情報を保持するというテーブルがあります。friends(friend_id, user_one, user_two)
フレンドであるユーザーの ID を保持する別のテーブルが呼び出されます。私のコードは次のとおりです。
<?php
// ------ gives me my friends
$friend_query = mysql_query(" SELECT `user_one`, `user_two` FROM `friends` WHERE `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 my friends
$friend_query_two = mysql_query(" SELECT `user_one`, `user_two` FROM `friends` WHERE (`user_one`='$friend_id' and `user_two` != '$session_user_id') OR (`user_one`!='$session_user_id' and `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 my friends that are my friends also
$check_friend_query = mysql_query(" SELECT friends_id from friends WHERE (user_one='$session_user_id' AND user_two='$friend_id_two') OR (user_one='$friend_id_two' AND user_two='$session_user_id') ");
if (mysql_num_rows($check_friend_query) != 1){
//here is the problem where I get duplicate values about friends of my friends
$my_friend = $friend_id_two;
$friends_friends = mysql_query("SELECT `user_id`, `name`, `surname`, `email`, `profile` FROM `users` WHERE (`user_id`='$my_friend') ");
while ($run_friends= mysql_fetch_assoc($friends_friends)) {
$friend_user_id = $run_friends['user_id'];
}
?>
私のコードは正常に動作し、友達の友達を私に与えてくれます。問題は、重複した値が得られることです。これを回避する方法はありますか?