2013-04-19 4 views
0

Я не знаю, потерял ли я информацию в своем мозгу, или если у меня ее никогда не было, но я создал твит, чтобы пользователь мог следить за другими пользователями.Показать разные результаты на разных страницах/профилях

Проблема в том, что каждый пользователь отображает ту же информацию. Я пытался добавить WHERE $_SESSION['uid'] к моему запросу, но это не поможет сделать трюк.

Показывает ту же информацию. Любые советы?

<?php 
    foreach(fetch_follotweets() as $tweet){ 
     echo $tweet['firstname']; 
     echo $tweet['lastname']; 
     echo $tweet['username']; 
     echo $tweet['date']; 
     echo $tweet['profile_img']; 
     $tweet['message']; 
    } 

    function fetch_follotweets(){ 
     global $db; 
     $query = $db->query(" SELECT 
            user.email, 
            user.username, 
            tweets.message, 
            tweets.date, 
            userdetails.profile_img, 
            userdetails.firstname, 
            userdetails.lastname, 
            following.id, 
            following.user_id, 
            following.follow_id 
           FROM user 
            JOIN userdetails 
            ON user.id = userdetails.user_id 
            JOIN tweets 
            ON userdetails.user_id = tweets.user_id 
            JOIN following 
            ON following.follow_id 
           WHERE following.follow_id = tweets.user_id AND 
           user.id='{$_SESSION['uid']} 
           ORDER BY tweets.date DESC"); 
      $tweet = array(); 
     while(($row = $query->fetch(PDO::FETCH_ASSOC)) !==FALSE) { 
      $tweet[] = $row; 
     } 
     return $tweet; 
    } 
    ?> 
+0

что вы пытаетесь сделать. Вам нужны все записи? Или вы показываете информацию, когда пользователь вошел в систему, и пользователь может видеть только его информацию? –

+0

@raheelshan это сайт профиля, который показывает твиты, за которыми вы следуете. Также как твиттер. Я могу ввести другой профиль. Но каждый профиль должен показывать только твиты, за которыми вы следуете. Теперь каждый профиль показывает одни и те же твиты. – Dymond

+0

Я вижу, что вы не назначаете id для ограничения результатов, связанных с пользователем. –

ответ

1

Без пункта WHERE, то SQL бы получить подробную информацию о всех пользователях

Кроме того, я думаю, что JOIN на tweets & following должен быть LEFT JOIN (чтобы получить records даже если ни один из их присутствуют)

SELECT 
    user.email, 
    user.username, 
    tweets.message, 
    tweets.date, 
    userdetails.profile_img, 
    userdetails.firstname, 
    userdetails.lastname, 
    t.ids_of_users_followed 
FROM 
    user 
    JOIN userdetails 
    ON user.id = userdetails.user_id 
    LEFT JOIN (
     SELECT 
     GROUP_CONCAT(following.follow_id) AS ids_of_users_followed 
     following.user_id 
     FROM 
     following 
     GROUP BY 
     following.user_id 
    ) as t ON (t.user_id = user.id) 
    JOIN tweets 
    ON (userdetails.user_id = tweets.user_id OR FIND_IN_SET(tweets.user_id, t.ids_of_users_followed)) 
WHERE 
    user.id = :? => Make sure to add the logged in user_id here 
ORDER BY 
    tweets.date DESC 
+0

Точно, что я пробовал , но тогда я возвращаю только пустой результат. – Dymond

+0

@Dymond Я обновил ответ, также возникла проблема с вашим JOIN, пожалуйста, chk – Akash

+0

hmm Ну, это все равно дает мне одинаковый результат по каждому профилю. – Dymond

Смежные вопросы