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

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

QA

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

본문

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

 


<?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

답변을 작성하시기 전에 로그인 해주세요.
전체 0
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT