stx에 여분필드4개의 값을 모두 전달하는 방법

stx에 여분필드4개의 값을 모두 전달하는 방법

QA

SIR 제작의뢰 - 견적무료/익명보정/호스팅, DB 이전/단기개발. 이젠 ' 의뢰인'이 원하는 '제작자'에게만 연락처를 알릴 수 있습니다.

stx에 여분필드4개의 값을 모두 전달하는 방법

본문

메인화면에서 특정게시판을 검색하려고 합니다.

현재상황은 sfl은 wr_1, wr_41, wr_2, wr_3  여분필드이고 여기서 선택된 값을 

name=stx로 보내서 and 검색을 하도록 해놨습니다.

각각의 값들을 하나씩만 검색하면 잘 검색됩니다.

그러나 소스를 보시면 4가지 값 모두 다 값을 선택할 경우

모두 name=stx 로 보내지고 있어서

여러개를 체크하면 맨지막에 지정한 값만 stx에 적용되고 있는 상황입니다. 

 

따라서 하고자 하는것은

여분필드값들을 name=stx로 보내면서 값을 다른이름들로 규정하고 마지막에 

name=stx 폼에 대입하라고  마르스컴퍼니 님께서 아래처럼 힌트를 주셨는데 

제가 많이 부족하여 적용을 못하고 있어서 다시한번

도움 요청드려봅니다. 

 

알려주신 코드

//wr_1[] 라디오 버튼의 선택된 값 추출 
//wr_41[] 라디오 버턴의 선택된 값 추출 
//stx 텍스트박스에 반영 
//으로 하면 될 것 같습니다. 
 
val1 =  $("input[name='wr_1[]']").val(); 
val2 =  $("input[name='wr_41[]']").val(); 
 
$('input[name=stx]').val(val1 + ' ' + val2);

 

 

 

 

wr_1값

<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'; ?>> 경기
        <input type="checkbox" name="wr_1[]" class="wr_1" value='인천' <?php if(strpos($_GET['stx'], "인천") !== false) echo 'checked'; ?>> 인천
 
<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>
 

 

wr_41값

<input type="checkbox" name="wr_41[]" class="wr_41" value='월' <?php if(strpos($_GET['stx'], "월") !== false) echo 'checked'; ?>> 월 
        <input type="checkbox" name="wr_41[]" class="wr_41" value='화' <?php if(strpos($_GET['stx'], "화") !== false) echo 'checked'; ?>> 화
        <input type="checkbox" name="wr_41[]" class="wr_41" value='수' <?php if(strpos($_GET['stx'], "수") !== false) echo 'checked'; ?>> 수
 
<script>
$(document).ready(function(){
 
    $(".wr_41").change(function(){
            $(".wr_41").prop("checked"); {                
            var chk = $("input[name='wr_41[]']:checked").map(function() {
                return $(this).val();
            }).get().join(" ");
            $('input[name=stx]').attr('value',chk);
        }
        
    });
});
 
</script>

 

wr_2값

        <input type="radio" name="wr_2" value='5건'> 5건
        <input type="radio" name="wr_2" value='10건'> 10건
        <input type="radio" name="wr_2" value='15건'> 15건
        <input type="radio" name="wr_2" value='20건'> 20건
        <script>
$(document).ready(function(){
        $('input:radio[name=wr_2]:input[value="<?=$_GET[wr_2]?>"]').attr("checked", true); 
        $("input[name='wr_2']").change(function(){
        $("input[name='stx']").val( $(this).val() );
       });
});
        </script>
 

 

wr_3값

        <input type="radio" name="wr_3" value='100박스'> 100박스
        <input type="radio" name="wr_3" value='200박스'> 200박스
        <input type="radio" name="wr_3" value='300박스'> 300박스
        <input type="radio" name="wr_3" value='400박스'> 400박스
        <input type="radio" name="wr_3" value='500박스'> 500박스
        <script>
$(document).ready(function(){
        $('input:radio[name=wr_3]:input[value="<?=$_GET[wr_3]?>"]').attr("checked", true);
        $("input[name='wr_3']").change(function(){
        $("input[name='stx']").val( $(this).val() );
       });
});
        </script>
 

 

검색버튼 부분

 

        <input name="stx" class="stx" maxlength="15" itemname="검색어" value='<?=stripslashes($stx)?>' >
        <input type="submit" value="검색" class="btn_submit" >
  <input type="hidden" name="sop" value="and">
  <input type="hidden" name="sfl" value="wr_1||wr_41||wr_2||wr_3">
stx
이 글을 내 페이스북 계정으로 보내기 이 글을 내 트위터 계정으로 보내기 이 글을 내 구글플러스 계정으로 보내기

이 질문에 댓글 쓰기 :

답변 1

채택됨

균이님의 답변

체크한 값들을 합쳐서 여러개의 여분필드에서 검색하고 싶다는거죠?

저렇게 검색할 필드가 많은 경우에는 검색할 필드명 따로 검색어 따로 넘겨서

bbs/list.php에서 코드를 별도로 만들어야 정상적인 프로그래밍이 될 것입니다

---------------------

그누보드 소스코드를 변경하지않고 그대로 사용하도록 만드는 것은 별로 좋은 코드가 아닙니다만

하여튼 아래처럼 하세요

sfl도 무조건 wr_1||wr_41||wr_2||wr_3 <--이것처럼 고정할 것이 아니라

체크된 필드만 검색할 필드로 만들어주면 그나마 조금 위안이(?) 됩니다. ㅎ

체크박스 하나 라디오 하나만 검색어와 검색필드 만드는 코드를 만들어 드리겟습니다

나머지 두개도 동일한 방법으로 만들어 넣으면 됩니다

 

1. 부분별로 들어있는 자바스크립트는 모두 삭제 하세요

   저런 복잡한 코드는 필요 없습니다

2. submit버튼은 submit 전에 submit 함수를 호출하도록 고치세요

<input type="button" value="검색" class="btn_submit" onclick="sch_submit()">

 

3. submit 함수

<script>
function sch_submit(){
 sfl = []; stx = [];

  $('.wr_1:checked').each( function(){
    stx.push($(this).val());
  });
   if(stx[0]) sfl.push('wr_1');


  if($(':radio[name="wr_2"]').is(":checked")){ //------ wr_2 라디오가 체크 된 것이 잇으면
    stx.push( $(':radio[name="wr_2"]:checked').val() );
     sfl.push('wr_2');
  }


 stx_join = stx.join(' ');
 sfl_join = sfl.join('||');

$('input[name="sfl"]').val(sfl_join);
$('input[name="stx"]').val(stx_join);

 

document.fsearch.submit();

}
</script>

 

 

 

 

 

주소복사
채택됨
답변의 댓글
답변을 작성하시기 전에 로그인 해주세요.
전체 78,597
고마운 분의 도움으로 질문을 해결하셨다면, 채택을 눌러서 감사의 마음을 전하세요.
어떻게 질문해야 할지 모른다면 질문하는 방법을 읽어 보신후 질문해 보세요.
QA 내용 검색

회원로그인

(주)에스아이알소프트 (06253) 서울특별시 강남구 도곡로1길 14, 6층 624호 (역삼동, 삼일프라자) 대표메일:admin@sir.kr
사업자등록번호:217-81-36347 대표:홍석명 통신판매업신고번호:2014-서울강남-02098호 개인정보보호책임자:이총

© SIRSOFT