Извлечь данные из одной таблицы и сравнить с другой таблицей, а затем показать соответствие - PullRequest
1 голос
/ 11 сентября 2011

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

Это система, в которой пользователи могут войти и следить за блогами друг друга.

База данных Каждая таблица имеет разныеколичество столбцов и ни один из столбцов не используют одно и то же имя.

Table1 = userdetails (использует ID в качестве основного идентификатора)

Table2 = блоги(использует BlogID в качестве основного идентификатора) - он имеет BlogID, WriterID blogtitle, blogtext, blogdate и т. д. в виде строк

Table3 = blogFollowers (использует FollowBlogID в качестве основного идентификатора), это загар;Он хранит всю информацию о том, кто следит за какими блогами.- у него есть FollowBlogID, TheBlogID, ImFollowing, FollowOrNot - FollowOrNot должен быть либо 0, либо 1 - 0 равняется следующим 1 равно Не следует)

ОБЪЯСНЕНИЕ Пользователь вошел в систему. $ LoggedInUser = idлица, вошедшего в систему, когда они вошли в систему. СЕССИЯ

Зарегистрированный пользователь хочет начать отслеживать блог.Пользователь нажимает на ссылку блога StartFollowing.Это отправляет информацию для вставки в Таблицу3.Он создает новую строку (назначает уникальный идентификатор) и вставляет TheBlogId (такой же, как BlogID из таблицы 1). ImFollowing (вставляет LoggedInUser) и FollowOrNot вставляет 0.

EXAMPLE

  1. Пользователь1 входит в систему и создает BlogA.
  2. Пользователь2 входит в систему и видит ее в верхней части страницы блогов.
  3. Пользователь2 хочет начатьСледить за этим блогом.
  4. Пользователь2 нажимает на ссылку.Он вставляет информацию сверху в таблицу 3.
  5. User2, а затем обновляет страницу.Теперь вместо того, чтобы сказать StartFollowing, он говорит StopFollowing.

Проблема : Так что я не могу понять.

При входе в систему пользователь видит список всех блогов - Страница блога (из таблицы 2) на странице.Рядом с каждым заголовком блога есть ссылка «StartFollowing» (вошедший в систему пользователь НЕ следует за этим блогом) или «StopFollowing» (вошедший в систему «пользователь» следует за этим блогом).Как я могу это сделать?Независимо от того, что я пытаюсь, я либо просто показываю блоги авторизованных пользователей, за которыми они уже следят, ИЛИ я вижу только те блоги, за которыми следят (таблица 3).

1 Ответ

0 голосов
/ 20 января 2012

Итак, вот мое мнение:

Первый , вы сказали

Зарегистрированный пользователь хочет начать отслеживать блог. Пользователь нажимает на Запустите следующую ссылку на блог. Это отправляет информацию для вставки в Таблицу3. Он создает новую строку (назначает уникальный идентификатор) и вставляет TheBlogId (is такой же как BlogID из table1 ) ImFollowing (вставляет LoggedInUser) и FollowOrНе вставляет 0.

Разве это не должно быть table2 (жирный).

Второй : Таблица3 должна иметь составной первичный ключ, основанный на blogId и userId. Только тогда это будет логично, так как пользователь может следить за многими блогами.

Третий , чтобы ответить на ваш вопрос:

Независимо от того, что я пытаюсь, я либо просто показываю Logged в блогах пользователей, за которыми они уже следят ИЛИ я вижу только те блоги, которые соблюдаются (таблица 3).

Это общий псевдокод:

foreach( $allRowsOfTable2 as $row) { //each row for those blogs being displayed on page.
blogId = $row['blogId'];
blogAuthorId = $row['blogAuthorId'];

  if( blogAuthorId != currentLoggedInUserID ) { //obviously why do you need to follow yourself right? :P
     $sql = "SELECT * from table3 WHERE blogId=`$blogId` AND userId='$currentLoggedInUserID';";
     $result = do_a_database_operation_here;
     if(count($result) >0 ) { //yes he is following the blog
          //display the "unfollow" link
     }
     else {
          //display the "follow" link
     }
  }
}

PS: Вы можете сделать это лучше, если можете использовать соединения в sql. Если вы предоставите коды для своей структуры таблицы, может быть показан запрос.

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