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

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
글수정시 문자가 깨지는 이유가 뭘까요?

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

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

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

회원로그인

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