2016-04-26 10 views
0

Ich mache ein Projekt für die Schule, es ist ähnlich wie Instagram. So können Sie ein Foto auf Ihrer Timeline posten und dann können andere Benutzer einen Kommentar zu diesem Foto abgeben.Geben Sie einen Kommentar zu einem bestimmten Beitrag in PHP

Diese Kommentaroption wurde erfolgreich abgeschlossen: Sie können einen Kommentar eingeben und der Kommentar kommt in die Datenbank.

Kommentar classe: PHP-Code

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; 
    } 

} 

Aber jetzt ist die Frage: * Jetzt ist der Kommentar zu einem Foto auf jeder Post kommt und nicht auf den spezifischen Beitrag? In der URL des Posts sende ich eine bestimmte POSTID. http://i.stack.imgur.com/IkJGL.png Wie kann ich den Kommentar nur auf den Beitrag mit der richtigen POSTID setzen?

+0

Sie verwenden Bitte fügen Sie die Abfrage übergeben können die spesific Beitrag mit dem Kommentar – JimL

+0

in Ihrem auszuwählen ' GetRecentActivities() 'Methode die Abfrage wäre wie folgt:' $ allComments = $ conn-> Abfrage ("SELECT * FROM Kommentar WHERE PostID = '{$ p_iPostID}' ORDER BY ID DESC;"); ' –

+0

Ich weiß, ich muss die Wo-Option in meiner Abfrage verwenden, aber die Post-ID ist in meiner Datenbank nur in meiner URL verfügbar. – Brenje

Antwort

0

In der Antwort nehme ich an, dass Sie GetRecentActivities verwenden, um die Kommentare für einen Beitrag zu erhalten.

Ich bemerkte, dass Sie nicht das Feld postID in der Datenbank festlegen, warum ist das? Das Feld postID hilft Ihnen, einen Beitrag einem Kommentar zuzuordnen. Ohne Sie können Sie (und SQL) nicht den Kontext bestimmen, in dem der Kommentar geschrieben wurde. Ich bin sicher, Sie wissen, wie postID zum INSERT Anweisung hinzuzufügen, die Sie zur Verfügung gestellt, sondern als Referenz:

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

In Ihrem SQL, wo Sie SELECT * FROM comment ORDER BY id DESC; Aufruf sind, können Sie eine WHERE Klausel „Filter“ die Daten zurückgegeben hinzufügen . In Ihrem Fall wäre dies die Syntax sein:

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

Weitere Informationen darüber, was Sie in Ihrer SELECT Aussage bei http://dev.mysql.com/doc/refman/5.7/en/select.html

+0

Ich weiß, ich muss die Option wo in meiner Abfrage verwenden, aber die Post-ID ist in meiner Datenbank nur in meiner URL verfügbar. – Brenje

+0

Ich habe meine Antwort aktualisiert, um die neuen Informationen zu berücksichtigen. (Ich weiß, es war ursprünglich in meiner Frage, habe nicht gesehen, dass Sie 'postID' nicht eingestellt haben) –

+0

Das war auch, was ich dachte, aber das Problem ist die PostID kommen nicht in meiner Datenbank. – Brenje

Verwandte Themen