wr_content의 내용이 길어서 불가피하게 DB 설정을 mediumtext로 변경하는 경우가 있습니다.
보통은 DB에서 mediumtext로 변경해주면 해결이 되는데,
아무리 DB에서 wr_content 의 형식을 mediumtext나 longtext로 변경을 해봐도,
항상 저장되는 내용은 text 크기인 65536byte만 저장이 되더라구요.
이리저리 원인을 찾다가 write_update.php 소스를 열어보니,
17번째 줄부터
$wr_content = '';
if (isset($_POST['wr_content'])) {
$wr_content = substr(trim($_POST['wr_content']),0,65536);
}
이런 소스가 첨부가 되어 있더라구요,
그래서 DB 설정을 아무리 바꿔봐도 안되었던 것 같습니다.
혹시나 참고하실 분들이 생길까봐 팁자료실에 메모 남겨둡니다.
1. 테이블의 wr_content 필드 속성을 text 에서 MEDIUMTEXT 또는 LONGTEXT 로 변경합니다.
참고로 필드 속성에 따라 저장되는 글자수는 다음과 같습니다.
tinytext 256 bytes
text 65,535 bytes ~64kb
mediumtext 16,777,215 bytes ~16MB
longtext 4,294,967,295 bytes ~4GB
2. / bbs / write_update.php 의 17줄
if (isset($_POST['wr_content'])) {
$wr_content = substr(trim($_POST['wr_content']),0,65536);
}
를 아래와 같이 변경합니다.
if (isset($_POST['wr_content'])) {
$wr_content = substr(trim($_POST['wr_content']),0,65536);
if ($is_admin) { // 관리자일때는 65,535자 이상 ... 물론 디비 필드 속성을 상향한 경우에만 사용하세요.
$wr_content = $_POST['wr_content'];
}
}
3. / lib / editor.lib.php 의 11줄
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\" maxlength=\"65536\">$content</textarea>";
를 아래와 같이 변경
if ($is_admin) { // 해피정닷컴 추가 (2014-03-02)
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\">$content</textarea>";
} else { // 해피정닷컴 추가 (2014-03-02)
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\" maxlength=\"65536\">$content</textarea>";
} // 해피정닷컴 추가 (2014-03-02)
4. 향후 생성되는 게시판은 모두 긴 내용이 입력되도록 할때는
/ adm / sql_write.sql 의 12라인 내용을 변경합니다.
`wr_content` text NOT NULL,
를 아래와 같이 변경
`wr_content` mediumtext NOT NULL,
이후업데이트는 아래 경로에서 확인할수 있습니다. 중복자료가 될수 있기에 별도 팁으로 올리지 않습니다.
http://www.happyjung.com/bbs/board.php?bo_table=lecture&wr_id=1656