회원가입 여분필드 사용시 몇가지 질문드립니다.
본문
아래 소스와 같이 회원가입시
성별, 연령, 관심사항등을 받으려고 합니다.
그런데 문제가 가만보니 이렇게 하면 가입시에는 문제가 안될지 모르겠지만 정보수정시 값을 받아오질 못하는 문제가 있겠더라구여.
radio와 select일때 입력된 정보가 선택되어 있게 보여주려면 어떻게 소스를 수정해야할까요..
그리고 관리자 모드상에서도 같은 방식으로 하면 되는지 알고 싶습니다.
너무 무식한 질문이라 죄송합니다....ㅜㅠ
<tr>
</tr>
<td>
<input type="radio" name=mb_1 value="여성" <?if($write[mb_1]=="여성")echo"checked";?>>여성
<input type="radio" name=mb_1 value="남성"<?if($write[mb_1]=="남성")echo"checked";?>>남성
</td>
</tr>
<tr>
<th scope="row"><label for="reg_mb_name">연령<strong class="sound_only">선택사항</strong></label></th>
<td>
<select name='mb_2' required itemname="연령" class="frm_input frm_address">
<option value=''>선택하세요</option>
<option value='10대' <? if($write[mb_2] == '10대') echo " selected "; ?>>10대</option>
<option value='20대' <? if($write[mb_2] == '20대') echo " selected "; ?>>20대</option>
<option value='30대' <? if($write[mb_2] == '30대') echo " selected "; ?>>30대</option>
<option value='40대' <? if($write[mb_2] == '40대') echo " selected "; ?>>40대</option>
<option value='50대' <? if($write[mb_2] == '50대') echo " selected "; ?>>50대</option>
<option value='60대' <? if($write[mb_2] == '60대') echo " selected "; ?>>60대</option>
<option value='70대' <? if($write[mb_2] == '70대') echo " selected "; ?>>70대</option>
<option value='기타' <? if($write[mb_2] == '기타') echo " selected "; ?>>기타</option>
</select>
</td>
</tr>
<tr>
<th scope="row"><label for="reg_mb_name">관심정보<strong class="sound_only">선택사항</strong></label></th>
<td><span class="frm_info">
선택하신 관심정보에 해당되는 정보를 어플을 통해 받으실 수 있습니다.
</span>
<input type=checkbox name=mb_3 value="1" <?=$write[mb_3]?>>1
<input type=checkbox name=mb_3 value="1" <?=$write[mb_3]?>>2
<input type=checkbox name=mb_3 value="1" <?=$write[mb_3]?>>3
<input type=checkbox name=mb_3 value="1" <?=$write[mb_3]?>>4
</td>
</tr>
답변 3
아.. 그렇군요. 원본을 본게 아니라 제가 수정해놓은걸 보면서 답변했더니 이런 실수를..
하는김에 좀 더 수정해보죠.
bbs/register_form_update.php 43라인 이후, 그러니까 아래 코드를 찾으시구요
$key = get_session("captcha_keystring");
if (!($key && $key == $_POST[wr_key])) {
unset($_SESSION['captcha_keystring']);
alert("정상적인 접근이 아닌것 같습니다.");
}
이거 아랫줄에 다음줄을 추가해줍니다.
@include_once ("$g4[path]/skin/member/$config[cf_member_skin]/register_update.head.skin.php");
그런다음 스킨폴더의 register_update.head.skin.php 파일을 새로 만들어줍니다.
<?
if (!defined("_GNUBOARD_")) exit; // 개별 페이지 접근 불가
// 자신만의 코드를 넣어주세요.
$mb_3 = $_POST['mb_3'] = implode(',', $_POST['mb_3']);
?>
그리고 register_form.skin.php 상단에는 넣으라던건 취소합니다. 추가했던 코드가 있으면 지워주세요.
그리고 mb_3 input 태그 부분은 다음으로 바꿔줍니다.
<?
$mb_3 = explode(',', $member['mb_3']);
for($i=1; $i<=4; $i++) {
echo '<input type="checkbox" name="mb_3[]" value="'.$i.'" '.( in_array($i, $mb_3) ? 'checked' : '').' >1 '.PHP_EOL;
}
?>
<?=$write[mb_1]?>
write 가 아니라...
$member로 사용하셔야 합니다.
성별 연령은 $member로 하신다면 잘 나와야 할텐데..
가입후 여분필드가 제대로 저장됐는지 확인을 위해 db의 내용을 직접 확인해보시는게 좋겠네요.
그리고 관심정보에서는..
name="mb_3" 이걸 mb_3[] 이걸로 바꾸고 value="1" 이 값을 1~4로 넣고
register_form_update.head.skin.php 에서 $mb_3 = $_POST['mb_3'] = implode(',', $_POST['mb_3']); 이런식으로 배열로 들어온 값을 합쳐주시고
다시 register_form.skin.php 상단에서 $member['mb_3'] = ','.$member['mb_3'].','; 처리로 앞뒤에 컴마를 넣어주시고,
관심정보 input 부분에 <? if(strstr(',1,', $member['mb_3'])) echo 'checked'; ?> 로 넣어주시면 선택버튼들도 될듯해요. (strstr의 ',1,' 여기도 1~4까지 들어가야겠죠)