댓글에서 여분필드 사용시 값을 어떻게 저장되나요?

댓글에서 여분필드 사용시 값을 어떻게 저장되나요?

QA

댓글에서 여분필드 사용시 값을 어떻게 저장되나요?

본문

안녕하세요!

오늘 제가 막히는 부분은 바로

댓글(코멘트) 에서 여분필드의 사용입니다.

 

아래 링크에서 댓글에서도 게시물과 마찬가지로 여분필드를 사용할 수 있다고 하셨는데요

http://sir.kr/qa/119083?stx=%EB%8C%93%EA%B8%80+%EC%97%AC%EB%B6%84%ED%95%84%EB%93%9C&sst=wr_num&unanswered=0&s_tag=

 

 

view_comment.skin.php 에서 여분필드 2 에 필요한 값을 넣을수 있게


        <tr>
            <th scope="row"><label for="wr_2">wr_2</label></th>
            <td>
   <input type="text" name="wr_2" value="<?php echo $wr_2 ?>" id="wr_2" class="frm_input" size="50">
   </td>
        </tr>

이렇게 값을 넣었구요

 

 

write_comment_update.skin 에서 여분필드 2의 값이 넘어올수 있게


$sql2 = " update {$write_table} set wr_2 = '{$wr_2}' where wr_id = '{$wr_id}' ";
sql_query($sql2);

 

이렇게 넣어주었습니다.

 

결론은 댓글에서 wr_2 여분필드에 값을 채워넣는데는 성공했습니다.

저장도 잘 되구요.

 

그런데!!

 

댓글(코멘트)마다 독립적인 여분필드가 아닌

모두가 공유하는 wr_2 가 탄생했습니다;;

 

댓글에서 wr_2 에 AAAA 란 값을 입력했고

댓글 목록에서 wr_2 에 AAAA 란 값이 정상으로 나왔습니다.

 

그런데.. 다른 댓글의 wr_2 도 모두 AAAA 로 바뀌어 있습니다...

 

 

게시물처럼 댓글에서만 사용할수 있는

독립적인 여분필드는 없을까요??

 

한시간 정도 검색하다가 답이 없어 이렇게 글 남깁니다.

 

 

SIR 능력자여러분 매번 감사하다는 말씀밖에 전해드리지 못하지만..

 

그래도 감사합니다.

 

 

이 질문에 댓글 쓰기 :

답변 4

1.

write_comment_update.skin.php 파일은 필요 없습니다. 

여분필드는 자동으로 입력되게 되어 있습니다.

 

2.

view_comment.skin.php 파일에서 문제가 있거나 업데이트가 잘 못되고 있었던 것 같은데요. 

 

우선 1번항 처리(파일 삭제) 하고 나서도 문제가 있다면,

view_comment.skin.php 내용을 올려주시는게 좋을 것 같습니다. 

해당 파일에서 문제가 있을 가능성이 있네요.

 

여분필드를 wr_1 로 사용했는데요
혹시 게시판에서 사용하는 게 아닌 댓글에서 사용하는 여분필드는
값이 다른가요??

생각해보니까 게시판에서도 wr_1 을 사용하고
댓글에서도 wr_1 을 사용하면 문제가 될것 같아서요..

예를 들어 회원 여분코드는 mb_1 인것처럼요
댓글만의 여분필드가 따로 있지는 않나요??

view_comment.skin.php 입니다.

베이직 스킨 기반에 값넣는 항목만 추가하였어요.

 


​<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
?>
<script>
// 글자수 제한
var char_min = parseInt(<?php echo $comment_min ?>); // 최소
var char_max = parseInt(<?php echo $comment_max ?>); // 최대
</script>
<!-- 댓글 시작 { -->
<section id="bo_vc">
    <h2>댓글목록</h2>
    <?php
    $cmt_amt = count($list);
    for ($i=0; $i<$cmt_amt; $i++) {
        $comment_id = $list[$i]['wr_id'];
        $cmt_depth = ""; // 댓글단계
        $cmt_depth = strlen($list[$i]['wr_comment_reply']) * 20;
        $comment = $list[$i]['content'];
        /*
        if (strstr($list[$i]['wr_option'], "secret")) {
            $str = $str;
        }
        */
        $comment = preg_replace("/\[\<a\s.*href\=\"(http|https|ftp|mms)\:\/\/([^[:space:]]+)\.(mp3|wma|wmv|asf|asx|mpg|mpeg)\".*\<\/a\>\]/i", "<script>doc_write(obj_movie('$1://$2.$3'));</script>", $comment);
        $cmt_sv = $cmt_amt - $i + 1; // 댓글 헤더 z-index 재설정 ie8 이하 사이드뷰 겹침 문제 해결
     ?>
    <article id="c_<?php echo $comment_id ?>" <?php if ($cmt_depth) { ?>style="margin-left:<?php echo $cmt_depth ?>px;border-top-color:#e0e0e0"<?php } ?>>
        <header style="z-index:<?php echo $cmt_sv; ?>">
            <h1><?php echo get_text($list[$i]['wr_name']); ?>님의 댓글</h1>
            <?php echo $list[$i]['name'] ?>
            <?php if ($cmt_depth) { ?><img src="<?php echo $board_skin_url ?>/img/icon_reply.gif" class="icon_reply" alt="댓글의 댓글"><?php } ?>
            <?php if ($is_ip_view) { ?>
            아이피
            <span class="bo_vc_hdinfo"><?php echo $list[$i]['ip']; ?></span>
            <?php } ?>
            작성일
            <span class="bo_vc_hdinfo"><time datetime="<?php echo date('Y-m-d\TH:i:s+09:00', strtotime($list[$i]['datetime'])) ?>"><?php echo $list[$i]['datetime'] ?></time></span>
            <?php
            include(G5_SNS_PATH.'/view_comment_list.sns.skin.php');
            ?>
        </header>
        <!-- 댓글 출력 -->
        <p>
            <?php if (strstr($list[$i]['wr_option'], "secret")) { ?><img src="<?php echo $board_skin_url; ?>/img/icon_secret.gif" alt="비밀글"><?php } ?>
            <?php echo $comment ?>
        </p>

        <span id="edit_<?php echo $comment_id ?>"></span><!-- 수정 -->
        <span id="reply_<?php echo $comment_id ?>"></span><!-- 답변 -->
        <input type="hidden" value="<?php echo strstr($list[$i]['wr_option'],"secret") ?>" id="secret_comment_<?php echo $comment_id ?>">
        <textarea id="save_comment_<?php echo $comment_id ?>" style="display:none"><?php echo get_text($list[$i]['content1'], 0) ?></textarea>
  wr_1 : <?php echo ($view['wr_1']) ?><br>
  wr_2 : <?php echo ($view['wr_2']) ?><br>
  wr_3 : <?php echo ($view['wr_3']) ?><br>
  wr_4 : <?php echo ($view['wr_4']) ?><br>
  wr_5 : <?php echo ($view['wr_5']) ?>
        <?php if($list[$i]['is_reply'] || $list[$i]['is_edit'] || $list[$i]['is_del']) {
            $query_string = clean_query_string($_SERVER['QUERY_STRING']);
            if($w == 'cu') {
                $sql = " select wr_id, wr_content, mb_id from $write_table where wr_id = '$c_id' and wr_is_comment = '1' ";
                $cmt = sql_fetch($sql);
                if (!($is_admin || ($member['mb_id'] == $cmt['mb_id'] && $cmt['mb_id'])))
                    $cmt['wr_content'] = '';
                $c_wr_content = $cmt['wr_content'];
            }
            $c_reply_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=c#bo_vc_w';
            $c_edit_href = './board.php?'.$query_string.'&c_id='.$comment_id.'&w=cu#bo_vc_w';
         ?>
        <footer>
            <ul class="bo_vc_act">
                <?php if ($list[$i]['is_reply']) { ?><li><a href="<?php echo $c_reply_href;  ?>" onclick="comment_box('<?php echo $comment_id ?>', 'c'); return false;">답변</a></li><?php } ?>
                <?php if ($list[$i]['is_edit']) { ?><li><a href="<?php echo $c_edit_href;  ?>" onclick="comment_box('<?php echo $comment_id ?>', 'cu'); return false;">수정</a></li><?php } ?>
                <?php if ($list[$i]['is_del'])  { ?><li><a href="<?php echo $list[$i]['del_link'];  ?>" onclick="return comment_delete();">삭제</a></li><?php } ?>
            </ul>
        </footer>
        <?php } ?>
    </article>
    <?php } ?>
    <?php if ($i == 0) { //댓글이 없다면 ?><p id="bo_vc_empty">등록된 댓글이 없습니다.</p><?php } ?>
</section>
<!-- } 댓글 끝 -->
<?php if ($is_comment_write) {
    if($w == '')
        $w = 'c';
?>
<!-- 댓글 쓰기 시작 { -->
<aside id="bo_vc_w">
    <h2>댓글쓰기</h2>
    <form name="fviewcomment" action="./write_comment_update.php" onsubmit="return fviewcomment_submit(this);" method="post" autocomplete="off">
    <input type="hidden" name="w" value="<?php echo $w ?>" id="w">
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="wr_id" value="<?php echo $wr_id ?>">
    <input type="hidden" name="comment_id" value="<?php echo $c_id ?>" id="comment_id">
    <input type="hidden" name="sca" value="<?php echo $sca ?>">
    <input type="hidden" name="sfl" value="<?php echo $sfl ?>">
    <input type="hidden" name="stx" value="<?php echo $stx ?>">
    <input type="hidden" name="spt" value="<?php echo $spt ?>">
    <input type="hidden" name="page" value="<?php echo $page ?>">
    <input type="hidden" name="is_good" value="">
    <div class="tbl_frm01 tbl_wrap">
        <table>
        <tbody>
        <?php if ($is_guest) { ?>
        <tr>
            <th scope="row"><label for="wr_name">이름<strong class="sound_only"> 필수</strong></label></th>
            <td><input type="text" name="wr_name" value="<?php echo get_cookie("ck_sns_name"); ?>" id="wr_name" required class="frm_input required" size="5" maxLength="20"></td>
        </tr>
        <tr>
            <th scope="row"><label for="wr_password">비밀번호<strong class="sound_only"> 필수</strong></label></th>
            <td><input type="password" name="wr_password" id="wr_password" required class="frm_input required" size="10" maxLength="20"></td>
        </tr>
        <?php } ?>
        <tr>
            <th scope="row"><label for="wr_secret">비밀글사용</label></th>
            <td><input type="checkbox" name="wr_secret" value="secret" id="wr_secret"></td>
        </tr>
        <tr>
            <th scope="row"><label for="wr_2">wr_2</label></th>
            <td>
   <input type="text" name="wr_2" value="<?php echo $wr_2 ?>" id="wr_2" class="frm_input" size="50">
   </td>
        </tr>
        <tr>
            <th scope="row"><label for="wr_3">wr_3</label></th>
            <td>
   <input type="text" name="wr_3" value="<?php echo $wr_3 ?>" id="wr_3" class="frm_input" size="50">
   </td>
        </tr>
        <tr>
            <th scope="row"><label for="wr_4">wr_4</label></th>
            <td>
   <input type="text" name="wr_4" value="<?php echo $wr_4 ?>" id="wr_4" class="frm_input" size="50">
   </td>
        </tr>
        <tr>
            <th scope="row"><label for="wr_5">wr_5</label></th>
            <td>
   <input type="text" name="wr_5" value="<?php echo $wr_5 ?>" id="wr_5" class="frm_input" size="50">
   </td>
        </tr>
        <?php if ($is_guest) { ?>
        <tr>
            <th scope="row">자동등록방지</th>
            <td><?php echo $captcha_html; ?></td>
        </tr>
        <?php } ?>
        <?php
        if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) {
        ?>
        <tr>
            <th scope="row">SNS 동시등록</th>
            <td id="bo_vc_send_sns"></td>
        </tr>
        <?php
        }
        ?>
        <tr>
            <th scope="row">내용</th>
            <td>
                <?php if ($comment_min || $comment_max) { ?><strong id="char_cnt"><span id="char_count"></span>글자</strong><?php } ?>
                <textarea id="wr_content" name="wr_content" maxlength="10000" required class="required" title="내용"
                <?php if ($comment_min || $comment_max) { ?>onkeyup="check_byte('wr_content', 'char_count');"<?php } ?>><?php echo $c_wr_content;  ?></textarea>
                <?php if ($comment_min || $comment_max) { ?><script> check_byte('wr_content', 'char_count'); </script><?php } ?>
                <script>
                $(document).on( "keyup change", "textarea#wr_content[maxlength]", function(){
                    var str = $(this).val()
                    var mx = parseInt($(this).attr("maxlength"))
                    if (str.length > mx) {
                        $(this).val(str.substr(0, mx));
                        return false;
                    }
                });
                </script>
            </td>
        </tr>
        </tbody>
        </table>
    </div>
    <div class="btn_confirm">
        <input type="submit" id="btn_submit" class="btn_submit" value="댓글등록">
    </div>
    </form>
</aside>
<script>
var save_before = '';
var save_html = document.getElementById('bo_vc_w').innerHTML;
function good_and_write()
{
    var f = document.fviewcomment;
    if (fviewcomment_submit(f)) {
        f.is_good.value = 1;
        f.submit();
    } else {
        f.is_good.value = 0;
    }
}
function fviewcomment_submit(f)
{
    var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
    f.is_good.value = 0;
    var subject = "";
    var content = "";
    $.ajax({
        url: g5_bbs_url+"/ajax.filter.php",
        type: "POST",
        data: {
            "subject": "",
            "content": f.wr_content.value
        },
        dataType: "json",
        async: false,
        cache: false,
        success: function(data, textStatus) {
            subject = data.subject;
            content = data.content;
        }
    });
    if (content) {
        alert("내용에 금지단어('"+content+"')가 포함되어있습니다");
        f.wr_content.focus();
        return false;
    }
    // 양쪽 공백 없애기
    var pattern = /(^\s*)|(\s*$)/g; // \s 공백 문자
    document.getElementById('wr_content').value = document.getElementById('wr_content').value.replace(pattern, "");
    if (char_min > 0 || char_max > 0)
    {
        check_byte('wr_content', 'char_count');
        var cnt = parseInt(document.getElementById('char_count').innerHTML);
        if (char_min > 0 && char_min > cnt)
        {
            alert("댓글은 "+char_min+"글자 이상 쓰셔야 합니다.");
            return false;
        } else if (char_max > 0 && char_max < cnt)
        {
            alert("댓글은 "+char_max+"글자 이하로 쓰셔야 합니다.");
            return false;
        }
    }
    else if (!document.getElementById('wr_content').value)
    {
        alert("댓글을 입력하여 주십시오.");
        return false;
    }
    if (typeof(f.wr_name) != 'undefined')
    {
        f.wr_name.value = f.wr_name.value.replace(pattern, "");
        if (f.wr_name.value == '')
        {
            alert('이름이 입력되지 않았습니다.');
            f.wr_name.focus();
            return false;
        }
    }
    if (typeof(f.wr_password) != 'undefined')
    {
        f.wr_password.value = f.wr_password.value.replace(pattern, "");
        if (f.wr_password.value == '')
        {
            alert('비밀번호가 입력되지 않았습니다.');
            f.wr_password.focus();
            return false;
        }
    }
    <?php if($is_guest) echo chk_captcha_js();  ?>
    document.getElementById("btn_submit").disabled = "disabled";
    return true;
}
function comment_box(comment_id, work)
{
    var el_id;
    // 댓글 아이디가 넘어오면 답변, 수정
    if (comment_id)
    {
        if (work == 'c')
            el_id = 'reply_' + comment_id;
        else
            el_id = 'edit_' + comment_id;
    }
    else
        el_id = 'bo_vc_w';
    if (save_before != el_id)
    {
        if (save_before)
        {
            document.getElementById(save_before).style.display = 'none';
            document.getElementById(save_before).innerHTML = '';
        }
        document.getElementById(el_id).style.display = '';
        document.getElementById(el_id).innerHTML = save_html;
        // 댓글 수정
        if (work == 'cu')
        {
            document.getElementById('wr_content').value = document.getElementById('save_comment_' + comment_id).value;
            if (typeof char_count != 'undefined')
                check_byte('wr_content', 'char_count');
            if (document.getElementById('secret_comment_'+comment_id).value)
                document.getElementById('wr_secret').checked = true;
            else
                document.getElementById('wr_secret').checked = false;
        }
        document.getElementById('comment_id').value = comment_id;
        document.getElementById('w').value = work;
        if(save_before)
            $("#captcha_reload").trigger("click");
        save_before = el_id;
    }
}
function comment_delete()
{
    return confirm("이 댓글을 삭제하시겠습니까?");
}
comment_box('', 'c'); // 댓글 입력폼이 보이도록 처리하기위해서 추가 (root님)
<?php if($board['bo_use_sns'] && ($config['cf_facebook_appid'] || $config['cf_twitter_key'])) { ?>
// sns 등록
$(function() {
    $("#bo_vc_send_sns").load(
        "<?php echo G5_SNS_URL; ?>/view_comment_write.sns.skin.php?bo_table=<?php echo $bo_table; ?>",
        function() {
            save_html = document.getElementById('bo_vc_w').innerHTML;
        }
    );
});
<?php } ?>
</script>
<?php } ?>
<!-- } 댓글 쓰기 끝 -->
 

출력 부분을 $view 로 해놓으셨네요. $list[$i] 로 해야 합니다.
wr_1 : <?php echo $list[$i]['wr_1'] ?>

게시판 본문글, 코멘트글 여분필드 사용 방법은 둘 다 동일합니다.
코멘트라고 해서 다른 필드를 사용하는 게 아닙니다.

작은별님.

출력부분을


  wr_1 : <?php echo ($list[$i]['wr_1']) ?><br>
  wr_2 : <?php echo ($list[$i]['wr_2']) ?><br>
  wr_3 : <?php echo ($list[$i]['wr_3']) ?><br>
  wr_4 : <?php echo ($list[$i]['wr_4']) ?><br>
  wr_5 : <?php echo ($list[$i]['wr_5']) ?><br>

이렇게 했는데도 값이 안들어옵니다.

게시판은 기본 베이직 게시판이구요.

위 view_comment.skin.php 파일 외에는 건들지 않았습니다..

 

뭐가 문제일까요...

 

 

입력부분은


        <tr>
            <th scope="row"><label for="wr_1">wr_1</label></th>
            <td>
   <input type="text" name="wr_1" value="<?php echo $wr_1 ?>" id="wr_1" class="frm_input" size="50">
   </td>
        </tr>

 

이렇게 되어있는데 입력부분도 이상이 없나요??

 

 

 

 

 

아 해결했습니다!

와. 진짜 ㅠㅠ

 

아까 지우라고 하신 업데이트 파일을 주석처리하고 저장했는데

컨트롤+S 가 안먹어서 기존 파일 그대로였네요..

 

하 참^^

 

작은별님 그림자밟기님! 감사합니다^^ 

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

회원로그인

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