[그누보드5] 회원정보 여분 필드 추가 하는 방법

그누보드5에서 기본적으로 회원정보 테이블에 여분의 필드가 10개 제공되고 있습니다.

그런데 개발을 하다보면 여분 필드가 10개 이상 필요로 할 때가 있는데 이때 여분 필드를 추가하는 방법을 알려드리도록 하겠습니다.

DB 컬럼 추가

기존 g5_member 테이블의 여분 필드는 mb_1에서 mb_10까지입니다.

여분 필드를 11~20까지 추가하기 위해 회원정보 수정 페이지(/adm/member_form.php) 나 별도의 PHP 파일에 아래의 코드를 추가하여 실행해줍니다.

for ($i = 11; $i <= 20; $i++) {
    $columnName = 'mb_' . $i;
    $previousColumnName = 'mb_' . ($i - 1);

    $sql = "SHOW COLUMNS FROM `{$g5['member_table']}` LIKE '{$columnName}'";
    $res = sql_fetch($sql);

    if (strpos($res['Type'], 'varchar') === false) {
        $sql = "ALTER TABLE `{$g5['member_table']}` 
                ADD COLUMN `{$columnName}` VARCHAR(255) NOT NULL DEFAULT '' AFTER `{$previousColumnName}`;";
        sql_query($sql, false);
    }
}

“SHOW COLUMNS”를 통해 해당 컬럼이 없을 경우에만 새로 추가하는 코드를 만들었습니다.

쿼리가 자주 수행되는 것이 마음에 걸릴 경우 컬럼 생성 후 해당 코드를 제거하셔도 무방합니다.

관리자 회원정보 수정

회원정보 수정 페이지 수정

회원정보 입력/수정 페이지는 “/adm/member_form.php”입니다.

해당 파일 7줄을 보면 아래와 같은 코드가 있습니다.

$mb = array(
    /* 생략 */
    'mb_8' => null,
    'mb_9' => null,
    'mb_10' => null,
);

mb_10 컬럼 밑으로 mb_11에서 mb_20까지 추가하겠습니다.

$mb = array(
    /* 생략 */
    'mb_8' => null,
    'mb_9' => null,
    'mb_10' => null,
    'mb_11' => null,
    'mb_12' => null,
    'mb_13' => null,
    'mb_14' => null,
    'mb_15' => null,
    'mb_16' => null,
    'mb_17' => null,
    'mb_18' => null,
    'mb_19' => null,
    'mb_20' => null,
);

그리고 568번줄(위의 코드를 추가한 후에는 578번줄)을 보면 for문에 $i <= 10으로 되어있는 코드가 있는데 아래와 같이 $i <= 20으로 변경해주면 이 파일에서 수정해야할 사항은 끝입니다.

<?php for ($i = 1; $i <= 20; $i++) { ?>
    <tr>
        <th scope="row"><label for="mb_<?php echo $i ?>">여분 필드 <?php echo $i ?></label></th>
        <td colspan="3"><input type="text" name="mb_<?php echo $i ?>" value="<?php echo $mb['mb_' . $i] ?>" id="mb_<?php echo $i ?>" class="frm_input" size="30" maxlength="255"></td>
    </tr>
<?php } ?>

회원정보 저장 페이지 수정

회원정보를 입력하고 정보를 저장하는 페이지는 “/adm/member_form_update.php”입니다.

해당 파일 91줄을 보면 아래와 같은 코드가 있습니다.

$sql_common = "  mb_name = '{$posts['mb_name']}',
                 /* 생략 */
                 mb_9 = '{$posts['mb_9']}',
                 mb_10 = '{$posts['mb_10']}' ";

mb_10 부분 밑에 아래와 같이 mb_11부터 mb_20까지 추가해주면 됩니다.

$sql_common = "  mb_name = '{$posts['mb_name']}',
                 /* 생략 */
                 mb_9 = '{$posts['mb_9']}',
                 mb_10 = '{$posts['mb_10']}',
                 mb_11 = '{$posts['mb_11']}',
                 mb_12 = '{$posts['mb_12']}',
                 mb_13 = '{$posts['mb_13']}',
                 mb_14 = '{$posts['mb_14']}',
                 mb_15 = '{$posts['mb_15']}',
                 mb_16 = '{$posts['mb_16']}',
                 mb_17 = '{$posts['mb_17']}',
                 mb_18 = '{$posts['mb_18']}',
                 mb_19 = '{$posts['mb_19']}',
                 mb_20 = '{$posts['mb_20']}' ";

테스트

이제 회원정보 수정 페이지에서 여분 필드가 11~20까지 출력되는지 확인하고 데이터도 정상적으로 저장이 되는지 테스트 해보시면 된 답니다.


코멘트

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다