그누보드에서는 기본적으로 wr_1~wr_10의 추가필드를 제공합니다.
하지만 입력양식을 만들다 보면 항목이 많은경우 테이블 구조를 변경해야하는 수준까지 수정을 해야하는 경우가 생길 수 있습니다.
이런경우 검색으로 사용해야하는 특정 필드만을 wr_1~wr_10으로 배정하고 나머지 일반적인 항목을 wr_content 필드에 모두 넣어서 사용할 수 있는 방법 입니다.
1. json_encode / json_decode가 지원되어야 합니다.
2. 검색해야 하는 필드들은 반드시 wr_1~wr_10 필드를 사용합니다.
3. 입력항목들 모두를 json 데이터로 만들어 wr_content에 저장합니다.
-----------------------------------------------------------------------------------
/* write.skin.php */
-----------------------------------------------------------------------------------
/* 첫부분에 wr_content 필드를 파싱하도록 합니다. */
$json_content = json_decode_custom($write['wr_content']);
$json_data = array();
foreach($json_content AS $item) {
$json_data[$item['name']] = $item['value'];
}
/* 다음의 형태로 입력필드를 구성할 수 있습니다.
<input type="text" name="call_no" value="<?php echo $json_data['call_no'] ?>" id="call_no" required class="frm_input full_input required" placeholder="연락처"> */
/* 저장시 json으로 wr_content에 저장하기 위하여 form의 onsubmit을 다음과 같이 수정합니다. */
<form name="fwrite" id="fwrite" action="..." onsubmit="return submit_fwrite(this);" method="post" enctype="multipart/form-data" autocomplete="off" style="width:...">
/* javascript를 만듭니다. : json으로 처리후 원래의 onsubmit을 호출합니다. */
function submit_fwrite(form)
{
$('#wr_content').val(JSON.stringify($('#fwrite').serializeArray()));
return fwrite_submit(form);
}
-----------------------------------------------------------------------------------
/* view.skin.php */
-----------------------------------------------------------------------------------
/* 첫부분에 wr_content 필드를 파싱하여 양식에 맞게 데이터를 출력 합니다. */
json_content = json_decode_custom($view['wr_content']);
$json_data = array();
foreach($json_content AS $item) {
$json_data[$item['name']] = $item['value'];
}
json.extend.php를 첨부합니다.
php5.3이상에선 json_encode가 잘 작동하지만.. 이쪽이 더 원활한 것 같습니다.
댓글 4개
200개 필드 파싱도 크게 늦진 않을것이구요. 서버측에서 부하가 걱정되신다면 javascript에서 json을 파싱하여 사용하여도 됩니다.
이 팁의 좋은점은 write_update.php의 수정없이 skin에서 모두 처리 할 수 있다는 것입니다.
계산같은 경우는 submit된 데이터도 파싱하여 계산할 수 있고 javascript에서 계산하고 serialize 하여 전송할 수도 있으므로 문제가 되지 않는다고 생각합니다.
게시글 목록
| 번호 | 제목 |
|---|---|
| 24318 | |
| 24317 | |
| 24315 | |
| 24309 | |
| 24294 | |
| 24293 | |
| 24277 | |
| 24262 | |
| 24260 | |
| 24253 | |
| 24251 | |
| 24236 | |
| 24233 | |
| 24228 | |
| 24226 | |
| 24221 | |
| 24214 | |
| 24203 | |
| 24201 | |
| 24199 | |
| 24196 | |
| 24195 | |
| 24194 | |
| 24192 | |
| 24191 | |
| 24187 | |
| 24185 | |
| 24183 | |
| 24172 | |
| 24168 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기