회원정보 셀렉트박스 수정시 초기화
본문
그누보드를 뒤지고 뒤져서 겨우 성공한 경험이 많아 늘 도움 받고 있어 감사합니다
회원정보 여분필드 mb_1 ,2,3 사용하여 다중 셀렉트박스로 회사,부서,팀 명으로 사용하고 있습니다
회사, 부서, 팀 명은 g5_part 테이블에서 company , part , team 열로 저장 되어있는 것을
불러와서 각각 g5_member 테이블에 mb_1, mb_2, mb_3 에 입력하고 있구요
여기서 질문! 회원 가입 필드에서 받은 값 3가지가 제대로 입력은 되어 있어
관리자메뉴 - 회원관리로 들어가면 다 확인은 됩니다
관리자가 수정하거나 회원 본인이 수정 할때에는 값을 불러오지 못해 매번 입력해주거나
입력하지 않고 저장 했을시엔 없는 것으로 인식하고 모두 빈 값으로 저장 됩니다.
셀렉트박스는 유지 하면서 입력 되어있는 값이 기본적으로 세팅이 되도록 하고 싶습니다.
어떻게 해결해야 할까요 ㅠ.ㅠ
<?php
//부서 테이블 관련 SQL 쿼리문
$sql = " select * from g5_part ";
$res = sql_query($sql);
for ($i=0; $row = sql_fetch_array($res); $i++) {
$nm[$i] = $row['company'].'|1|'.$row['part'].'|2|'.$row['team'].'|3|';
}
?>
<!---SQL 셀렉트박스 시작 -->
<script type="text/javascript">
function getCataAllId(cmd){
cmd = eval(cmd);
cmd2 = cmd +1;
initCataID(cmd);
var ch = "";
for(var idx = 1; idx < cmd2; idx++){
ch = ch + eval("mb_"+idx+".value") + "|"+idx+"|";
}
var v = 0;
var temp = "";
var tempv = "";
var arg = "";
for(var m = 0; m < menuArr.length; m ++) {
arg = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|")) ;
temp = menuArr[m].substring(0, menuArr[m].indexOf("|"+cmd+"|")+3);
if(temp == ch && tempv != arg ){
v++;
eval("mb_"+cmd2+".length = mb_"+cmd2+".length + 1");
eval("mb_"+cmd2+".options["+v+"].value = arg ");
eval("mb_"+cmd2+".options["+v+"].text = arg ");
}
if(temp != ch){
tempv = "";
}else{
tempv = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|"));
}
}
}
function initCataID(cmd){
cmd = eval(cmd);
if(cmd == 1){
mb_2.length = 1;
mb_3.length = 1;
mb_2.selectedIndex = 0;
mb_3.selectedIndex = 0;
}
if(cmd == 2){
mb_3.length = 1;
mb_3.selectedIndex = 0;
}
}
</script>
<tr>
<th scope="row"><label for="mb_level">회원 권한</label></th>
<td><?php echo get_member_level_select('mb_level', 1, $mb['mb_level'], $mb['mb_level']) ?></td>
<!--<th scope="row">포인트</th>
<td><a href="./point_list.php?sfl=mb_id&stx=<?php echo $mb['mb_id'] ?>" target="_blank"><?php echo number_format($mb['mb_point']) ?></a> 점</td> -->
<th scope="row"><label for="mb_1">회사 구분</label></th>
<td>
<select name = 'mb_1' id='mb_1' OnChange='javascript:getCataAllId(1)' class="select1">
<option value='<?php echo $part['company'] ?>' selected="selected">회사 선택</option>
</select>
</td>
</tr>
<tr>
<th scope="row"><label for="mb_2">부 구분</label></th>
<td>
<select name = 'mb_2' id='mb_2' OnChange='javascript:getCataAllId(2)' class="select2">
<option value='<?php echo $part['part'] ?>' selected="selected">부 선택</option>
</select>
</td>
<th scope="row"><label for="mb_3">팀 구분</label></th>
<td>
<select name = 'mb_3' id='mb_3' OnChange='javascript:getCataAllId(3)' class="select3">
<option value='<?php echo $part['team'] ?>' selected="selected">팀 선택</option>
</select>
</td>
</tr>
<script type="text/javascript">
/* JSON encode, parse */
var stuff = <?php echo json_encode($nm); ?>;
var str = JSON.stringify(stuff);
var menuArr = new Array();
menuArr= JSON.parse(str);
var z1 = 0;
var temp1 = 0;
initCataID(1);
for(var m = 0; m < menuArr.length; m ++) {
if ( menuArr[m].substring(0, menuArr[m].indexOf("|1|")) != temp1 ){
mb_1.length = mb_1.length + 1;
mb_1.options[z1+1].value = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;
mb_1.options[z1+1].text = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;
temp1 = menuArr[m].substring(0, menuArr[m].indexOf("|1|"));
z1++;
}
/* index 1에 중복 제거입니다. */
}
</script>
<!-- SQL 셀렉트박스 끝 -->
답변 2
회사선택 option 위에 아래 소스를 추가해주면 될것 같네요.
<option value='<?php echo $member['mb_1'] ?>' selected="selected"><?php echo $member['mb_1'] ?></option>
부 구분 추가
<option value='<?php echo $member['mb_2'] ?>' selected="selected"><?php echo $member['mb_2'] ?></option>
팀 구분 추가
<option value='<?php echo $member['mb_3'] ?>' selected="selected"><?php echo $member['mb_3'] ?></option>
댓글 남겨주셔서 감사합니다 ^^
일단 임시방편으로 회원이 수정할때에는 건들지 않는이상 원래 그대로 있는걸로 해결이 됐는데요
<option value='<?php echo $member['mb_1'] ?>' selected="selected"><?php echo $member['mb_1'] ? $member['mb_1'] : '회사 선택' ?></option>
의 방법으로 새로 회원가입 할 때에 없는것도 해결 했습니다 그런데,
관리자 메뉴에서 다른 회원을 수정할 때에는 회원 본인의 값이 들어와 지지 않습니다
a라는 회원이 있을 때 관리자가 a의 회원 정보를 수정하기 위해 들어가면
a의 정보가 들어오는게 아닌 관리자의 회사,부서,팀 정보가 들어오게 됩니다.
+ 추가로,
이런식으로 표시가 되고 있는데
회원이 정보수정을 할때에 기존 값과 같은 값은 하나만 나오게 할 수 있을까요?
!-->