wr_content 내용이 길 경우 mediumtext 그누보드5 변경된 방식 정보
wr_content 내용이 길 경우 mediumtext 그누보드5 변경된 방식본문
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 설정을 아무리 바꿔봐도 안되었던 것 같습니다.
혹시나 참고하실 분들이 생길까봐 팁자료실에 메모 남겨둡니다.
보통은 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 설정을 아무리 바꿔봐도 안되었던 것 같습니다.
혹시나 참고하실 분들이 생길까봐 팁자료실에 메모 남겨둡니다.
추천
3
3
댓글 11개
그렇군요...
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
TINYTEXT 256 bytes
TEXT 65,535 bytes ~64kb
MEDIUMTEXT 16,777,215 bytes ~16MB
LONGTEXT 4,294,967,295 bytes ~4GB
헉.. 꼭 수정되어야할 내용이군요.
보통 제가 한글파일로 작성해서 그대로 붙여넣기하는경우가 많은데,
내용이 조금 긴경우 64kb가 넘어갑니다. 모르고 있었으면 한참 찾을뿐했네요.
좋은 정보 감사합니다.
보통 제가 한글파일로 작성해서 그대로 붙여넣기하는경우가 많은데,
내용이 조금 긴경우 64kb가 넘어갑니다. 모르고 있었으면 한참 찾을뿐했네요.
좋은 정보 감사합니다.
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
참고로 필드 속성에 따라 저장되는 글자수는 다음과 같습니다.
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
좋은 정보 감사합니다
님이 쓰신 대로 해보았는데요
제가 초보라 말씀하신대로 실행이 되지 않고 있습니다
님의 홈페이지에도 가 보았는데요
글을 쓰신 이후에 내용이 변한것이라도 있는지해서 조언 부탁드립니다
삽입된 소스이고요, 종류는 mediumtext로 변경하였습니다
**** /www/bbs/write_update.php
if (isset($_POST['wr_content'])) { $wr_content = $_POST['wr_content']; // 해피정닷컴 수정 (2015-05-18)
//$wr_content = substr(trim($_POST['wr_content']),0,65536);
$wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}
**** /www/lib/editor.lib.php
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\">$content</textarea>"; // 해피정닷컴 수정 (2015-05-18)
님이 쓰신 대로 해보았는데요
제가 초보라 말씀하신대로 실행이 되지 않고 있습니다
님의 홈페이지에도 가 보았는데요
글을 쓰신 이후에 내용이 변한것이라도 있는지해서 조언 부탁드립니다
삽입된 소스이고요, 종류는 mediumtext로 변경하였습니다
**** /www/bbs/write_update.php
if (isset($_POST['wr_content'])) { $wr_content = $_POST['wr_content']; // 해피정닷컴 수정 (2015-05-18)
//$wr_content = substr(trim($_POST['wr_content']),0,65536);
$wr_content = preg_replace("#[\\\]+$#", "", $wr_content);
}
**** /www/lib/editor.lib.php
return "<textarea id=\"$id\" name=\"$id\" style=\"width:100%;\">$content</textarea>"; // 해피정닷컴 수정 (2015-05-18)
음... 특별히 변동된것은 없구요.
사이트 제작하면서 코드 변경이 있는경우엔 제 홈페이지에 업데이트를 합니다.
웹에이전시를 운영중이라서 적용할때마도 제가 정리한 코드를 찾아서 적용하고, 오류가 있으면 확인후 업데이를 하고는 있습니다.
사이트 제작하면서 코드 변경이 있는경우엔 제 홈페이지에 업데이트를 합니다.
웹에이전시를 운영중이라서 적용할때마도 제가 정리한 코드를 찾아서 적용하고, 오류가 있으면 확인후 업데이를 하고는 있습니다.
/* /lib/common.lib.php에 추가 */
function get_wr_content_size()
{
$sql = "SELECT COLUMN_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = '%s'
AND COLUMN_NAME = '%s'
AND TABLE_SCHEMA = '%s'";
$sql = sprintf($sql, $GLOBALS['write_table'], 'wr_content', G5_MYSQL_DB);
$query = mysql_query($sql);
$row = mysql_fetch_array($query, MYSQL_NUM);
switch (strtolower($row[0])) {
case 'tinytext': return 256;
case 'text': return 65535;
case 'mediumtext': return 16777215;
case 'longtext': return 4294967295;
}
}
/* /bbs/write_update.php 의 17줄 */
$wr_content = substr(trim($_POST['wr_content']),0,get_wr_content_size());
/* /lib/editor.lib.php 의 11줄 */
return '<textarea id="'.$id.'" name="'.$id.'" style="width:100%;" maxlength="'.get_wr_content_size().'">'.$content.'</textarea>';
Edit: 2016.03.10 오후 7:08. 오타가 있었는데 아무도 말이 없었네요.
^^ 유용한팁 감사합니다
오... 좋은 정보 감사합니다!!
매우중요
감사합니다.
감사합니다~