회원가입시 회원정보 입력 시 다중 테이블에 db 값 페이지에서 회원정

회원가입시 회원정보 입력 시 다중 테이블에 db 값 페이지에서 회원정

QA

회원가입시 회원정보 입력 시 다중 테이블에 db 값 페이지에서 회원정

답변 6

본문

안녕하세요.

 

회원가입 페이지에서 그누보드에서 제공하는 회원 정보 이외에

추가적으로 회원 정보를 입력칸을 만들고,

추가적인 회원 정보는 새로운 테이블 g5_member_addinfo 라는 테이블을 만들어

그 테이블에 회원 정보를 insert 할려고 합니다.

 

그래서, 회원가입 페이지에서 회원 정보를 입력하면

g5_member 테이블과 새로 만든 테이블 g5_member_addinfo 테이블

동시에 회원 정보 db 값을 insert 되게 할려고 합니다.

 

그래서 밑에처럼 했는데 안되네요.

회원가입 페이지에서 정보를 입력하고 회원가입 완료 버튼을 누르면 회원 가입 완료 페이지로 이동안하고

index.php 페이지로 이동하면서 회원가입이 안되네요.

 

고수님들의 감사한 조언 부탁드립니다.

감사합니다.

 

 

Mysql 신규 테이블 g5_member_addinfo

 


 
CREATE TABLE `g5_member_addinfo` (
    `mb_no` INT(11) NOT NULL AUTO_INCREMENT,
    `mb_id` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
    `mb_datetime` TIMESTAMP NOT NULL DEFAULT current_timestamp(),
    `mb_update_ip` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
    `mb_product_info` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
    `mb_product_sn` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
    `mb_using_time` VARCHAR(255) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
    PRIMARY KEY (`mb_no`) USING BTREE,
    UNIQUE INDEX `mb_id` (`mb_id`) USING BTREE,
    INDEX `mb_datetime` (`mb_datetime`) USING BTREE
)
COLLATE='utf8_general_ci'
ENGINE=InnoDB
;

이 것은 HeidiSQL 에서 열 추가 버튼을 눌러서 만들었습니다.

 

theme/skin/member/basic/register_form.skin.php 파일에는


<form id="fregisterform" name="fregisterform" action="<?php echo $register_action_url ?>" onsubmit="return fregisterform_submit(this);" method="post" enctype="multipart/form-data" autocomplete="off">
<input type="hidden" name="w" value="<?php echo $w ?>">
<input type="hidden" name="url" value="<?php echo $urlencode ?>">
 
중간 생략
 
회원정보 추가 부분
<table class="peinfo01">
<thead>
  <tr>
    <th class="peinfo01-a01">
        <h3>상품 정보</h3>
    </th>
  </tr>
</thead>
</table>
 
<br>
 
<table class="peinfo01">
<thead>
  <tr>
    <th class="peinfo01-a01">
    어떤 종류의 제품을 사용하고 계십니까?
    </th>
  </tr>
</thead>
<tbody>
  <tr>
    <td class="peinfo01-a01">
        <input type="radio" name="mb_product_info" value="product A"<?php echo ($member['mb_product_info'] == "product A") ? " checked" : "";?>> product A
        <input type="radio" name="mb_product_info" value="product B"<?php echo ($member['mb_product_info'] == "product B") ? " checked" : "";?>> product B
        <input type="radio" name="mb_product_info" value="product C"<?php echo ($member['mb_product_info'] == "product C") ? " checked" : "";?>> product C
    </td>
  </tr>
</tbody>
</table>
 
<br>
 
<table class="peinfo01">
<thead>
  <tr>
    <th class="peinfo01-a01">
    제품 시리얼넘버
    </th>
  </tr>
</thead>
<tbody>
  <tr>
    <td class="peinfo01-a01">
        <input type="text" name="mb_product_sn" value="<?php echo $member['mb_product_sn'] ?>" id="mb_product_sn" class="frm_input" size="50">
    </td>
  </tr>
</tbody>
</table>
 
<br>
 
<table class="app_peinfo01">
<thead>
  <tr>
    <th class="app_peinfo01-a01">
        제품을 사용하고 계신 기간은 어떻게 되십니까?
    </th>
  </tr>
</thead>
<tbody>
  <tr>
    <td class="peinfo01-a01">
        <input type="radio" name="mb_using_time" value="1개월 미만"<?php echo ($member['mb_using_time'] == "1개월 미만") ? " checked" : "";?>> 1개월 미만
        <input type="radio" name="mb_using_time" value="3개월 미만"<?php echo ($member['mb_using_time'] == "3개월 미만") ? " checked" : "";?>> 3개월 미만
        <input type="radio" name="mb_using_time" value="6개월 미만"<?php echo ($member['mb_using_time'] == "6개월 미만") ? " checked" : "";?>> 6개월 미만
        <input type="radio" name="mb_using_time" value="1년 이상"<?php echo ($member['mb_using_time'] == "1년 이상") ? " checked" : "";?>> 1년 이상
    </td>
  </tr>
</tbody>
</table>
추가 회원정보 입력 끝
 
중간 생략
 
<div class="btn_confirm">
    <a href="<?php echo G5_URL ?>" class="btn_cancel">취소</a>
    <input type="submit" value="<?php echo $w==''?'회원가입':'정보수정'; ?>" id="btn_submit" class="btn_submit" accesskey="s">
</div>
</form>

 

이렇게 추가 했습니다.

 

그리고,

 

 

bbs/register_form_update,php 파일에는 3 부분을 추가했습니다.

 

추가부분 1


$mb_password    = isset($_POST['mb_password']) ? trim($_POST['mb_password']) : '';
$mb_password_re = isset($_POST['mb_password_re']) ? trim($_POST['mb_password_re']) : '';
$mb_name        = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
$mb_nick        = isset($_POST['mb_name']) ? trim($_POST['mb_name']) : '';
중간생략
$mb_10          = isset($_POST['mb_10'])            ? trim($_POST['mb_10'])          : "";
//추가부분 시작
$mb_product_info          = isset($_POST['mb_product_info'])            ? trim($_POST['mb_product_info'])          : "";
$mb_product_sn          = isset($_POST['mb_product_sn'])            ? trim($_POST['mb_product_sn'])          : "";
$mb_using_time          = isset($_POST['mb_using_time'])            ? trim($_POST['mb_using_time'])          : "";
//추가부분 끝
$mb_name        = clean_xss_tags($mb_name);
$mb_email       = get_email_address($mb_email);

 

추가부분 2


if ($w == '') {
    $sql = " insert into {$g5['member_table']}
                set mb_id = '{$mb_id}',
                     mb_password = '".get_encrypt_string($mb_password)."',
                     mb_name = '{$mb_name}',
                     중간생략
                     mb_10 = '{$mb_10}'
                     {$sql_certify} ";
 
//추가부분
    $sql = " insert into {$g5['member_addinfo_table']}
                set mb_id = '{$mb_id}',
                     mb_product_info = '{$mb_product_info}',
                     mb_product_sn = '{$mb_product_sn}',
                     mb_using_time = '{$mb_using_time}',
                     {$sql_certify} ";
//추가부분 끝

 

추가부분 3


$sql = " update {$g5['member_table']}
                set mb_nick = '{$mb_nick}',
                    mb_mailling = '{$mb_mailling}',
                    mb_sms = '{$mb_sms}',
                    중간생략
                    mb_10 = '{$mb_10}'
                    {$sql_password}
                    {$sql_nick_date}
                    {$sql_open_date}
                    {$sql_email_certify}
                    {$sql_certify}
              where mb_id = '$mb_id' ";
    sql_query($sql);
 
//추가부분
    $sql = " update {$g5['member_product_info_table']}
                set mb_product_info = '{$mb_product_info}',
                    mb_product_sn = '{$mb_product_sn}',
                    mb_using_time = '{$mb_using_time}',
              where mb_id = '$mb_id' ";
    sql_query($sql);
//추가부분 끝

 

이렇게 했습니다.

 

조언 부탁드립니다.

감사합니다.

이 질문에 댓글 쓰기 :

답변 6

추가부분2 에서 $sql_certify 부분이 문제가 아닐까 생각되네요.

본인확인 사용안하면 빈값이 될거고 바로 위 using_time 뒤에 쉽표( , ) 가 들어가 있어서 오류난 듯 보입니다.

mb_using_time = '{$mb_using_time}',
                     {$sql_certify} ";

 

아래처럼 해서 쿼리문 확인해보세요.

 

echo $sql;

exit;

말씀하신데로


mb_using_time = '{$mb_using_time}'
                     {$sql_certify} ";

echo $sql;
exit;


했더니

DB 값들이 보이네요.
그런데.

echo $sql;
exit;
를 빼고 해도 회원가입이 안되네요.


dbconfig.php 파일에는

['member_addinfo_table'] = G5_TABLE_PREFIX.'member_addinfo'; // 회원 상품 정보 테이블

이렇게 넣어놨는데.
이것이 잘못된 걸까요?

아.. 제가 한가지 경우만 적었네요.

위에 유찬아빠님 답글에 댓글 쓰신 내용 중 아래 에러가 나오는 걸 보니 본인확인 기능을 사용중인 것으로 보입니다.
1054 : Unknown column 'mb_hp' in 'field list'


mb_using_time = '{$mb_using_time}',
                    {$sql_certify} ";

위에 코드를 아래처럼 바꿔보세요.

mb_using_time = '{$mb_using_time}' ";


{$sql_certify} 이 부분은 그누보드 기본 회원 테이블에 들어가는 필드(컬럼) 기 때문에 새로 추가한 테이블의 필드와 상관이 없습니다.


['member_addinfo_table'] = G5_TABLE_PREFIX.'member_addinfo'; // 회원 상품 정보 테이블

=> $g5['member_addinfo_table'] = G5_TABLE_PREFIX.'member_addinfo'; // 회원 상품 정보 테이블
앞에 $g5는 빼고 적으신거죠?


echo $sql;
exit;

해서 나오는 쿼리문을 mysql workbench 나 phpmyadmin 등으로 직접 실행해보면 에러 내용 확인 가능합니다.

답변 감사드립니다.

그런데,


$g5['member_table'] = G5_TABLE_PREFIX.'member'; // 회원 테이블
$g5['member_addinfo_table'] = G5_TABLE_PREFIX.'member_addinfo'; // 회원 알파스팀 정보 테이블
$g5['memo_table'] = G5_TABLE_PREFIX.'memo'; // 메모 테이블

이렇게 넣었구요.

말씀하신데로

bbs/register_form_update,php 파일에


mb_using_time = '{$mb_using_time}',
                    {$sql_certify} ";

이 부분을

mb_using_time = '{$mb_using_time}' ";

이렇게 바꿨더니.

새로 만든 테이블인 member_addinfo 에는 DB 값이 들어가는데 회원가입은 안되네요.

그리고,
bbs/register_form_update,php 파일에서


    $sql = " insert into {$g5['member_addinfo_table']}
                set mb_id = '{$mb_id}',
                     mb_product_info = '{$mb_product_info}',
                     mb_product_sn = '{$mb_product_sn}',
                     mb_using_time = '{$mb_using_time}',
                     {$sql_certify} ";

이 부분을 삭제하면 정상적으로 가입이 됩니다.

$sql = " insert into {$g5['member_addinfo_table']} 을 넣었을때는
어떤 부분이 충돌이 나서 회원가입은 안되면서
member_addinfo 의 DB 값은 들어가는 걸까요? ㅠㅠ

감사합니다.

적어놓은 코드 보면 아래처럼 되어 있어요.

$sql = ""; // 그누보드 기본 회원가입
$sql = ""; // 추가 테이블 회원가입

sql_query($sql);


위에 $sql 은 무시되고 아래 $sql 만 적용되는거죠.
아래처럼 되어야 됩니다.

$sql = ""; // 그누보드 기본 회원가입
sql_query($sql);

$sql = ""; // 추가 테이블 회원가입
sql_query($sql);

다른 부분은 문제가 없어보이고..

 

{$g5['member_addinfo_table']}

이 상수를 할당하지 않으신것 같은데요..

 

그냥

 

$sql = " insert into {$g5['member_addinfo_table']}

 

이걸

 

$sql = " insert into g5_member_addinfo

 

이걸로 바꿔보세요.

 

 

답변 감사드립니다.
그런데 말씀하신데로 했는데 전과 같이 회원가입완료 버튼을 누르면 회원가입은 안되고 index.php로 가네요. ㅠㅠ

말씀하신
{$g5['member_addinfo_table']}
이 상수를 할당하는 것은 어떻게 하는 건가요?
조언 부탁드립니다.
감사합니다.

data 폴더에 dbconfig.php 파일 열어보시면 금방 아실거에요.

sql_query($sql,true); 이런식으로 쿼리 하셔서 에러는 체크해 보세요

안녕하세요.
말씀하신데로 했더니.
DB 값은 정상적으로 보이는데.
이런 문구가 뒷부분에 있네요.

1054 : Unknown column 'mb_hp' in 'field list'

error file : /bbs/register_form_update.php

그런데.
mb_hp 는 그누보드에서 제공하는 설정으로 보이기와 필수입력을 선택해서

추가로

$sql = " insert into {$g5['member_addinfo_table']}

를 넣지 않았을때는 정상적으로 회원가입이 되거든요.

그런데 추가 테이블 insert 만 넣으면 안되네요.
무엇이 문제일까요?
감사합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 1,543
© SIRSOFT
현재 페이지 제일 처음으로