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

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

망이망소이 6년 전 조회 7,328

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

 

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

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

 

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

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

 

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

</p>

<p><!---다중검색/--></p>

<p><?php echo include_once("/theme/basic/skin/board/free/lib/skin.lib.php"); ?> // [팁자료]  <a href="<a href="https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=%EB%8B%A4%EC%A4%91%EA%B2%80%EC%83%89" target="_blank" rel="noopener noreferrer">https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=%EB%8B%A4%EC%A4%91%EA%B2%80%EC%83%89</a>"><a href="https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색" target="_blank" rel="noopener noreferrer">https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색</a></a></p>

<p><style></p>

<p>h3.multi_tit{font-size:110%; padding:20px 0 15px 0; font-weight:800;}</p>

<p></style></p>

<p> </p>

<p><div class="board_search"></p>

<p>    <form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);"></p>

<p>        <input type="hidden" name="bo_table" value="company_list"></p>

<p>        <input type="hidden" name="sca"      value="<?=$sca?>"></p>

<p>        </p>

<p>        <h3 class="multi_tit">지역</h3></p>

<p>       </p>

<p>        <input type="checkbox" name="wr_1" value='서울특별시'> 서울특별시 </p>

<p>        <input type="checkbox" name="wr_1" value='경기도'> 경기도</p>

<p>        <input type="checkbox" name="wr_1" value='인천광역시'> 인천광역시</p>

<p>        <input type="checkbox" name="wr_1" value='강원도'> 강원도</p>

<p>        <input type="checkbox" name="wr_1" value='충청북도'> 충청북도</p>

<p>        <input type="checkbox" name="wr_1" value='충청남도'> 충청남도</p>

<p>        <input type="checkbox" name="wr_1" value='대전광역시'> 대전광역시</p>

<p>        <input type="checkbox" name="wr_1" value='세종특별자치시'> 세종특별자치시</p>

<p>        <input type="checkbox" name="wr_1" value='광주광역시'> 광주광역시</p>

<p>        <input type="checkbox" name="wr_1" value='전라북도'> 전라북도</p>

<p>        <input type="checkbox" name="wr_1" value='전라남도'> 전라남도</p>

<p>        <input type="checkbox" name="wr_1" value='경상북도'> 경상북도</p>

<p>        <input type="checkbox" name="wr_1" value='경상남도'> 경상남도</p>

<p>        <input type="checkbox" name="wr_1" value='대구광역시'> 대구광역시</p>

<p>        <input type="checkbox" name="wr_1" value='부산광역시'> 부산광역시</p>

<p>        <input type="checkbox" name="wr_1" value='울산광역시'> 울산광역시</p>

<p>        <input type="checkbox" name="wr_1" value='제주특별자치도'> 제주특별자치도</p>

<p>        </p>

<p>        <select name="sfl" class="hidden"></p>

<p>            <option value="wr_subject">제목</option></p>

<p>            <option value="wr_content">내용</option></p>

<p>            <option value="wr_subject||wr_content">제목+내용</option></p>

<p>            <option value="mb_id,1">회원아이디</option></p>

<p>            <option value="mb_id,0">회원아이디(코)</option></p>

<p>            <option value="wr_name,1">글쓴이</option></p>

<p>            <option value="wr_name,0">글쓴이(코)</option></p>

<p>        </select></p>

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

<p>        <!--<input type="image" src="<?=$board_skin_path?>/img/btn_search.gif" border='0' align="absmiddle">--></p>

<p>        <input type="submit" value="검색" class="btn_submit" style="padding:10px 20px; background:#fff; color:#5cad04; border:1px solid #5cad04;"></p>

<p>        <input type="radio" name="sop" value="and" style="display:none;"></p>

<p>        <input type="radio" name="sop" value="or"  style="display:none;"></p>

<p>    </form></p>

<p></div></p>

<p><!--/다중검색--></p>

<p>

문제는

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

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

 

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

</p>

<pre>
<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></pre>

<p>

이렇게하면 문제가

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

이런식으로 

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

 

어디가 문제일까요???

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

 

 

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

답변 2개

채택된 답변
+20 포인트
Dessi
6년 전

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

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

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

 

1. 아래건 지워주세요.

  // [팁자료]  https://sir.kr/g5_tip/3003?sfl=wr_subject%7C%7Cwr_content&stx=다중검색

 

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

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

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

                  이거 지우시고

      4. 아래 제이쿼리를 추가한다음 체크박스를 체크하고 검색을 해보세요.

 

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

답변에 대한 댓글 7개

망이망소이
6년 전
헐 대박! 너무너무 감사합니다.^^ 복받으실거에요^^
D
Dessi
6년 전
네~ 제가 해보았을때는 잘되네요.
확인해보시고 추가로 응용하자면 결과가 나왔을때 해당 결과의 체크박스에 체크가 되있게 하실려면

<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'; ?>> 인천광역시

이런식으로 응용하시는것도 좋을것 같네요.
망이망소이
6년 전
감사합니다. 다만 3개체크시 부터 '빠른 검색을 위하여 검색어에 공백은 한개만 입력할 수 있습니다.' 라고 경고창뜨는데 이것은 그냥 놔두는편이 나을까요? 어떤 검색 처리속도면에서요??
D
Dessi
6년 전
말씀하신 메세지는 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에서 검색을 처리하거든요.
한번 확인해보셔야 할것 같습니다.
망이망소이
6년 전
역시 그부분이네요. 덕분에 해결했습니다.^^
이것을 메인화면에서도 작동하게 하려고 옮겼는데
이때 form은
<form name="fsearch" method="get" action="<?php echo G5_BBS_URL ?>/board.php" onsubmit="return fsearchbox_submit(this);">
게시판을 찾아가서 결과가 보여지잖아요.
근데 이때 다시 메인화면에서 두개이상 선택을 못하네요. 흠...
일단 전체검색을 없애버리니까 작동하긴 하네요. 비슷한 상황의 분들이 참고하시길...
D
Dessi
6년 전
전체검색과 게시판 검색의 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">
망이망소이
6년 전
추가댓글 써주신거 오늘 봤네요^^ 전체검색과 중복 안되게 하는 부분까지 세심하게 잡아주셔서 감사드립니다.^^
님의 가르침으로 검색이 조금씩 되가고 있습니다. 아래것만 해결하면 소원이 없겠네요 ^^
https://sir.kr/qa/322639?sfl=mb_id%2C1&lstx=route7

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

ifelse
6년 전

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

 

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

쿼리문이 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로 모은후에

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

 

 

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

답변에 대한 댓글 1개

망이망소이
6년 전
답변 감사합니다.^^

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

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

로그인