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

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

QA

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

본문

안녕하세요.

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

 

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

1888667301_1675919494.7945.png

 

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

1888667301_1675919582.213.png

 

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

1888667301_1675919606.6915.png

 

그런데.... 

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

1888667301_1675919730.7958.png

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

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

 

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

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

 

검색해보니,

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

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

 

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

 

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

감사합니다.

 

게시판 write.skin.php에


<?php
if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가
 
// 추가
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));
}
.
.
.
<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>
.
.
.
<?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>
<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>
<?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>

 

write_update.skin.php에


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];
}
$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);

이 질문에 댓글 쓰기 :

답변 1

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

답변을 작성하시기 전에 로그인 해주세요.
전체 1

회원로그인

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