2016-09-24 1 views
0

PHP。私はSQL文の2つのテーブルに参加していますが、対応する返答ですべてのコメントを取得できないようです。は、私は私のDB、コメントや返信で2つのテーブルを持っている

PHP - 前の質問でBramarからの助けを借りて

$sql = "SELECT comments.comment_id, comments.user, comments.comment, comments.date, comments.post_id, replies.reply, replies.username, replies.replyDate, replies.com_id FROM comments LEFT JOIN replies ON comments.comment_id = replies.com_id WHERE comments.post_id=$id"; 
$result = $conn->query($sql); 
if ($result->num_rows > 0) { 
// output data of each row 
$first = true; 
while($row = $result->fetch_assoc()) { 

$date = $row['date']; 
$mydate = date("M jS g:i a",strtotime($date)); 

$rdate = $row['replyDate']; 

$user = $row['user']; 
$username = $row['username']; 
$comment = $row['comment']; 
$reply = $row['reply']; 
$comID = $row['comment_id']; 
$post_id= $row['post_id']; 

    if ($first) { 
    echo '<div id="comuser">'.$user.': </div>'; 
    echo '<div id="icomment">'.$comment.'</div>'; 
    echo '<div id="comdate">'.$mydate.'</div>'; 
    echo '<div class="replyBTN">reply</div>'; 
    echo '<form method="post" class="replyForm" action="get_reply.php?reply='.$comID.'&&title='.$title.'&&post='.$post_id.'">'; 
    echo '<input type="text" id="addReply" name="addReply" placeholder="add reply">'; 
    echo '</form>'; 
    $first = false; 
} 
echo '<div id="replyCont">'; 
echo '<div id="replyUser">'.$username.'</div>'; 
echo '<div id="replyDate">'.$rdate.'</div>'; 
echo '<div id="reply">'.$reply.'</div>'; 
echo '</div>'; 

} 
} else { 
echo "<div id='noCom'>no comments..</div>"; 
} 

私が言ったコメントをすべての返信を取得することができていますが、それは唯一の最初のコメントを示しています。残りのコメントのためにループを維持するための関数を書く必要がありますか、まったく違う方法が必要ですか?画像を見たとき

enter image description here

それはコメント2、3などを示して..しかし、最初の後に停止しなければなりません。私は

任意のアイデア.. $は最初の真のは、最初のループの後に偽と呼ばれるが、それは第二と第三の返信のために同じコメントを複製停止するように私が見ることができる唯一の方法のthatsされているので、これは知っていますか?ありがとう!

+0

あなたが最初の$の真のための偽の、代わりのテストに最初の$を設定した場合、あなたは現在$ COMIDのために$に異なるテストすることができます$ prevComIDに$ COMID保存維持することができますprevComID – Jayvee

+0

ありがとう!はい、私はロジックが好きで、commentIDにcomIDをマッチさせようと思っていましたが、それを動作させるように思われます。答えとして例を示すことができますか?@Jayvee –

答えて

1

これらの線に沿って何か:

if ($comID!=$prevComID) { 
    echo '<div id="comuser">'.$user.': </div>'; 
    echo '<div id="icomment">'.$comment.'</div>'; 
    echo '<div id="comdate">'.$mydate.'</div>'; 
    echo '<div class="replyBTN">reply</div>'; 
    echo '<form method="post" class="replyForm" action="get_reply.php?reply='.$comID.'&&title='.$title.'&&post='.$post_id.'">'; 
    echo '<input type="text" id="addReply" name="addReply" placeholder="add reply">'; 
    echo '</form>'; 
    $prevComID = $comID; 
} 
+0

これはトリック感謝のようでした@Jayvee! –

関連する問題