중국에서 사용하려는 페이지 인데요.
그누 회원가입 주소를 다음 디비에서 받는데요.
중국 주소는 그것을 수정해야 해서요.
데이터는 js/distpicker.js
받아서 입력시키려고 합니다.
동냥 얻어 짜집기로 해 보는데 안되네요.
아래 좀 봐주세요.
어디를 수정해야 하는지요.
<?php if ($config['cf_use_addr']) { ?>
<tr>
<th scope="row">
<?php echo _t('주소'); ?>
<?php if ($config['cf_req_addr']) { ?><strong class="sound_only"><?php echo _t('필수'); ?></strong><?php } ?>
</th>
<?
$wr_addr1 = explode(" ",$write['mb_addr1']);
$addr11 = $mb_addr1[0];
$addr12 = $mb_addr1[1];
$addr13 = $mb_addr1[2];
?>
<td>
<form class="form-inline mt-2 mb-4">
<div data-toggle="distpicker">
<select name="addr11" id="addr11" class="input_addr1"></select>
<select name="addr12" id="addr12" class="input_addr1"></select>
<select name="addr13" id="addr13" class="input_addr1"></select>
</div>
</form>
<label for="reg_mb_addr1"><?php echo $config['cf_req_addr']?'<strong class="sound_only"> 必选项</strong>':''; ?></label>
<input type="text" name="mb_addr2" value="<?php echo $member['mb_addr2'] ?>" id="reg_mb_addr2" class="frm_input frm_address" size="50">
<label for="reg_mb_addr2">详细地址</label>
<br>
<input type="text" name="mb_addr3" value="<?php echo $member['mb_addr3'] ?>" id="reg_mb_addr3" class="frm_input frm_address" size="50" readonly="readonly">
<label for="reg_mb_addr3">参考备注</label>
<input type="hidden" name="mb_addr_jibeon" value="<?php echo $member['mb_addr_jibeon']; ?>">
</td>
</tr>
<?php } ?>
답변 4개 / 댓글 3개
쪽지로 간단하나마 대화를 해주셨기에 조금 작업을 해 봤습니다.
회원 가입시 주소가 mb_addr1 에 입력됩니다.
회원 정보 수정시에 셀렉트 박스에 값이 나오도록 하는건 작업하지 않았습니다.
회원 정보 수정시, 주소를 바꾸면 수정된 주소로 DBdp 저장됩니다.
A. 먼저 /bbs/register_form_update.php 파일을 열어.
수정 1번
<?php
include_once('./_common.php');
include_once(G5_CAPTCHA_PATH.'/captcha.lib.php');
include_once(G5_LIB_PATH.'/register.lib.php');
include_once(G5_LIB_PATH.'/mailer.lib.php');
include_once(G5_LIB_PATH.'/thumbnail.lib.php');
이 아래에
$mb_addr1 = $_POST['addr11']." ".$_POST['addr12']." ".$_POST['addr13'];
추가.
수정 2번
45~50 번째줄에 있는
$mb_addr1 = isset($_POST['mb_addr1']) ? trim($_POST['mb_addr1']) : "";
이 줄을 아래 내용으로 교체
//$mb_addr1 = isset($_POST['mb_addr1']) ? trim($_POST['mb_addr1']) : "";
$mb_addr1 = $mb_addr1;
수정 3번 (회원가입시 "올바른 방법으로 .. " 하는 에러가 나올경우.)
120번째 줄 쯤 있는 아래 내용을
if ($w=='') {
if ($msg = exist_mb_id($mb_id)) alert($msg);
if (get_session('ss_check_mb_id') != $mb_id || get_session('ss_check_mb_nick') != $mb_nick || get_session('ss_check_mb_email') != $mb_email) {
set_session('ss_check_mb_id', '');
set_session('ss_check_mb_nick', '');
set_session('ss_check_mb_email', '');
alert('올바른 방법으로 이용해 주십시오.');
}
이렇게 교체
(이경우, 닉네임 세션값이 정확하게 담기지 않아 생기는 오류메세지를 막는 것이니, 나중에 확인하여 수정하여야 합니다.)
if ($w=='') {
if ($msg = exist_mb_id($mb_id)) alert($msg);
if (get_session('ss_check_mb_id') != $mb_id || get_session('ss_check_mb_email') != $mb_email) {
set_session('ss_check_mb_id', '');
set_session('ss_check_mb_email', '');
alert('올바른 방법으로 이용해 주십시오.');
}
B.사용중인 member skin 폴더에서. register_form.skin.php 수정
140번째 줄 근처에 있는 ...
<label for="reg_mb_zip" class="sound_only">우편번호<?php echo $config['cf_req_addr']?'<strong class="sound_only"> 필수</strong>':''; ?></label>
<input type="text" name="mb_zip" value="<?php echo $member['mb_zip1'].$member['mb_zip2']; ?>" id="reg_mb_zip" <?php echo $config['cf_req_addr']?"required":""; ?> class="frm_input <?php echo $config['cf_req_addr']?"required":""; ?>" size="5" maxlength="6" placeholder="우편번호">
<button type="button" class="btn_frmline" onclick="win_zip('fregisterform', 'mb_zip', 'mb_addr1', 'mb_addr2', 'mb_addr3', 'mb_addr_jibeon');">주소 검색</button><br>
<input type="text" name="mb_addr1" value="<?php echo get_text($member['mb_addr1']) ?>" id="reg_mb_addr1" <?php echo $config['cf_req_addr']?"required":""; ?> class="frm_input frm_address full_input <?php echo $config['cf_req_addr']?"required":""; ?>" size="50" placeholder="기본주소">
<label for="reg_mb_addr1" class="sound_only">기본주소<?php echo $config['cf_req_addr']?'<strong> 필수</strong>':''; ?></label><br>
<input type="text" name="mb_addr2" value="<?php echo get_text($member['mb_addr2']) ?>" id="reg_mb_addr2" class="frm_input frm_address full_input" size="50" placeholder="상세주소">
<label for="reg_mb_addr2" class="sound_only">상세주소</label>
<br>
<input type="text" name="mb_addr3" value="<?php echo get_text($member['mb_addr3']) ?>" id="reg_mb_addr3" class="frm_input frm_address full_input" size="50" readonly="readonly" placeholder="참고항목">
<label for="reg_mb_addr3" class="sound_only">참고항목</label>
<input type="hidden" name="mb_addr_jibeon" value="<?php echo get_text($member['mb_addr_jibeon']); ?>">
이 내용 을 다음과 같이 교체.
주소 입력<br>
<div data-toggle="distpicker">
<select class="form-control" name="addr11"></select>
<select class="form-control" name="addr12"></select>
<select class="form-control" name="addr13"></select>
<?
if($w == 'u'){ echo "회원가입시 등록된 주소 : ". $member['mb_addr1']; }
?>
<label for="reg_mb_addr1"><?php echo $config['cf_req_addr']?'<strong class="sound_only">필수</strong>':''; ?></label>
<input type="text" name="mb_addr2" value="<?php echo get_text($member['mb_addr2']) ?>" id="reg_mb_addr2" class="frm_input frm_address" size="50" placeholder="상세주소">
<label for="reg_mb_addr2" class="sound_only">상세주소</label>
<br>
<input type="text" name="mb_addr3" value="<?php echo get_text($member['mb_addr3']) ?>" id="reg_mb_addr3" class="frm_input frm_address" size="50" readonly="readonly">
<label for="reg_mb_addr3" class="sound_only">참고항목</label>
<input type="hidden" name="mb_addr_jibeon" value="<?php echo get_text($member['mb_addr_jibeon']); ?>">
</div>
<script src="http://bbmask.net/js/distpicker.js"></script>
회원 정보 수정 화면을 보시면 아시겠지만,
셀렉트 박스에 기존 정보가 나타나는 부분은 작업하지 않았습니다.
답변에 대한 댓글 1개
지속 관심 감사드리고요.
말씀하신 distpicker.js 너무 양이 많아 올릴 수는 없고요.
http://bbmask.net/js/distpicker.js
다시 한번 도움 말씀 부탁드려 봅니다.
답변에 대한 댓글 1개
올려놓은 소스는 그누보드 기본으로 들어있는 스킨입니다.
작업을 하던 소스(그래야 뭐가 잘못된건지 파악할 수 있지요.)를 원하는 것인데,
기본소스를 그대로 올려놓는건, 무슨 의미입니까..??
최소한 "distpicker.js"정도는 올려 놔야 되는것 아닙니까..??
뭐 인터넷 뒤지면 쉽게 나오는 "distpicker.js"라고는 하지만, 답변하는 사람이 그것까지 일일히 찾아야 할 이유가 있을까요..??
아무튼 아래 내용을 복사, html(UTF-8)로 저장, 작업중인 사이트 루트에 업로드, 확인해 보시고
회원 스킨에 적용하시면 될 듯 합니다.
[code]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<title>짱깨 주소 3단 셀렉트</title>
</head>
<body>
<form class="form-inline mt-2 mb-4">
<div data-toggle="distpicker">
<select class="form-control" name="addr11"></select>
<select class="form-control" name="addr12" ></select>
<select class="form-control" name="addr13" ></select>
</div>
</form>
<!-- Scripts -->
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="./js/distpicker.js"></script>
</body>
</html>
[/code]
전체 소스를 알 수 없어서, 위 내용에서 보이는 부분만 이야기 하자면,
먼저 $write['mb_addr1'] 이것이 회원 가입시 받은 주소가 맞는건가요..
그렇다면, 불러올때는
$wr_addr1 = explode(" ",$write['mb_addr1']); 이 아니라,
$wr_addr1 = explode(" ",$member['mb_addr1']);
이어야 합니다.
두번째로
$wr_addr1 = explode(" ",$write['mb_addr1']);
회원의 주소를 wr_addr1 라는 함수로 나눴으면,
$mb_addr1[n] 이 아니라 $wr_addr[n] 이어야 겠지요. ^^
$addr11 = $mb_addr1[0]; ---> $addr11 = $wr_addr1[0];
$addr12 = $mb_addr1[0]; ---> $addr12 = $wr_addr1[1];
$addr13 = $mb_addr1[0]; ---> $addr13 = $wr_addr1[2];
아래것으로 바꿔 보세요.^^
<?php
$wr_addr1 = explode(" ",$member['mb_addr1']);
$addr11 = $wr_addr1[0];
$addr12 = $wr_addr1[1];
$addr13 = $wr_addr1[2];
?>
답변에 대한 댓글 1개
위 부분만 적용하니 주소가 입력되지 않네요.
하지만 희망이 보여 너무 좋습니다.
아래에 register_form.skin 전체를 올려 드릴께요.
한번 더 살펴 주시면 고맙겠습니다.
답변을 작성하려면 로그인이 필요합니다.
원하는 것을 얻었습니다.
날아 갈 것 같습니다.
다시 한번 감사드립니다.