테스트 사이트 - 개발 중인 베타 버전입니다

글수정시 문자가 깨지는 이유가 뭘까요? 채택완료

masahide 2년 전 조회 1,875

안녕하세요.

그누보드5 게시판에 아래 소스를 추가해서 사용중입니다. 

 

글쓰기 화면에 아래처럼 입력란이 있고,

 

우측의 입력칸 추가를 클릭하면 아래로 입력할 수 있는칸이 계속 나옵니다.

 

글을 작성하면 본문에 아래 이미지처럼 정상적으로 등록됩니다.

 

그런데.... 

문제는 이 글을 수정하면, 첫줄의 2, 3, 4번째 칸의 내용이 아래처럼 깨져버립니다.

몇줄을 입력하건 꼭 첫번째 줄 2, 3, 4번째 칸의 내용만 저렇습니다.

입력칸을 4칸이 아닌 2칸만 하면, 무조건 첫번째 줄 2번째 칸만 깨지고요.

 

예전에 그누보드 4때부터 사용하던거 계속 수정해서 사용중인데,

예전에는 별 문제 없었는데, 그누보드5에서부터 이런거 같습니다.

 

검색해보니,

저 마름모꼴+물음표 모양이 나오는게 문서를 UTF-8로 저장하는 과정에서 뭔가 꼬여서 문서가 온전하게 저장되지 못하면 이렇게 된다고 하는데,

어디를 수정해야 할지 감이 오질 않습니다.

 

제가 사용한 소스는 아래 모두 적었습니다.

 

혹시 이거 어떻게 수정해야 하는지 아시는 분 계시면 답변 부탁드립니다.

감사합니다.

 

게시판 write.skin.php에

</p>

<p><?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가</p>

<p> </p>

<p>// 추가

if ($w == "u") {

    $wr_body_1 = explode("|",substr($write['wr_11'], 1));

    $wr_body_2 = explode("|",substr($write['wr_12'], 2));

    $wr_body_3 = explode("|",substr($write['wr_13'], 3));

    $wr_body_4 = explode("|",substr($write['wr_14'], 4));

}</p>

<p>.</p>

<p>.</p>

<p>.

<script>

function addRow() {

    var oRow = dyntbl1.insertRow();

        oRow.onmouseover=function(){dyntbl1.clickedRowIndex=this.rowIndex};

        var oCell1 = oRow.insertCell();

        var oCell2 = oRow.insertCell();

        var oCell3 = oRow.insertCell();

        var oCell4 = oRow.insertCell();

        var oCell5 = oRow.insertCell();

        oCell1.innerHTML = "<input class=frm_input style='width:100%;' name=wr_body_1[] itemname='입력칸1' maxlength='20'>";

        oCell2.innerHTML = "<input class=frm_input style='width:100%;' name=wr_body_2[] itemname='입력칸2' maxlength='20'>";

        oCell3.innerHTML = "<input class=frm_input style='width:100%;' name=wr_body_3[] itemname='입력칸3' maxlength='20'>";

        oCell4.innerHTML = "<input class=frm_input style='width:100%;' name=wr_body_4[] itemname='입력칸4' maxlength='20'>";

        oCell5.innerHTML = "<input type=button value=\" 삭제 \" onClick=\"delRow()\">";

        document.recalc();

}

function delRow() {

    dyntbl1.deleteRow(dyntbl1.clickedRowIndex);

}

function delRow_php(r)

{

var i=r.parentNode.parentNode.rowIndex;

document.getElementById('dyntbl2').deleteRow(i);

}

function fixscreen() {

    var buffer = document.all.item(0).outerHTML;

    document.open("text/html", "replace");

    document.write(buffer);

    document.close();

}

function addCol() {

    var vCell,tmp;

        for (var i=0; i<dyntbl1.rows.length; i++) {

        tmp=dyntbl1.rows[i].cells[dyntbl1.rows[i].cells.length-1].cloneNode(true);

        dyntbl1.rows[i].deleteCell();

        vCell=dyntbl1.rows[i].insertCell();

        vCell.innerHTML=i==0?"<input type=button value=' X ' onclick='delCol(parentNode.cellIndex)'>":" ";

        vCell=dyntbl1.rows[i].insertCell();

        vCell.innerHTML=tmp.innerHTML;

        }

}

function delCol(idx) {

    for (var i=0; i<=dyntbl1.rows.length; i++) {

    dyntbl1.rows[i].cells[idx].removeNode();

    }

}

</script></p>

<p>.</p>

<p>.</p>

<p>.</p>

<p><?php if ($w == "u") { ?>

<table class="schedule1" id="dyntbl2">

<thead>

<tr>

<th class="th1">입력칸1</th>

<th class="th1">입력칸2</th>

<th class="th1">입력칸3</th>

<th class="th1">입력칸4</th>

<th class="th2"></th>

</tr>

</thead></p>

<p><tbody>

<?php for ($i = 0;  $i < count($wr_body_1); $i++) { ?>

<tr height="30" id=v_<?=$i?>>

 <td><input class="frm_input" style="width:100%;" name="wr_body_1[]" itemname="입력칸1" value="<?=$wr_body_1[$i]?>" maxlength="20"></td>

<td><input class="frm_input" style="width:100%;" name="wr_body_2[]" itemname="입력칸2" value="<?=$wr_body_2[$i]?>" maxlength="20"></td>

<td><input class="frm_input" style="width:100%;" name="wr_body_3[]" itemname="입력칸3" value="<?=$wr_body_3[$i]?>" maxlength="20"></td>

<td><input class="frm_input" style="width:100%;" name="wr_body_4[]" itemname="입력칸4" value="<?=$wr_body_4[$i]?>" maxlength="20"></td>

<td><input type=button value=" 삭제 " onClick="delRow_php(this)"></td>

</tr>

<?php } ?>

</tbody>

</table></p>

<p><?php } ?>

<table class="schedule1" id="dyntbl1">

<thead>

<tr>

<th class="th1">입력칸1</th>

<th class="th1">입력칸2</th>

<th class="th1">입력칸3</th>

<th class="th1">입력칸4</th>

<th class="th2"><a href="javascript:void(0);" value="입력칸추가 +" onClick="addRow()"><i class="fa fa-plus" aria-hidden="true"></i> 입력칸추가</a></th>

</tr>

</thead>

</table></p>

<p>

 

write_update.skin.php에

</p>

<p>for ($i = 0;  $i < count($wr_body_1); $i++)

{

    $wr_11 = $wr_11."|".$wr_body_1[$i];

    $wr_12 = $wr_12."|".$wr_body_2[$i];

    $wr_13 = $wr_13."|".$wr_body_3[$i];

    $wr_14 = $wr_14."|".$wr_body_4[$i];

}</p>

<p>$sql11 = "update $write_table set wr_11 = '$wr_11', wr_12 = '$wr_12', wr_13 = '$wr_13', wr_14 = '$wr_14' where wr_id = '$wr_id' ";

sql_query($sql11);</p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 1개

채택된 답변
+20 포인트
2년 전

디비 테이블 해당 컬럼에 언어셋 문제 일지도...

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

m
masahide
2년 전
답변 감사합니다.
언어셋 문제는 아니었고,
지금보니 제가 소스에서 잘못 설정한게 있었네요.
수정 후 정상 작동합니다.

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인