2011-01-12 10 views
0

私は現在自分のウェブサイトのプライベートメッセージングシステムに取り組んでいます。私がしなければならないことのいくつかは理にかなっています。1つのテーブルの自動インクリメントIDを別のテーブルのIDにリンクするにはどうすればよいですか?

私は、MySQLの電源を使用する必要があります理解しました参加が、いくつかの質問を持っている.. 私のモデルでは、私は私のメッセージの受信トレイをコード始め、次のクエリを持っています

「SELECT * FROMメッセージWHERE from_id = '$ id' ";

$ idは基本的に私のusersテーブルの自動インクリメントIDです。from_idは同じものですが、メッセージテーブルにあります。

私が知りたいことは、メッセージテーブルがfrom_idを取得する方法です。私はメッセージテーブルのfrom_idとusersテーブルの自動インクリメントされたIDが両方のテーブルをリンクするのに使用されていることを知っています。

私は、メッセージの送信者と受信者を識別するためにidを使用するのではなく、ユーザー名を識別するためにidを使用しますが、これを設定する方法についてはかなり混乱しています。私は一度それを理解することができます私はそれを行うことができます確信しています。

+0

重複する質問を投稿するのではなく、最初の質問を編集してより良い結果を得るのはなぜですか? http://stackoverflow.com/questions/4669675/looking-for-tutorial-on-how-to-build-a-private-messaging-system-using-php –

答えて

1

view_messages() 
{ 
    //this check could be done in the constructor 
    if($this->auth->logged_in()==TRUE) 
    { 
     $userID=$this->auth->user_data('userID'); 
    } 
    else 
    { 
     redirect('not_logged_in'); 
    } 

    $this->load->model('message'); 
    $messages = $this->message->get_messages($userID); 
    // do what you want with messages. 
    //print_r($messages); 
} 

あなたのメッセージモデル:

function get_messages($userID=null) 
{ 
    $this->db->where('userID', $userID); 
    $data = $this->db->get('tblMessages'); 
    return $data->result(); 
} 
1

ユーザーがログインしたときにセッションを使用してユーザーIDを保存できませんか? そのようにすれば、必要なときにユーザーIDを取得できます。

 
// ... 

$fromID = $_SESSION['uid']; 
INSERT INTO `message` (`from_id`, `to_id`, `time`, `message`) VALUES('$fromID', '$toID', '$time', '$message') 

もちろん、ここではセキュリティについては言及していないので、コードは明らかに安全ではありません。しかし、別の議論のためにそれを残しておきます。私はあなたを正しい方向に蹴ったのですか? :p

+0

私はそれを行うと思ったが、私のfrom_idはどのようにして値?それはどこから来たのですか?ユーザーがログインしたときにセッションからユーザーIDを取得することに問題はありません。 – LondonGuy

+0

もちろん、データベースに挿入してください。私はちょうど私の答えを更新しました。私はそれがそういうものだと思う。 – bertzzie

1

私があなたを完全に理解しているかどうかはわかりません。 メッセージをロードしていますが、メッセージテーブル内にユーザーIDの列がありますが、単一のクエリでユーザー名もロードしますか? もしこのようなものは、ユーザー U、メッセージMからそれを{あなたが持ちたいものは何でも}

SELECTを行うだろうよりもので、WHEREあなたのSELECTクラウスよりもu.id = m.from_id

ユーザーテーブルにユーザー名列があると仮定して、u.usernameを使用してユーザーの詳細を取得できます。使用している認証ライブラリは、あなたがCIにこのような何かが必要になるかに応じて、

0

ほんの少しknowningよりもそれによりがありますMySQLについてあなたは良い考えを得るためにダウンロードすることができますシステムの多くは、phpBBや他のフォーラムソフトウェアを試してみてください。

プライベートメッセージシステムでは、何かゴミを作るのは非常に簡単ですが、良いものはタフです。

INSERT INTO `message` (`from_id`, `to_id`, `time`, `message`) VALUES('$fromID', '$toID', '$time', '$message') 

ユーザーの受信トレイ、およびユーザからのために送られたボックスに表示する必要があります。あなたのメッセージは唯一の別のユーザーによってproivided例のように一つのエントリを持っている場合

は、覚えておいてください。to_userがそれを削除すると、from_userは突然そのメッセージのレコードを持ちません。

メッセージIDに結合されているユーザーのすべての添付ファイルを一覧表示するには、結合テーブルを作成する必要があります。その後、複数のユーザーを持つこともできます!

メッセージは常に存在する必要があります。ユーザーは「ゴミ箱」(接続時にis_trachを1に設定)です。ユーザーがゴミ箱から削除すると、メッセージへの接続のみが削除され、最後のユーザーが接続を削除したときに削除できます(または孤立したメッセージを削除するためのcronジョブを取得できます)。

関連する問題