я могу сделать этот выбор последователя / следующий сценарий более организованным? (PHP / MySQL)

0

В этом 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 присутствует во всех трех дисплеях, но я хочу сохранить его таким образом)

Теги:

2 ответа

2
Лучший ответ

Если он работает и не вызывает проблем с производительностью, сохраните его. "Слишком просто" никогда не является хорошей причиной для изменения того, что работает.

1

Вы можете сделать один запрос:

"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;
}

Это меньше кода, но его "умность" делает его более жестким, чтобы отслеживать, что происходит. Твоему легче следовать, и это что-то важно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню