회원가입시 고유번호 주는것을 하는데 막힙니다. 정보
회원가입시 고유번호 주는것을 하는데 막힙니다.
본문
<?
include_once("./_common.php");
// 불법접근을 막도록 토큰생성
$token = md5(uniqid(rand(), true));
set_session("ss_token", $token);
if ($w == "") {
// 회원 로그인을 한 경우 회원가입 할 수 없다
// 경고창이 뜨는것을 막기위해 아래의 코드로 대체
// alert("이미 로그인중이므로 회원 가입 하실 수 없습니다.", "./");
if ($member[mb_id])
goto_url($g4[path]);
// 리퍼러 체크
referer_check();
if (!$_POST[agree])
alert("회원가입약관의 내용에 동의하셔야 회원가입 하실 수 있습니다.", "./register.php");
if (!$_POST[agree2])
alert("개인정보취급방침의 내용에 동의하셔야 회원가입 하실 수 있습니다.", "./register.php");
// 주민등록번호를 사용한다면 중복검사를 합니다.
if ($config[cf_use_jumin]) {
$jumin = sql_password($mb_jumin);
$row = sql_fetch(" select mb_name from $g4[member_table] where mb_jumin = '$jumin' ");
if ($row[mb_name]) {
if ($row[mb_name] == $mb_name)
alert("이미 가입되어 있습니다.");
else
alert("다른 이름으로 같은 주민등록번호가 이미 가입되어 있습니다.\\n\\n관리자에게 문의해 주십시오.");
}
// 주민등록번호의 7번째 한자리 숫자
$y = substr($mb_jumin, 6, 1);
// 성별은 F, M 으로 나눈다.
// 주민등록번호의 7번째 자리가 홀수이면 남자(Male), 짝수이면 여자(Female)
$sex = $y % 2 == 0 ? "F" : "M";
// 생일은 8자리로 만든다 (나중에 검색을 편하게 하기 위함)
// 주민등록번호 앞자리를 그냥 생일로 사용함 ㅠㅠ
// 주민등록번호 7번째 자리를 따져서...
$birth = substr($mb_jumin, 0, 6);
if ($y == 9 || $y == 0) // 1800년대생 (계시려나?)
$birth = "18" . $birth;
else if ($y == 1 || $y == 2) // 1900년대생
$birth = "19" . $birth;
else if ($y == 3 || $y == 4) // 2000년대생
$birth = "20" . $birth;
else // 오류
$birth = "xx" . $birth;
}
$member[mb_birth] = $birth;
$member[mb_sex] = $sex;
$member[mb_name] = $mb_name;
$maxnum = mysql_query("SELECT max(1000)+1 FROM $g4[member_table] where mb_1=$mb_1");
if(!$maxnum) $maxnum = 1000;
$mb_1 = date("Ymd").$maxnum ;
echo $mb_1 ;
$g4[title] = "회원 가입";
}
else if ($w == "u")
{
if ($is_admin)
alert("관리자의 회원정보는 관리자 화면에서 수정해 주십시오.", $g4[path]);
if (!$member[mb_id])
alert("로그인 후 이용하여 주십시오.", $g4[path]);
if ($member[mb_id] != $mb_id)
alert("로그인된 회원과 넘어온 정보가 서로 다릅니다.");
if (!($member[mb_password] == sql_password($_POST[mb_password]) && $_POST[mb_password]))
alert("패스워드가 틀립니다.");
// 수정 후 다시 이 폼으로 돌아오기 위해 임시로 저장해 놓음
set_session("ss_tmp_password", $_POST[mb_password]);
$g4[title] = "회원 정보 수정";
} else
alert("w 값이 제대로 넘어오지 않았습니다.");
// 회원아이콘 경로
$mb_icon = "$g4[path]/data/member/".substr($member[mb_id],0,2)."/$member[mb_id].gif";
$member_skin_path = "$g4[path]/skin/member/$config[cf_member_skin]";
include_once("./_head.php");
include_once("./norobot.inc.php"); // 자동등록방지
include_once("$member_skin_path/register_form.skin.php");
include_once("./_tail.php");
?>
위는 /bbs/register_form.php 파일의 전체 내용입니다.
여기서 제가 수정한 부분은
$maxnum = mysql_query("SELECT max(1000)+1 FROM $g4[member_table] where mb_1=$mb_1");
if(!$maxnum) $maxnum = 1000;
$mb_1 = date("Ymd").$maxnum ;
echo $mb_1 ;
이부분인데 회원가입시에 날짜 + 고유번호 (증가값) 으로 구현을 해야 합니다.
우선 날짜부분은 date(Ymd) 를 이용하여 해결을 하였는데,
고유번호의 증가가 되지 않습니다. 제가 sql 문을 잘못사용하고 있는것인지 머리가 복잡해져서 감을 못잡고 있습니다.
계속 날짜+1000 으로만 출력이 되고 값이 중복이 되더라구요.
아 그리고 모든값은 mb_1 즉 회원가입의 여분필드로 넘어가고 Auto_increment 도 안됩니다.
어떤방법으로 수정을 해야 제대로 출력이 되고 값이 넘어가지는지 조언 부탁드립니다.
댓글 전체


답변 감사합니다.

얘가 뭔가요?? member DB에서 mb_1=$mb_1 인걸 불러다가 젤 큰거에 1을 더하나요???
회원 [member table]에는 mb_no 라는 auto_increment되는 키값이 이미 존재합니다.
게다가 여분필드 mb_1 은 필드타입이 varchar(255) 라 더군다나 auto_increment는 안될겁니다.
원하시는 여분필드에 생성하고자 하는 회원고유번호가
날짜+1000단위의 일련번호라면... 이렇게 해보세요.
$maxnum = sql_fetch(" select mb_no from $member_table order by mb_no desc limit 1 ");
if(!$maxnum) $maxnum=0;
$maxnum = $maxnum[mb_no] + 1 ;
$mb_1 = date("Ymd") . sprintf("%05d", $maxnum) ;
echo $mb_1 ;

많이 배워갑니다 감사합니다 ^^

이것도 얼마전에 다른분한테 얻어들은 거에요. ㅋ
sprintf("%05d", $maxnum) ---> 근데... 오타였네요... %05d는 10000단위.. 1000단위는 %04d 겠네여