꽃이피는첫걸음

입력항목이 많은 양식을 게시판으로 만드는 팁

· 2018-10-02 (화) 12:10:21 · 6906 · 4

그누보드에서는 기본적으로 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가 잘 작동하지만.. 이쪽이 더 원활한 것 같습니다.

 

첨부파일

json.extend.php (1.7 KB) 45회 2018-10-02 12:10
|

댓글 4개

2018-10-02 (화) 16:41:22
좋은 팁 감사합니다
계산을 해야 하는 경우가 많은데 그런 경우도 모두 content에 집어넣고 가능한가요? 그리고 필드 200개나 만든거보다 훨씬 효율적인가요?
2018-10-02 (화) 18:20:35
검색은 검색할 항목을 지정하고 조회해야 하기때문에 확장필드가 필요합니다.
200개 필드 파싱도 크게 늦진 않을것이구요. 서버측에서 부하가 걱정되신다면 javascript에서 json을 파싱하여 사용하여도 됩니다.
이 팁의 좋은점은 write_update.php의 수정없이 skin에서 모두 처리 할 수 있다는 것입니다.
계산같은 경우는 submit된 데이터도 파싱하여 계산할 수 있고 javascript에서 계산하고 serialize 하여 전송할 수도 있으므로 문제가 되지 않는다고 생각합니다.
2018-10-02 (화) 18:40:51
아 감사합니다. 적용해봐야 겠습니다~
흥미로운 방식이네요
혹시 입력 부분은 어떻게 구성이 될까요?
일반 사용자도 입력이 가능하게끔
보여줄수가 있을까요??
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
18-10-23 조회 1.3만
18-10-22 조회 9,798
18-10-21 조회 6,572
18-10-21 조회 6,213
18-10-20 조회 6,126
18-10-18 조회 7,176
18-10-17 조회 7,836
18-10-15 조회 6,387
18-10-14 조회 1.2만
18-10-12 조회 1.7만
18-10-10 조회 6,616
18-10-10 조회 7,659
18-10-10 조회 5,178
18-10-08 조회 5,610
18-10-08 조회 1.1만
18-10-06 조회 8,515
18-10-04 조회 1.4만
18-10-03 조회 7,129
18-10-02 조회 6,907
18-10-02 조회 6,142
18-09-29 조회 5,630
18-09-28 조회 7,113
18-09-21 조회 1만
18-09-20 조회 9,023
18-09-17 조회 7,293
18-09-13 조회 7,516
18-09-12 조회 6,353
18-09-05 조회 8,924
18-09-05 조회 6,710
18-09-02 조회 9,617