我的帖子和评论邮寄部分代码出了问题。我对编码比较陌生,我甚至不确定这是否是最好的方法。代码将发布,并正确评论,但问题是它将无法正确显示。会发生什么事情,当它显示它将以正确的顺序和评论拉动blab,但评论在每个帖子上重复。
因此,为了进一步澄清,它看起来像这样......
评论3
发布2
评论4
发布3
数字代表ids
这是我的代码。
// ------- MEMBER BLABS OUTPUT CONSTRUCTION ---------
$sql_blabs = mysql_query("SELECT id, mem_id, the_blab, blab_date, blab_type, device, fromid FROM blabbing WHERE mem_id='$id' ORDER BY blab_date DESC LIMIT 30");
while($row = mysql_fetch_array($sql_blabs)){
$blabid = $row["id"];
$fromid = $row["fromid"];
$blab_device = $row["device"];
$sql_comments = mysql_query("SELECT * FROM blab_comments WHERE blab_id='$blabid' ORDER BY id ASC");
$count_comment = mysql_num_rows($sql_comments);
if($count_comment > 0){
while($row2=mysql_fetch_array($sql_comments)){
$comment_mem_id = $row2['mem_id'];
$com_blab_id = $row2['blab_id'];
$comment_txt = $row2['the_comment'];
$comment_date = $row2['comment_date'];
$convertedTime = ($myObject -> convert_datetime($comment_date));
$whenComment = ($myObject -> makeAgo($convertedTime));
$sql_comment_user = mysql_query("SELECT firstname, lastname FROM myMembers WHERE id='$comment_mem_id' LIMIT 1");
while($row3 = mysql_fetch_array($sql_comment_user)){
$firstname = $row3['firstname'];
$lastname = $row3['lastname'];
$comment_user = $firstname.' '.$lastname;
}
$comment_pic = check_pic("members", $comment_mem_id, "40", "profile");
/////// Mechanism to Display Real Name Next to Username - real name(username) //////////////////////////
$DisplayCommentList .='
<div style="background-color:#e3eaf3; width:auto; height:auto; word-wrap: break-word;">
<div style="margin-right:10px; margin:8px; width:40px; height:40px; overflow:hidden; display:inline-block;">'.$comment_pic.'</div>
<div style="float:right; width:390px; margin-bottom:8px; margin-top:3px;">
<span class="liteGreyColor textsize9" style="width:auto;">'.$whenComment.'
<a href="profile.php?id=' . $fromid . '"><strong>'.$comment_user.'</strong></a> said via <em>'.$blab_device.'</em>
</span><br />'.$comment_txt.'<br />
</div>
</div>
<hr style="margin:0px; clear:both; margin-left:8px;" />';
}
}else{
$DisplayCommentList = "";
}
$uid = $row["mem_id"];
$the_blab = $row["the_blab"];
$the_blab = ($activeLinkObject -> makeActiveLink($the_blab));
$blab_date = $row["blab_date"];
$convertedTime = ($myObject -> convert_datetime($blab_date));
$whenBlab = ($myObject -> makeAgo($convertedTime));
$blab_date = $row["blab_date"];
$blab_type = $row["blab_type"];
$blab_pic = check_pic("members", $fromid, "60", "profile");
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
$usersql = mysql_query("SELECT firstname, lastname FROM myMembers WHERE id='$fromid' LIMIT 1");
while($row = mysql_fetch_assoc($usersql)){
$fromuser = $row["firstname"];
$fromuserLast = $row["lastname"];
$fromusername = $fromuser . ' ' . $fromuserLast;
if(isset($_SESSION['idx'])){
$blabberDisplayList .= '
<table style="background-image:url(images/white_title.png); color:#333; border:#F0F0F0 1px solid; border-top: 0px; padding-bottom:10px;" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="18%" valign="top"><div id="blab_pic" style="overflow:hidden; width:60px; margin:10px 0px 10px 10px;">' . $blab_pic . '</div></td>
<td width="82%" valign="top" style="line-height:1.5em; padding-top:7px;">
<span id="myTable" class="liteGreyColor textsize9">' . $whenBlab . ' <a href="profile.php?id=' . $fromid . '"><strong>' . $fromusername . '</strong></a> said via <em>' . $blab_device . '</em></span><br />
' . $the_blab . '
</td>
</tr>
<tr>
<td width="18%" valign="top"></td>
<td width="82%" style="line-height:1.5em; padding-right:15px; background-color:#e3eaf3;" valign="top">
'.$DisplayCommentList.'
<div id="new_comment'.$blabid.'" style="display:none;">
</div>
<textarea id="Comment'.$blabid.'" style="width:99%; margin-top:8px; margin-left:8px;" rows="1"></textarea><br />
<input style="color:#666; float:right; background-color:transparent; border:0px; margin-left:8px; margin-right:8px;" type="submit" value="comment" onclick="javascript:SendComment(\''.$blabid.'\');" />
</td>
</tr></table>';
}}}
// ------- END MEMBER BLABS OUTPUT CONSTRUCTION ---------
答案 0 :(得分:0)
不是100%确定你的问题是什么,但我发现你的变量初始化有些问题。相反......缺乏初始化! ; O)
在循环使用初始化变量的数据集之前,尤其是是一种很好的做法。
您可能遇到的一个问题,例如,在您的条件if($count_comment > 0)
中,显然需要变量初始化。假设您有一个迭代,其中$ count_comment&gt; 0,遍历循环,设置所有comment
数据,然后循环外的第一件事命中$comment_pic = check_pic("members", $comment_mem_id, "40", "profile");
。
第一次,工作正常。第二次,假设用户2没有评论。前往if($count_comment > 0)
,不进行循环,直接进入$comment_pic = check_pic("members", $comment_mem_id, "40", "profile");
...你能看到问题吗,朋友?您的评论值在第一次迭代时仍然相同。
在这个示例中,只需在使用它时添加$comment_mem_id = "";
第一件事就可以解决问题。
好运!
**更新:我可能误读了那里的时间,但基本上这个想法是一样的:你应该初始化你的变量,以免你遇到难以追踪的错误。
答案 1 :(得分:0)
答案是将评论查询放入函数中。在循环遍历blabs时,它会在每次传递时循环遍历“所有”注释。我现在开始了:)。谢谢你的帮助!