2016-09-24 35 views
0

我在我的数据库,评论和回复2个表。我在我的sql语句中加入了2个表,但似乎无法获得所有带有相应回复的注释。无法从数据库与对应的回复让所有评论PHP的

PHP -

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

随着前一个问题从Bramar帮助我能够得到所有的答复表示评论,但它只能显示第一条评论。我是否需要编写一个函数来保持对其余注释的循环,或者我需要一个完全不同的方法吗?

enter image description here

当看着像它应该显示注释2,3等。但第一个后停止。我知道这是因为$第一次被真正随后拨通了第一循环之后假,但是,这是我能看到阻止它复制了第二和第三的答复相同意见的唯一途径..

任何想法?谢谢!

+0

你能保持节省$ comID至$ prevComID当你第一次$为false,而不是测试$第一个真正的,你可以测试当前$ comID至$不同prevComID – Jayvee

+0

谢谢!是的,我喜欢这个逻辑,并且已经考虑过并且尝试过将comID与comment_id匹配,但是似乎无法使它工作,您能否举一个例子作为答案@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的诀窍! –