Вопрос PHP SQL - PullRequest
       15

Вопрос PHP SQL

0 голосов
/ 04 апреля 2011

У меня есть система, которая собирает всех людей, за которыми следит пользователь, а также получает изображения профиля этих людей, а затем отображает их на веб-странице, однако, если пользователь подписан на 3 человек, запрос будет повторяться три раза для найден подписчик, затем попробуйте отобразить каждого подписчика с изображением первого подписчика. Как только это будет выполнено для каждого пользователя, запрос перейдет к выполнению того же самого для второго подписчика, затем для каждого последующего подписчика.

Так что в основном веб-страница выглядит так, [правильное имя и изображение для пользователя 1] [правильное имя неправильное изображение для пользователя 2] [правильное имя неправильное изображение для пользователя 3]

[правильное имя неверное изображение для пользователя 1] [правильное имя и изображение для пользователя 2] [правильное имя неправильное изображение для пользователя 3]

и т. Д., В зависимости от того, сколько людей подписан на пользователя. Я чувствую, что не могу объяснить это очень хорошо, если нет, пожалуйста, скажите, и я перепишу

это код, который я использую

$sql_friends = "SELECT `first_name`, `surname`, `username` FROM users JOIN followers ON followers.friend_id = users.user_id WHERE followers.user_id = '$user_session_id'";
            $result_friends = mysql_query($sql_friends);
            while($row = mysql_fetch_array($result_friends)){
                $friendforename = $row['first_name'];
                $friendsurname = $row['surname'];
                $friendusername = $row['username'];
                $sql_img = "SELECT `img` FROM followers JOIN user_profile ON followers.friend_id = user_profile.user_id WHERE followers.user_id = '$user_session_id'";
                $result_img = mysql_query($sql_img);
                while($img_row = mysql_fetch_assoc($result_img)){
                    $friend_image = $img_row['img'];
                    echo "<a href=\"$friendusername/\"><img src=\"../{$friendusername}/{$friend_image}\" title=\"{$friendforename} {$friendsurname}\"/></a>";
                }
            }

Ответы [ 2 ]

0 голосов
/ 04 апреля 2011

Вам не нужны два разных запроса для достижения этого (я предполагаю, что в таблице user_profile может быть только одна запись на пользователя).

попробуйте код ниже:

 $sql_friends = "SELECT `first_name`, `surname`, `username`, `img` FROM users JOIN followers ON followers.friend_id = users.user_id LEFT JOIN user_profile ON followers.friend_id = user_profile.user_id WHERE followers.user_id = '$user_session_id'";
    $result_friends = mysql_query($sql_friends);
    while($row = mysql_fetch_array($result_friends)){
        $friendforename = $row['first_name'];
        $friendsurname = $row['surname'];
        $friendusername = $row['username'];
        $friend_image = $row['img'];        
        echo "<a href=\"$friendusername/\"><img src=\"../{$friendusername}/{$friend_image}\" title=\"{$friendforename} {$friendsurname}\"/></a>";
    }
0 голосов
/ 04 апреля 2011

Во второй раз, когда вы звоните mysql_query() испортит результаты первого.Вам нужно будет либо указать для них идентификаторы ссылок, либо сначала извлечь все результаты первого запроса в массив, а затем выполнить итерацию по этому запросу для извлечения изображений.

Однако, я думаю, вы также можете сделатьLEFT JOIN user_profile, чтобы получить изображения в том же запросе, что и исходный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...