게시판목록에서 체크박스를 이용한 wr_1값 다중검색

게시판목록에서 체크박스를 이용한 wr_1값 다중검색

QA

게시판목록에서 체크박스를 이용한 wr_1값 다중검색

본문

최대한 정돈해서 질문올려봅니다.

 

시도중인것은 게시판의 목록페이지에서 체크박스를 체크해서 값이 있는 게시물들만 정렬하려고 합니다.

현재 어느정도 되는데 다중체크시 안되고 있어서 질문드려봅니다.

 

wr_1에 값들은 '지역명'들이 아래처럼 분할저장됩니다.

서울특별시,경기도,인천광역시,강원도,충청북도,충청남도,대전광역시,세종특별자치시,광주광역시,전라북도,전라남도,경상북도,경상남도,대구광역시,부산광역시,울산광역시,제주특별자치도

 

아래는 현재 사용중인 코드입니다.


<!---다중검색/-->
<?php echo include_once("/theme/basic/skin/board/free/lib/skin.lib.php"); ?> // [팁자료]  https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색
<style>
h3.multi_tit{font-size:110%; padding:20px 0 15px 0; font-weight:800;}
</style>
 
<div class="board_search">
    <form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
        <input type="hidden" name="bo_table" value="company_list">
        <input type="hidden" name="sca"      value="<?=$sca?>">
        
        <h3 class="multi_tit">지역</h3>
       
        <input type="checkbox" name="wr_1" value='서울특별시'> 서울특별시 
        <input type="checkbox" name="wr_1" value='경기도'> 경기도
        <input type="checkbox" name="wr_1" value='인천광역시'> 인천광역시
        <input type="checkbox" name="wr_1" value='강원도'> 강원도
        <input type="checkbox" name="wr_1" value='충청북도'> 충청북도
        <input type="checkbox" name="wr_1" value='충청남도'> 충청남도
        <input type="checkbox" name="wr_1" value='대전광역시'> 대전광역시
        <input type="checkbox" name="wr_1" value='세종특별자치시'> 세종특별자치시
        <input type="checkbox" name="wr_1" value='광주광역시'> 광주광역시
        <input type="checkbox" name="wr_1" value='전라북도'> 전라북도
        <input type="checkbox" name="wr_1" value='전라남도'> 전라남도
        <input type="checkbox" name="wr_1" value='경상북도'> 경상북도
        <input type="checkbox" name="wr_1" value='경상남도'> 경상남도
        <input type="checkbox" name="wr_1" value='대구광역시'> 대구광역시
        <input type="checkbox" name="wr_1" value='부산광역시'> 부산광역시
        <input type="checkbox" name="wr_1" value='울산광역시'> 울산광역시
        <input type="checkbox" name="wr_1" value='제주특별자치도'> 제주특별자치도
        
        <select name="sfl" class="hidden">
            <option value="wr_subject">제목</option>
            <option value="wr_content">내용</option>
            <option value="wr_subject||wr_content">제목+내용</option>
            <option value="mb_id,1">회원아이디</option>
            <option value="mb_id,0">회원아이디(코)</option>
            <option value="wr_name,1">글쓴이</option>
            <option value="wr_name,0">글쓴이(코)</option>
        </select>
        <input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' style="display:none;">
        <!--<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">-->
        <input type="submit" value="검색" class="btn_submit" style="padding:10px 20px; background:#fff; color:#5cad04; border:1px solid #5cad04;">
        <input type="radio" name="sop" value="and" style="display:none;">
        <input type="radio" name="sop" value="or"  style="display:none;">
    </form>
</div>
<!--/다중검색-->

문제는

체크박스를 하나만 선택하면 잘 검색되는데

두개이상 검색하면 아예 안됩니다. 

 

wr_1[]로 해보라고 하는 팁들도 모두 보고 아래처럼 해봤는데



<input type="checkbox" name="wr_1[]" value='서울특별시'> 서울특별시 
        <input type="checkbox" name="wr_1[]" value='경기도'> 경기도
        <input type="checkbox" name="wr_1[]" value='인천광역시'> 인천광역시
        <input type="checkbox" name="wr_1[]" value='강원도'> 강원도
        <input type="checkbox" name="wr_1[]" value='충청북도'> 충청북도
        <input type="checkbox" name="wr_1[]" value='충청남도'> 충청남도
        <input type="checkbox" name="wr_1[]" value='대전광역시'> 대전광역시
        <input type="checkbox" name="wr_1[]" value='세종특별자치시'> 세종특별자치시
        <input type="checkbox" name="wr_1[]" value='광주광역시'> 광주광역시
        <input type="checkbox" name="wr_1[]" value='전라북도'> 전라북도
        <input type="checkbox" name="wr_1[]" value='전라남도'> 전라남도
        <input type="checkbox" name="wr_1[]" value='경상북도'> 경상북도
        <input type="checkbox" name="wr_1[]" value='경상남도'> 경상남도
        <input type="checkbox" name="wr_1[]" value='대구광역시'> 대구광역시
        <input type="checkbox" name="wr_1[]" value='부산광역시'> 부산광역시
        <input type="checkbox" name="wr_1[]" value='울산광역시'> 울산광역시
        <input type="checkbox" name="wr_1[]" value='제주특별자치도'> 제주특별자치도
        
        
                    <?
                    if(is_array($_GET[wr_1])){
                     $str_wr_1 = implode(",",$_GET[wr_1]);
                    }
                    ?>
                     <script>
                        var str_wr_1 = "<?=$str_wr_1?>";
                        $("input:checkbox[name='wr_1[]']").each(function(index){
                         if(str_wr_1.indexOf($(this).val()) > -1){
                            $(this).attr("checked", true);
                         }
                        });
                     </script>

이렇게하면 문제가

주소창에 주소가 ...&sca=&wr_1%5B%5D=서울특별시&sfl=wr_subject&stx=

이런식으로 

%5B%5D 가 생기고 검색이 안되더라구요. 역시 다중체크시에 안되구요.

 

어디가 문제일까요???

도움 좀 부탁드립니다. ^^

 

 

이 질문에 댓글 쓰기 :

답변 2

제이쿼리로 check 박스에 넣은 값을 stx input으로 넘겨주면 되지 않을까요?

그누보드5의 다중검색은 sop값이 or이고 검색어들은 스페이스(공백)으로 구분합니다.

이를 활용해서 제이쿼리를 이용하면 될것 같습니다.

 

1. 아래건 지워주세요.

<?php echo include_once("/theme/basic/skin/board/free/lib/skin.lib.php"); ?> 
// [팁자료]  https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색

 

2. 지역 체크박스를 form 바깥으로 꺼내주시고 class wr_1 을 다 추가하시고 name을 wr_1[]로 변경하세요.


        <input type="checkbox" name="wr_1[]" value='서울특별시' class='wr_1'> 서울특별시 
        <input type="checkbox" name="wr_1" value='경기도'> 경기도
        <input type="checkbox" name="wr_1" value='인천광역시'> 인천광역시
        <input type="checkbox" name="wr_1" value='강원도'> 강원도
        <input type="checkbox" name="wr_1" value='충청북도'> 충청북도
        <input type="checkbox" name="wr_1" value='충청남도'> 충청남도
        <input type="checkbox" name="wr_1" value='대전광역시'> 대전광역시
        <input type="checkbox" name="wr_1" value='세종특별자치시'> 세종특별자치시
        <input type="checkbox" name="wr_1" value='광주광역시'> 광주광역시
        <input type="checkbox" name="wr_1" value='전라북도'> 전라북도
        <input type="checkbox" name="wr_1" value='전라남도'> 전라남도
        <input type="checkbox" name="wr_1" value='경상북도'> 경상북도
        <input type="checkbox" name="wr_1" value='경상남도'> 경상남도
        <input type="checkbox" name="wr_1" value='대구광역시'> 대구광역시
        <input type="checkbox" name="wr_1" value='부산광역시'> 부산광역시
        <input type="checkbox" name="wr_1" value='울산광역시'> 울산광역시
        <input type="checkbox" name="wr_1" value='제주특별자치도'> 제주특별자치도


3. 셀렉트는 클래스가 히든인데 감춰져있는거겠죠? 그러면 셀렉트를 지우시고 sfl 값을 wr_1로 고정하세요. 그리고 sop도 or로 바꿔야합니다.

        <input type="radio" name="sop" value="and" style="display:none;">
        <input type="radio" name="sop" value="or"  style="display:none;">
이거 지우시고

  <input type="hidden" name="sop" value="or">
  <input type="hidden" name="sfl" value="wr_1">
4. 아래 제이쿼리를 추가한다음 체크박스를 체크하고 검색을 해보세요.

<script>
$(document).ready(function(){

    $(".wr_1").change(function(){
            $(".wr_1").prop("checked"); {                
            var chk = $("input[name='wr_1[]']:checked").map(function() {
                return $(this).val();
            }).get().join(" ");
            $('input[name=stx]').attr('value',chk);
        }
    });
});

</script>


 

네~ 제가 해보았을때는 잘되네요.
확인해보시고 추가로 응용하자면 결과가 나왔을때 해당 결과의 체크박스에 체크가 되있게 하실려면

        <input type="checkbox" name="wr_1[]" class="wr_1" value='서울특별시' <?php if(strpos($_GET['stx'], "서울특별시") !== false) echo 'checked'; ?>> 서울특별시
        <input type="checkbox" name="wr_1[]" class="wr_1" value='인천광역시' <?php if(strpos($_GET['stx'], "인천광역시") !== false) echo 'checked'; ?>> 인천광역시

이런식으로 응용하시는것도 좋을것 같네요.

감사합니다. 다만 3개체크시 부터 '빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.' 라고 경고창뜨는데 이것은 그냥 놔두는편이 나을까요? 어떤 검색 처리속도면에서요??

말씀하신 메세지는 head.php에서
      function fsearchbox_submit(f)
                {
에서 뿌려줍니다.

그런데 function fsearchbox_submit(f)가 그누보드 최신버전에서는 전체검색에 사용하는건데
올리신 코드에는
 <form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
이걸로 되어있네요. 이건 전체검색에서 사용하는 폼이거든요.

그누보드 최신의 게시판 스킨의 기본은
<form name="fsearch" method="get">
이걸로 되어있습니다. 이내용을 바탕으로  bbs/list.php에서 검색을 처리하거든요.
한번 확인해보셔야 할것 같습니다.

역시 그부분이네요. 덕분에 해결했습니다.^^
이것을 메인화면에서도 작동하게 하려고 옮겼는데
이때 form은
<form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
게시판을 찾아가서 결과가 보여지잖아요.
근데 이때 다시 메인화면에서 두개이상 선택을 못하네요. 흠...
일단 전체검색을 없애버리니까 작동하긴 하네요. 비슷한 상황의 분들이 참고하시길...

전체검색과 게시판 검색의 stx 인풋의 name이 같아서 그럴수도 있을것 같아요.

$('input[name=stx]').attr('value',chk); 이걸

$('input[class=search_input]').attr('value',chk);

이렇게 바꾸시고


stx 인풋에  class="search_input" 를 추가해주면 전체검색에는 값이 추가가 안될겁니다.

 <input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' style="display:none;" class="search_input">

추가댓글 써주신거 오늘 봤네요^^ 전체검색과 중복 안되게 하는 부분까지 세심하게 잡아주셔서 감사드립니다.^^
님의 가르침으로 검색이 조금씩 되가고 있습니다. 아래것만 해결하면 소원이 없겠네요 ^^
https://sir.kr/qa/322639?sfl=mb_id%2C1&lstx=route7

안녕하세요 아는선에서만 답을 드리면 

 

현 소스로 봐서 리스트를 만들때 

쿼리문이 where wr_1 =서울특별시 and wr_1 =부산광영식 식이거나

또는 체크값중 맨 밑에 있는 wr_1만 검색을 하거나 할겁니다...

 

서울도 찾고 부산도 값을 찾아야 되면

where (wr_1 = 서울특별시 or wr_1 =부산광역시) 형태로 나오겠금 쿼리가 만들어져야 하겠죠

 

get 으로 다중검색을 할때 하나의 값으로 or 처리하는 법은 저도모르겠습니다.

 

저 같은경우는 wr_1_1 로 wr_1_2 wr_1_3 형태로 해서 list쪽에서 wr_1로 모은후에

값 유무에 따라 쿼리를 완성할것 같습니다..

 

 

답변을 작성하시기 전에 로그인 해주세요.
전체 6
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT