2016-04-26 11 views
0

私は学校のためのプロジェクトを行っていますが、Instagramと似ています。 タイムラインに写真を投稿してから、他のユーザーがこの写真にコメントを付けることができます。PHPの特定の投稿にコメントをする

このコメントオプションは正常に実行されました。コメントを付けることができ、コメントはデータベースに送られます。

コメントクラッセ:PHPコード

public function __set($p_sProperty, $p_vValue) 
{ 
    switch($p_sProperty) 
    { 
     case "Comment": 
      $this->m_sComment = $p_vValue; 
      break; 
    }  
} 

public function __get($p_sProperty) 
{ 
    $vResult = null; 
    switch($p_sProperty) 
    { 
    case "Comment": 
     $vResult = $this->m_sComment; 
     break; 
    } 
    return $vResult; 
} 


    public function Save() { 
     $conn = Db::getInstance(); 
     //$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $statement = $conn->prepare('INSERT INTO comment(comment, postID, userID) VALUES(:comment)'); 
     $statement->bindValue(':comment', $this->Comment); 
     $statement->execute(); 
    } 

    public function GetRecentActivities($p_iPostID) { 
     $conn = Db::getInstance(); 
     $allComments = $conn->query("SELECT * FROM comment ORDER BY id DESC;"); 
     return $allComments; 
    } 

} 

しかし、今の質問は次のとおりです。 *今、写真にコメントがすべてのポストではなく、特定のポストに来ますか? 投稿のURLに、私は特定のPOSTIDを送信します。 http://i.stack.imgur.com/IkJGL.png 私はどのように正しいPOSTIDで投稿にコメントを置くことができますか?

+0

であなたのSELECT文で渡すことができるもので

SELECT * FROM comment WHERE postID = <post_id> ORDER BY id DESC; 

詳しい情報あなたは 'でそのコメント – JimL

+0

でspesificポストを選択するために使用するクエリを追加してください。 GetRecentActivities() 'メソッドを呼び出すと、クエリは次のようになります。' $ allComments = $ conn-> query( "SELECT * FROM comment WHERE postID = '{$ p_iPostID}' ORDER BY id DESC;"); ' –

+0

私は知っています私のクエリでwhereオプションを使用する必要がありますが、postidは自分のURLのデータベースでのみ利用できません。 – Brenje

答えて

0

答えでは、投稿のコメントを得るためにGetRecentActivitiesを使用することを前提としています。

postIDフィールドをデータベースに設定していないことに気がついたのはなぜですか? postIDフィールドは、投稿をコメントにマップするのに役立ちます。それがなければ、あなた(およびSQL)はコメントが書き込まれたコンテキストを判別できません。私はあなたが提供INSERTステートメントにpostIDを追加する方法を知っていると確信しているが、参考のために:

あなたが SELECT * FROM comment ORDER BY id DESC;を呼び出しているあなたのSQLで
$stmt = $conn->prepare("INSERT INTO comments (comment, postID) VALUES (:comment, :postID)"); 
$stmt->bindValue(':comment', $this->Comment); 
$stmt->bindValue(':postID', $this->PostID); 
$stmt->execute(); 

は、あなたが「フィルタ」のデータが返されるWHERE句を追加することができます。あなたのケースでは、この構文のようになります。あなたはhttp://dev.mysql.com/doc/refman/5.7/en/select.html

+0

私は、私のクエリでwhereオプションを使用する必要がありますが、postidは自分のURLで自分のデータベースで利用できないことを知っています。 – Brenje

+0

私は新しい情報を考慮に入れて私の答えを更新しました。 (私はそれが元々私の質問にあった、あなたが 'postID'を設定していないのを見なかったことを知っています) –

+0

これは私が思ったものでしたが、問題は私のデータベースにないpostIDです。 – Brenje

関連する問題