2016-04-26 4 views
0

Я делаю проект для школы, это похоже на Instagram. Итак, вы можете опубликовать фотографию на своей временной шкале, а затем другие пользователи могут оставить комментарий на эту фотографию.Оставить комментарий к данной публикации в PHP

Этот комментарий успешно завершен: вы можете поместить комментарий, и комментарий заходит в базу данных.

Комментарий Classe: 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

Пожалуйста, добавьте запрос, который вы используете, чтобы выбрать spesific пост со своими комментариями – JimL

+0

В файле ' GetRecentActivities() 'запрос будет таким:' $ allComments = $ conn-> query ("SELECT * FROM comment WHERE postID = '{$ p_iPostID}' ORDER BY id DESC;"); ' –

+0

Я знаю, i должен использовать опцию where в моем запросе, но postid недоступен в моей базе данных только в моем URL-адресе. – Brenje

ответ

0

В ответ я предполагаю, что вы используете GetRecentActivities, чтобы получить комментарии к сообщению.

Я заметил, что вы не устанавливаете поле postID в базе данных, почему это так? Поле postID поможет вам сопоставить сообщение с комментарием. Без него вы (и SQL) не можете определить контекст, в котором был написан комментарий. Я уверен, что вы знаете, как добавить postID к INSERT заявления вы предоставили, но для справки:

$stmt = $conn->prepare("INSERT INTO comments (comment, postID) VALUES (:comment, :postID)"); 
$stmt->bindValue(':comment', $this->Comment); 
$stmt->bindValue(':postID', $this->PostID); 
$stmt->execute(); 

В вашем SQL, где вы звоните SELECT * FROM comment ORDER BY id DESC; вы можете добавить пункт WHERE «фильтровать» данные возвращаемые , В вашем случае это будет синтаксис:

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

Более подробной информации о том, что вы можете передать в вашем SELECT заявления на http://dev.mysql.com/doc/refman/5.7/en/select.html

+0

Я знаю, я должен использовать опцию where в моем запросе, но postid недоступен в моей базе данных только в моем URL-адресе. – Brenje

+0

Я обновил свой ответ, чтобы принять во внимание новую информацию. (Я знаю, что это было изначально в моем вопросе, не видел, что вы не устанавливали 'postID') –

+0

Это было то, что я думал, но проблема в том, что postID не входит в мою базу данных. – Brenje

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