gpt4 book ai didi

php - PHP 中的嵌套循环 - 布局问题

转载 作者:太空宇宙 更新时间:2023-11-04 15:29:50 25 4
gpt4 key购买 nike

我正在构建的网站中有一个评论和回复部分。回复部分设置为右移 margin-left 10%。但是,当我测试代码时,它会将每个回复都向右移动,而不是将所有回复一起移动。我被卡住了,因为回复在评论中循环,我不知道如何解决它。这是代码...

        // Comments section
// Get Username and ID from database
if ($login->isLoggedIn()) {
$userquery = "SELECT * FROM settings WHERE user_id=$userid";
$usersql = mysql_query($userquery) or die('SQL Error :: '.mysql_error());
$userqueryrow = mysql_fetch_assoc($usersql);
$usercommentname = $userqueryrow['display_name'];
} else {
}

// Posted Comments
$commentquery = "SELECT * FROM comments WHERE listing_id=$listingid AND response_to_id='0' ORDER BY comment_ts ASC";
$commentsql = mysql_query($commentquery) or die('SQL Error :: '.mysql_error());

if(mysql_num_rows($commentsql) == 0){
echo '<div align="center">No comments have been posted yet.</div>';
} else {
while($commentrow=mysql_fetch_array($commentsql))
{
// Get comment display name from database
// Get Username and ID from database
$commentid = $commentrow['comment_id'];
$commenterid = $commentrow['user_id'];
$commenterquery = "SELECT * FROM settings WHERE user_id=$commenterid";
$commentersql = mysql_query($commenterquery) or die('SQL Error :: '.mysql_error());
$commenterqueryrow = mysql_fetch_assoc($commentersql);
$commentername = $commenterqueryrow['display_name'];
echo '<div class="comment"><a href="mypage.php?user='.$commenterid.'">'.$commentername.'</a> said: '.stripslashes($commentrow['comment']).'';

if ($login->isLoggedIn()) {
// Has this user already reported this comment?
$reportedcommentquery = "SELECT * FROM report WHERE comment_id=$commentid AND reporter_id=$userid AND listing_id=$listingid";
$reportedcomment = mysql_query($reportedcommentquery) or die('SQL Error :: '.mysql_error());

if (mysql_num_rows($reportedcomment) > "0") {
echo ' <span class="small_gray">-Reported and under review-</span>';
} else {
echo ' <a href="item.php?item='.$listingid.'&report='.$commentid.'" class="small_graylink">Report</a>';
}

echo '</div>';

// Get responses
$responsesquery = "SELECT * FROM comments WHERE listing_id=$listingid AND response_to_id=$commentid ORDER BY comment_ts ASC";
$responsessql = mysql_query($responsesquery) or die('SQL Error :: '.mysql_error());

if(mysql_num_rows($responsessql) == 0){
echo '';
} else {
while($responsesrow=mysql_fetch_array($responsessql))
{
// Get responder display name from database
$responderid = $responsesrow['user_id'];
$responseid = $responsesrow['comment_id'];
$responderquery = "SELECT * FROM settings WHERE user_id=$responderid";
$respondersql = mysql_query($responderquery) or die('SQL Error :: '.mysql_error());
$responderqueryrow = mysql_fetch_assoc($respondersql);
$respondername = $responderqueryrow['display_name'];
$responderid = $responderqueryrow['user_id'];
echo '<div class="response"><a href="mypage.php?user='.$responderid.'">'.$respondername.'</a> said: '.stripslashes($responsesrow['comment']).'';

if ($login->isLoggedIn()) {
// Has this user already reported this comment?
$reportedresponsequery = "SELECT * FROM report WHERE comment_id=$responseid AND reporter_id=$userid AND listing_id=$listingid";
$reportedresponse = mysql_query($reportedresponsequery) or die('SQL Error :: '.mysql_error());

if (mysql_num_rows($reportedresponse) > "0") {
echo' <span class="small_gray">-Reported and under review-</span>';
} else {
echo' <a href="item.php?item='.$listingid.'&report='.$responsesrow['comment_id'].'" class="small_graylink">Report</a>';
}
}
}

echo '</div>';
echo '<div class="clear"></div>';
}
}

// Response form
if ($login->isLoggedIn()) {
echo '<div class="responsebox">Respond to this comment:<br /><form id="newresponseto" name="newresponseto" method="post" action="item.php?item='.$listingid.'&comment='.$commentrow['comment_id'].'">
<textarea name="new_response" cols="43" rows="2">'.$usercommentname.' says:</textarea><br />
<input type="submit" name="Submit" value="Submit" /></form></div><hr>';
} else {
}
}
}

// Comment form
if ($login->isLoggedIn()) {
echo' <div class="commentbox">Post a comment:<br /><form id="newcommentform" name="newcommentform" method="post" action="item.php?item='.$listingid.'">
<textarea name="new_comment" cols="50" rows="2">'.$usercommentname.' says:</textarea><br />
<input type="submit" name="Submit" value="Submit" />
</form></div>';
} else {
echo '<div align="center">Log in to post comments or responses.</div>';
}

这是对应的CSS..

.comment {
float: left;
width: 100%;
background-color:#CCCCCC;
margin-bottom: 10px;

}

.commentbox {
float: left;
width: 100%;
margin-bottom: 10px;
}

.response {
float: left;
background-color:#EDEFF4;
margin-bottom: 10px;

}

.responsecontainer {
float: left;
margin-left: 10%;
width: 90%;
margin-bottom: 10px;
}

.responsebox {
float: left;
margin-bottom: 10px;
}

知道如何保持嵌套循环,但强制响应(以及实际上任何后续评论)在不循环左边距的情况下进行布局吗?

最佳答案

我在您发布的代码中没有看到您在哪里调用了 .responsecontainer类,它将设置 margin-left 10%。

但是 responses 的嵌套是因为你没有关闭你的 <div class="response">while循环,仅在关闭循环后结束。所以你会遇到这样的情况 -

<div class="response"><a href="mypage.php?user=1">user1</a> said: Yes
<div class="response"><a href="mypage.php?user=2">user2</a> said: I agree
<div class="response"><a href="mypage.php?user=3">user3</a> said: Are You Sure?
</div>

所以最后 2 个将嵌套到第一个 <div>而不是直接在下面。

您需要添加 <div class="responsecontainer"> response周围while循环,然后添加 </div>在循环内。

截断的脚本-

            // Get responses
...
echo '<div class="responsecontainer">'; // Add <div class="responsecontainer"> to make all responses margin-left 10% as a group
if(mysql_num_rows($responsessql) == 0){
...

while($responsesrow=mysql_fetch_array($responsessql))
{
// Get responder display name from database
$responderid = $responsesrow['user_id'];
$responseid = $responsesrow['comment_id'];
$responderquery = "SELECT * FROM settings WHERE user_id=$responderid";
$respondersql = mysql_query($responderquery) or die('SQL Error :: '.mysql_error());
$responderqueryrow = mysql_fetch_assoc($respondersql);
$respondername = $responderqueryrow['display_name'];
$responderid = $responderqueryrow['user_id'];
echo '<div class="response"><a href="mypage.php?user='.$responderid.'">'.$respondername.'</a> said: '.stripslashes($responsesrow['comment']).'';

if ($login->isLoggedIn()) {
// Has this user already reported this comment?
$reportedresponsequery = "SELECT * FROM report WHERE comment_id=$responseid AND reporter_id=$userid AND listing_id=$listingid";
$reportedresponse = mysql_query($reportedresponsequery) or die('SQL Error :: '.mysql_error());

if (mysql_num_rows($reportedresponse) > "0") {
echo' <span class="small_gray">-Reported and under review-</span>';
} else {
echo' <a href="item.php?item='.$listingid.'&report='.$responsesrow['comment_id'].'" class="small_graylink">Report</a>';
}
}
echo '</div>'; // Missing </div> inside while loop
}

echo '</div>'; // Ends <div class="responsecontainer">
echo '<div class="clear"></div>';
}

关于php - PHP 中的嵌套循环 - 布局问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13548291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com