다중테이블에 db값 insert 채택완료
안녕하세요.
회원가입페이지에서 추가적으로 정보를 입력할때
새로운테이블 g5_member_addinfo 라는 테이블을 만들었습니다.
그래서, 회원가입페이지에서 추가 회원정보 입력 칸을 만들어서
g5_member 테이블 외에 g5_member_addinfo 테이블에도 동시에 db 값을 insert 할려고 합니다.
그래서
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">
중간에
<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="productA"<?php echo ($member['mb_productA'] == "productA") ? " checked" : "";?>> productA
<input type="radio" name="mb_product_info" value="productB"<?php echo ($member['mb_productA'] == "productB") ? " checked" : "";?>> productB
<input type="radio" name="mb_product_info" value="productC"<?php echo ($member['mb_productA'] == "productC") ? " checked" : "";?>> productC
</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>
를 넣었습니다.
<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>
그리고,
register_form_update,php 파일에는
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}',
{$sql_certify} ";
를 추가하고
$sql = " update {$g5['member_table']}
set mb_nick = '{$mb_nick}',
mb_mailling = '{$mb_mailling}',
중간생략
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_addinfo__table']}
set mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
{$sql_password}
{$sql_nick_date}
{$sql_open_date}
{$sql_email_certify}
{$sql_certify}
where mb_id = '$mb_id' ";
sql_query($sql);
를 추가했습니다.
그런데, 회원가입이 안되더라구요.
고수님들의 조언 부탁드립니다.
감사합니다.
답변 5개
{$sql_password}
{$sql_nick_date}
{$sql_open_date}
{$sql_email_certify}
{$sql_certify}
값들~
member_table 에 본인인증, 성별 등에 대한 필드가 들어가는 겁니다.
g5_member_addinfo 테이블 작업시 해당 하는 부분은 지워야 해요~
==============================
밑에
$sql = " insert into {$g5['member_addinfo_table']}
set mb_id = '{$mb_id}',
mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
{$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}' ";
=========================================
$sql = " update {$g5['member_addinfo__table']}
set mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
{$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_addinfo__table']}
set mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}'
where mb_id = '$mb_id' ";
sql_query($sql);
==========================
답변에 대한 댓글 2개
register_form_update,php 파일 윗부분
if(!$mb_id)
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');
if(!$mb_id)
alert('회원아이디 값이 없습니다. 올바른 방법으로 이용해 주십시오.');
$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_email = isset($_POST['mb_email']) ? trim($_POST['mb_email']) : '';
$mb_sex = isset($_POST['mb_sex']) ? trim($_POST['mb_sex']) : "";
$mb_birth = isset($_POST['mb_birth']) ? trim($_POST['mb_birth']) : "";
$mb_homepage = isset($_POST['mb_homepage']) ? trim($_POST['mb_homepage']) : "";
중간생략
$mb_8 = isset($_POST['mb_8']) ? trim($_POST['mb_8']) : "";
$mb_9 = isset($_POST['mb_9']) ? trim($_POST['mb_9']) : "";
$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']) : "";
이렇게 추가했었습니다.
그런데 안되네요.
이 부분도 확인 부탁드립니다.
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
그런데 제가 초보이다보니 말씀하신 디버깅해서 체크해 보는 것은 어떻게 하는 건가요?
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
우선 $sql_certify 가 어떤 값인지 알수 없는것 같고
update 부에 오타로 유추되는 구문이 있는것 같습니다. : member_addinfo__table
`mb_datetime` DATETIME NOT NULL,
의 경우는 기본값이 없는 상태에서 전달된 값이 없어서 발생하는 문제가 아닐까 생각되고
값이 없어도 동작해야 한다면
`mb_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
로 변경해볼수 있을것 같습니다.
답변에 대한 댓글 3개
말씀하신 부분 체크해봤는데
==> update 부에 오타로 유추되는 구문이 있는것 같습니다. : member_addinfo__table
이 부분은 어떤 부분인지요?
그리고,
==> `mb_datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
이 부분은
`mb_datetime` TIMESTAMP NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
이렇게 바꿨는데 맞는 건가요?
확인 부탁드립니다.
감사합니다.
[code]
member_addinfo__table // 오타
member_addinfo_table // 정상
[/code]
컬럼 정의부는 괄호 빼고 사용해도 됩니다.
https://dev.mysql.com/doc/refman/8.0/en/timestamp-initialization.html
[code]
`mb_datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
[/code]
' ON UPDATE CURRENT_TIMESTAMP' 의 경우
row 수정시 마다 최신 시각으로 자동 업데이트 되는 기능이므로 필요할 경우만 사용합니다.
그런데, 말씀하신 오타 수정하고.
`mb_datetime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
로 바꿨는데도 안되네요.
뭐가 문제일까요?
좀더 확인 해 주실 수 있나요?
감사합니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 1개
이 필드값 이외에 추가로 여러 필드값을 추가할 예정이라
새로운 테이블 만들려 하는 것이에요.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 2개
정상적으로 필드는 추가해 넣었습니다.
`mb_no` INT(11) NOT NULL AUTO_INCREMENT,
`mb_id` VARCHAR(20) NOT NULL DEFAULT '' COLLATE 'utf8_general_ci',
`mb_datetime` DATETIME NOT NULL,
`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',
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
;
이렇게 넣었습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
알려주신데로 해 보았는데 회원가입이 완료가 되지를 않네요.
설명하신 내용이 이렇게 하는 것이 맞는 건가요?
insert 추가 부분에
$sql = " insert into {$g5['member_addinfo_table']}
set mb_id = '{$mb_id}',
mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
{$sql_certify} ";
update 추가 부분에
$sql = " update {$g5['member_addinfo__table']}
set mb_product_info = '{$mb_product_info}',
mb_product_sn = '{$mb_product_sn}',
where mb_id = '$mb_id' ";
sql_query($sql);
이렇게 했는데 안되네요.
제가 틀린 부분이 있는지 확인 부탁 드립니다.
감사합니다.