리스트에서 댓글을 출력하는 코드에 대한 질문입니다

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
리스트에서 댓글을 출력하는 코드에 대한 질문입니다

QA

리스트에서 댓글을 출력하는 코드에 대한 질문입니다

답변 3

본문

아래처럼해서 리스트에 댓글을 출력하고 있는데요~~문제는 댓글에 대한 답글이 댓글리스트의 아래쪽에 죽 출력되고 있어요~`댓글에 대한 답글이 해당 댓글아래에 바로 출력되게하려면 어찌하면 되나요?

 


<?php
                // 댓글 조회
                $sql = "SELECT * FROM {$g5['write_prefix']}{$bo_table}
                        WHERE wr_parent = '{$list[$i]['wr_id']}' AND wr_is_comment = 1
                        ORDER BY wr_parent ASC, wr_comment_reply ASC, wr_datetime ASC";
                $comments = sql_query($sql);
 
                while ($comment = sql_fetch_array($comments)) {
                    echo "wr_id: " . $comment['wr_id'] . "<br>";
                    echo "wr_comment_reply: " . (!empty($comment['wr_comment_reply']) ? $comment['wr_comment_reply'] : '없음') . "<br>";
                    echo "wr_parent: " . $comment['wr_parent'] . "<br>";
                    echo "wr_datetime: " . $comment['wr_datetime'] . "<br>";
                    echo "-------------------<br>";
                    $comment_content = $comment['wr_content'];
                    $comment_content = applyEmoticons($comment_content, $emoticons); // 이모티콘 적용
 
                    if ($comment['wr_option'] == 'secret' && !$is_member) {
                        $comment_content = '<i class="fa fa-lock" aria-hidden="true"></i> 비밀글입니다.';
                    }
 
                    // wr_comment_reply 값이 있으면 답글로 간주
                    $is_reply = !empty($comment['wr_comment_reply']); // wr_comment_reply 값이 있으면 true
                    $cmt_depth = $is_reply ? strlen($comment['wr_comment_reply']) * 20 : 0; // 들여쓰기 깊이 계산
 
                    // 답글의 깊이에 따라 들여쓰기 적용
                    $cmt_depth = $is_reply ? (strlen($comment['wr_comment_reply']) * 20) : 0;
                ?>
                 <div class="comment-content">                
                    댓글:<?php echo $comment_content; ?>
                </div>
 

이 질문에 댓글 쓰기 :

답변 3

wr_comment_reply는 댓글의 답글을 구분하는 문자열로,

예를 들어 A, AA, AAA와 같이 답글의 깊이를 나타냅니다.

현재 코드에서는 wr_parent와 wr_comment_reply를 순서대로 정렬하고 있지만,

경우에 따라 답글이 의도한 댓글 바로 아래에 정렬되지 않을 수 있습니다.

 

SQL 정렬 기준을 정확히 설정하고,

PHP에서 wr_comment_reply 길이에 따른 들여쓰기를 적용하세요,

*wr_comment_reply 정렬: 댓글-답글 계층 구조를 유지하며 출력.

*margin-left로 들여쓰기: 답글의 깊이에 따라 시각적으로 구분.

*구조적 계층 출력: 답글이 댓글 바로 아래에 출력되도록 정렬된 결과를 기반으로 렌더링.

SQL 정렬

SELECT wr_id, wr_content, wr_comment_reply, wr_option, wr_datetime
FROM {$g5['write_prefix']}{$bo_table}
WHERE wr_parent = '{$list[$i]['wr_id']}' AND wr_is_comment = 1
ORDER BY wr_comment_reply ASC, wr_datetime ASC;
PHP 구현

<?php
while ($comment = sql_fetch_array($comments)) {
    // 댓글 들여쓰기 깊이 계산
    $cmt_depth = strlen($comment['wr_comment_reply']) * 20;
    // 댓글 내용 설정
    $comment_content = $comment['wr_content'];
    if ($comment['wr_option'] == 'secret' && !$is_member) {
        $comment_content = '<i class="fa fa-lock" aria-hidden="true"></i> 비밀글입니다.';
    }
    // 댓글 출력 (depth 클래스 추가)
    echo '<div class="comment-content depth-' . strlen($comment['wr_comment_reply']) . '" style="margin-left: ' . $cmt_depth . 'px;">';
    echo '댓글: ' . $comment_content;
    echo '</div>';
}
?>

댓글 계층에 따라 스타일을 명확히 구분하려면 CSS를 추가하실 수도 있음.


.comment-content {
    padding: 10px;
    border-bottom: 1px solid #ddd;
}
.comment-content.depth-0 {
    font-weight: bold;
}
.comment-content.depth-1 {
    font-style: italic;
}
.comment-content.depth-2 {
    color: #888;
}

댓글과 답글의 wr_comment_reply 값에 따라 아래와 같이 출력됩니다.

1930905316_1737004987.9363.png

wr_comment, wr_comment_reply 로 정렬을 하네요. 그누 기본에서는

질문할게 뭐 있나요?

댓글 출력하는 화일 view_comment.php보면 답이 나오는데

 

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로