В этом script он получает последователей пользователя и людей, которых выполняет пользователь. Существует ли лучшая структура взаимоотношений/базы данных, чтобы получить пользователей-последователей и кто они следуют? Все, что у меня есть сейчас, это 2 столбца, чтобы определить их отношения. Я чувствую, что это "слишком просто"?
(MYSQL)
USER | FRIEND
avian gary
cend gary
gary avian
mike gary
(PHP)
$followers = array();
$followings = array();
$view = $_SESSION['user']; //view is the person logged in
$query = "SELECT * FROM friends WHERE user='$view'";
$result = $db->query($query);
while($row=$result->fetch_array())
{
$follower=$row['friend'];
$followers[] = $follower;
}
print_r($followers);
echo "<br/>";
$query2 = "SELECT * FROM friends WHERE friend='$view'";
$result2 = $db->query($query2);
while($row2=$result2->fetch_array())
{
$following=$row2['user'];
$followings[] = $following;
}
print_r($followings);
echo "<br/>";
$mutual = array_intersect($followers, $followings);
print_r($mutual);
**DISPLAY**
Your mutual friends
avian
Your followers
avian
You are following
avian
cen
mike
(Я знаю, что avian присутствует во всех трех дисплеях, но я хочу сохранить его таким образом)
Если он работает и не вызывает проблем с производительностью, сохраните его. "Слишком просто" никогда не является хорошей причиной для изменения того, что работает.
Вы можете сделать один запрос:
"SELECT * FROM friends WHERE user = '$view' OR friend = '$view';"
затем
while($row = $result->fetch_array())
{
$destination = ($row['user'] == $view) ? &$followers : &$followings;
$otherUser = ($row['user'] == $view) ? $row['friend'] : $row['user'];
$destination[] = $otherUser;
}
Это меньше кода, но его "умность" делает его более жестким, чтобы отслеживать, что происходит. Твоему легче следовать, и это что-то важно.