테스트 사이트 - 개발 중인 베타 버전입니다

셀렉트 박스 중복 값 채택완료

더루차 3년 전 조회 2,731

어제 셀렉트 박스 현재값 표시 질문했었는데

https://sir.kr/qa/471889?&vpage=1#answer_471896">그누보드 QA - 회원정보 셀렉트박스 수정시 초기화 (sir.kr)

Eyekiss님의 도움으로 표시까지는 해결했었습니다.

 

이제 문제가 현재값이랑 테이블의 있는값 두개가 모두 표시 된다는 겁니다

이런식으로 생산부인 회원의 g5_member테이블의 mb_1 값과

g5_part 테이블의 part 값 모두가 표시되고 있습니다

중복 되는건 하나만 표시되도록 하고 싶은데

if문 사용하여 패스하는 방법으로 하면 될것 같은데 

문제는 g5_part 테이블 에서 값을 불러오는 것과 

어디에서 셀렉트박스에 반복문으로 option값을 넣어주는지 모르겠습니다..

 

요약하자면)

1. g5_part 테이블 에서 값을 불러오는 방법

2. 어디에서 셀렉트박스에 반복문으로 option값을 넣어주는지

3. if 문으로 패스 시키는 방법?

도와주시면 진짜 진짜 감사하겠습니다 ㅠㅠ

아래는 어제 질문으로 수정 한 코드 전문 입니다.

</p>

<p><? php //부서 테이블 관련 SQL 쿼리문</p>

<p>$sql = " select * from g5_part ";</p>

<p>$res = sql_query($sql);</p>

<p>for ($i=0; $row = sql_fetch_array($res); $i++) {</p>

<p>      $nm[$i] = $row['company'].'|1|'.$row['part'].'|2|'.$row['team'].'|3|';</p>

<p>} ?></p>

<p><!---SQL 셀렉트박스 시작 --></p>

<p> </p>

<p>                <script type="text/javascript"></p>

<p>                function getCataAllId(cmd){</p>

<p>                cmd = eval(cmd);</p>

<p>                cmd2 = cmd +1;</p>

<p>                initCataID(cmd);</p>

<p>                var ch = "";</p>

<p>                for(var idx = 1; idx < cmd2; idx++){</p>

<p>                    ch = ch + eval("mb_"+idx+".value") + "|"+idx+"|";</p>

<p>                }</p>

<p>                var v = 0;</p>

<p>                var temp = "";</p>

<p>                var tempv = "";</p>

<p>                var arg = "";</p>

<p>                for(var m = 0; m < menuArr.length; m ++) {</p>

<p>                    arg = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|")) ;</p>

<p>                    temp = menuArr[m].substring(0, menuArr[m].indexOf("|"+cmd+"|")+3);</p>

<p>                    if(temp == ch && tempv != arg ){</p>

<p>                            v++;</p>

<p>                            eval("mb_"+cmd2+".length = mb_"+cmd2+".length + 1");</p>

<p>                            eval("mb_"+cmd2+".options["+v+"].value = arg ");</p>

<p>                            eval("mb_"+cmd2+".options["+v+"].text  = arg ");</p>

<p>                    }</p>

<p>                    if(temp != ch){</p>

<p>                        tempv = "";</p>

<p>                    }else{</p>

<p>                        tempv = menuArr[m].substring(menuArr[m].indexOf("|"+cmd+"|")+3,menuArr[m].indexOf("|"+cmd2+"|"));</p>

<p>                    }</p>

<p>                }</p>

<p>                }</p>

<p>               </p>

<p>                function initCataID(cmd){</p>

<p>                cmd = eval(cmd);</p>

<p>                if(cmd == 1){</p>

<p>                    mb_2.length = 1;</p>

<p>                    mb_3.length = 1;</p>

<p>                    mb_2.selectedIndex = 0;</p>

<p>                    mb_3.selectedIndex = 0;</p>

<p>                }</p>

<p>                if(cmd == 2){</p>

<p>                    mb_3.length = 1;</p>

<p>                    mb_3.selectedIndex = 0;</p>

<p>                }</p>

<p>                }</p>

<p>

 </p>

<p>                </script></p>

<p>                <tr></p>

<p>                    <th scope="row"><label for="mb_level">회원 권한</label></th></p>

<p>                    <td><?php echo get_member_level_select('mb_level', 1, $mb['mb_level'], $mb['mb_level']) ?></td></p>

<p>                    <!--<th scope="row">포인트</th></p>

<p>                    <td><a href="./point_list.php?sfl=mb_id&amp;stx=<?php echo $mb['mb_id'] ?>" target="_blank"><?php echo number_format($mb['mb_point']) ?></a> 점</td> --></p>

<p>                    <th scope="row"><label for="mb_1">회사 구분</label></th></p>

<p>                    <td></p>

<p>                        <select name = 'mb_1' id='mb_1' OnChange='javascript:getCataAllId(1)' class="select1"></p>

<p>                        <option value='<?php echo $mb['mb_1'] ?>' selected="selected"><?php echo $mb['mb_1'] ?  $mb['mb_1'] : '회사 선택'  ?></option></p>

<p>                        </select></p>

<p>                    </td></p>

<p>                </tr></p>

<p>                <tr></p>

<p>                    <th scope="row"><label for="mb_2">부 구분</label></th></p>

<p>                    <td></p>

<p>                        <select name = 'mb_2' id='mb_2' OnChange='javascript:getCataAllId(2)' class="select2"></p>

<p>                        <option value='<?php echo $mb['mb_2'] ?>' selected="selected"><?php echo $mb['mb_2'] ?  $mb['mb_2'] : '부서 선택'  ?></option></p>

<p>                        </select></p>

<p>                    </td></p>

<p>                    <th scope="row"><label for="mb_3">팀 구분</label></th></p>

<p>                    <td></p>

<p>                        <select name = 'mb_3' id='mb_3' OnChange='javascript:getCataAllId(3)' class="select3"></p>

<p>                        <option value='<?php echo $mb['mb_3'] ?>' selected="selected"><?php echo $mb['mb_3'] ?  $mb['mb_3'] : '팀 선택'  ?></option></p>

<p>                        </select></p>

<p>                    </td></p>

<p>                </tr></p>

<p>                <script type="text/javascript"></p>

<p>                /* JSON encode, parse  */</p>

<p>                var stuff = <?php echo json_encode($nm); ?>;</p>

<p>                var str = JSON.stringify(stuff);</p>

<p>                var menuArr = new Array();</p>

<p>                    menuArr= JSON.parse(str);</p>

<p>                var z1 = 0;</p>

<p>                var temp1 = 0;</p>

<p>                initCataID(1);</p>

<p>                for(var m = 0; m < menuArr.length; m ++) {</p>

<p>                    if ( menuArr[m].substring(0, menuArr[m].indexOf("|1|")) != temp1 ){</p>

<p>                        mb_1.length =  mb_1.length + 1;</p>

<p>                        mb_1.options[z1+1].value = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;</p>

<p>                        mb_1.options[z1+1].text = menuArr[m].substring(0, menuArr[m].indexOf("|1|")) ;</p>

<p>                        temp1 = menuArr[m].substring(0, menuArr[m].indexOf("|1|"));</p>

<p>                        z1++;</p>

<p>                    }</p>

<p>                    /*  index 1에 중복 제거입니다.  */</p>

<p>                }</p>

<p>                </script></p>

<p> </p>

<p>                <!-- SQL 셀렉트박스 끝 --></p>

<p>

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

자바스크립트가 제겐 너무 난해하네요.

https://www.youtube.com/watch?v=5X0jNVjwuzc&ab_channel=CodexWorld

https://infotuts.com/cascaded-dropdown-jquery-ajax-php/

ajax 방식도 한번 검토해 보세요.

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

더루차
3년 전
댓글 감사합니다 참고해 볼게요

댓글을 작성하려면 로그인이 필요합니다.

e
3년 전

스크립트를 분석해서 중간에 $mb['mb_1'] 값이 없으면 추가해주는 구문을 넣어줘야하는데..

더 중요한건 eval 함수를 사용하면 안됩니다.

ajax 로 다시 만드는게 더 쉬울 것 같네요.

 

https://velog.io/@modolee/javascript-eval-is-evil

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

더루차
3년 전
아 그런 취약점이 있었네요.. 저도 그누 에서 긁어온거라
다른 방식도 검토 해보겠습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인