2011-09-11 9 views
1

ここに状況があります。私はサイトの他の部分ではどこにでも参加していて、すべてうまく動作します。ちょうど私を夢中にさせたこの1つの問題です。それはおそらく単純で、私は何かが欠けているだけです。あるテーブルからデータを引き出し、別のテーブルと照合して一致を表示します

これは、ユーザーがログインしてお互いのブログに従うことができるシステムです。

データベース 各テーブルには異なる量の列があり、いずれの列も同じ名前を使用しません。

表1 = userdetails(プライマリIDとしてIDを使用する)

表2 =ブログ(プライマリIDとしてのblogidを使用) - それは行として等のblogid、WriterID blogtitle、blogtext、blogdateを有し

表3 = blogFollowers(FollowingBlogIDをプライマリIDとして使用)これは誰がどのブログをフォローしているかに関するすべての情報を保持するtan; eです。 - FollowOrNotが0または1のいずれかである必要があります - - 1に続いて続いていないに等しい等しい0)

EXPLANATION ユーザーは誰一人の$ LoggedInUser = IDでログインしている。それはFollowingBlogID、TheBlogID、ImFollowing、FollowOrNot を持っています彼らがログインしているときにログインしています。セッション

ログインしているユーザーが開始したいブログをフォローしています。ユーザーはStartFollowingブログリンクをクリックします。これは、Table3に挿入される情報を送信します。これは、新しい行を作成する(一意のIDを割り当てる)とTheBlogIdを挿入(TABLE1からのblogidと同じである)ImFollowing(LoggedInUserを挿入し)、それが0

  1. user1ですを挿入FollowOrNotログインしてBlogAを作成します。
  2. User2がログインし、ブログページの上部に表示されます。
  3. User2がこのブログをフォローしています。
  4. ユーザー2がリンクをクリックします。上の情報を表3に挿入します。
  5. 次に、User2がページをリフレッシュします。 StartFollowing と言うのではなく、StopFollowingと表示されます。

問題:わかりません。

ユーザーがログインすると、ページのすべてのブログ - ブログページ(表2から)のリストが表示されます。各ブログタイトルの横に、StartFollowing(ログインしたユーザーはこのブログをフォローしていません)またはStopFollowing(このブログに続いてログインしたユーザー)というリンクがあります。どうすればこのことが起こるのですか?私が何をしようと思っても、すでに従っているLogged inのユーザーのブログを表示するか、追跡されているブログのみを表示します(表3)。だからここ

+0

MySQLクエリに問題があるようですが、そのクエリやコードは表示されませんが、わかりにくいです。 –

+0

私は、 '' Table1'に列挙された ''次の列 ''の '' ID''の列を、 ''すべてのブログのリスト - ブログページ 'でチェックアウトしたときに、アレイ。 –

+1

* "同じ行のどれも**同じ名前を使用していません" ***以前は**名前付き行を聞いたことがありません**。 –

答えて

0

はそれが私の感想です:

まず、あなたは

AがログインしているユーザーとブログをStartFollowingたいです。ユーザーは 開始ブログのリンクをクリックします。これは、Table3に挿入される情報を送信します。 これは、新しい行が(一意のIDを割り当て)を作成し、TheBlogIdを挿入( TABLE1からのblogidと同じである)ImFollowing(LoggedInUserを挿入)と は、それがこと0

はずのを挿入FollowOrNotテーブル2(太字のもの)。

第2の:テーブル3には、blogIduserIdに基づく複合主キーが必要です。そうすれば、ユーザーは多くのブログに従うことができるようになります。どんなに私はどちらかだけ(彼らはすでに従うか、私は が守られているということだけのブログを見ているユーザーのブログにログイン を表示しようとするもの

:サード

は、あなたの質問に答えるしないように表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で結合を使用できるかどうあなたがより良い方法でこれを行うことができます。コードをテーブル構造に指定すると、クエリが表示されます。

関連する問題