게시판 검색관련 질문드립니다.

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
게시판 검색관련 질문드립니다.

QA

게시판 검색관련 질문드립니다.

답변 3

본문

제가 특정 게시판을 검색을 위한 서브페이지나 해당스킨 list 파일을 수정하려고하는데

 

어떻게 해야 될지 잘모르겠습니다.

 

http://miraeobgy.com/community/gallery/ 예시사이트입니다

 

위의 사이트처럼 엄마, 아빠 이름을 여분필드에 넣고 두값모두 넣어야만 검색이 되었으면 하는데

 

어떻게 해야 될지 잘 모르겠습니다.  두값다 넣어야만 검색되게 하였지만

 

아직 시작한지 얼마안되서 초보라... 검색하면 검색입력하는 창에 각각 다른 값이 나와야 하는데

 

두번째에 입력한 값으로  두개다 나와버리네요ㅠㅠ..

 

해당 게시판스킨 리스트페이지에 작성한 검색기능입니다. 셀렉트박스는 display:none을 하였습니다.

 


<fieldset id="bo_sch">
    <legend>게시물 검색</legend>
    <form name="fsearch" method="get">
      <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
      <input type="hidden" name="sca" value="<?php echo $sca ?>">
      <input type="hidden" name="sop" value="and">
      <label for="sfl" class="sound_only">검색대상</label>
      <select name="sfl" id="sfl">
        <option value="wr_2"<?php echo get_selected($sfl, 'wr_2'); ?>>아빠</option>
      </select>
      <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
      <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="255" placeholder="아빠이름">
      <select name="sfl" id="sfl">
        <option value="wr_1"<?php echo get_selected($sfl, 'wr_1'); ?>>엄마</option>
      </select>
      <label for="stx" class="sound_only">검색어<strong class="sound_only"> 필수</strong></label>
      <input type="text" name="stx" value="<?php echo stripslashes($stx) ?>" required id="stx" class="frm_input required" size="15" maxlength="255" placeholder="엄마이름">
      <input type="submit" value="검색" class="btn_submit" id="sear_btn">
    </form>
  </fieldset>

 

진짜 얕은 지식으로 만들었는데 그이후가 문제네요ㅠㅠㅠ..... 선배님들 어떻게 수정해야 될까요??

 

1. 리스트페이지에 접속했을때는 목록은 없고 검색하는 페이지만 나오고 검색햇을때 해당 게시물만 나올수 있을까요??

 

2. 혹시 괜찮다면 검색후 input text박스에 두값 모두 동일값이 나오는게 아니라 아빠이름 박스에는 검색한 아빠이름, 엄마이름 박스에는 검색한 엄마이름이 나왔으면 합니다...... 선배님들 한수부탁드립니다.

이 질문에 댓글 쓰기 :

답변 3

1) list.ksin.php 에서 리스트가 <form>~</form> 으로 감싸져 있습니다.

해당 부분을 if 문으로 처리해주면 됩니다.


<?php if ($stx) { /* 검색어가 있는 경우에만 */ ?>
<form name="fboardlist" ~
~
</form>
<?php } ?>

 

2) 검색관련 처리는 /lib/common.lib.php 에서 get_sql_search() 함수가 핵심적인 부분입니다.

해당부분을 먼저 이해하시는 것을 추천합니다.

해당 함수의 소스를 보면 멀티검색 지원 관련해서..,

  검색필드의 구분자는 '||'

  검색어의 구분자는 공백

  연산자의 기본값은 'and' 로 되어있음을 확인할 수 있습니다.

 

주소창에서 바로확인해보고 싶다면..

리스트 URL 에 추가로 &sfl=wr_1||wr_2&stx=김아빠 김엄마 

식 입니다.

 

이를 이용한다면 다음과 같이 처리를 해주시면 됩니다.

ex. 여분필드1,2 를 활용했을 때


<input type="hidden" name="sfl" value="wr_1||wr_2">
<input type="hidden" name="stx" value="">
아빠 : <input type="text" name="wr_1" value="">
엄마 : <input type="text" name="wr_2" value="">

 

//자바스크립트에 다음의 내용 추가


$(function() {
  $('form[name=fsearch]').on('submit', function() {
    var f = document.forms['fsearch'];
    f.stx.value = f.wr_1.value + ' ' + f.wr_2.value;
  });
}); 

아 더보기 눌러서 보고 수정했는데 안되서요 ㅠㅠ....

혹시 하단처럼 추가 하는게 맞나요??

아니면 검색 form에 sfl이랑 stx를 추가해야 되는건가요??


    <form name="fboardlist"  id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="sfl" value="wr_1||wr_2">
    <input type="hidden" name="stx" value="">
    <input type="hidden" name="spt" value="<?php echo $spt ?>">
    <input type="hidden" name="sst" value="<?php echo $sst ?>">
    <input type="hidden" name="sod" value="<?php echo $sod ?>">
    <input type="hidden" name="page" value="<?php echo $page ?>">
    <input type="hidden" name="sw" value="">

대략적으로 맞습니다.

그누보드의 기본 검색은,
sfl : 검색 필드
stx : 검색어입니다.

sfl 은 wr_1||wr_2 식으로 멀티가 되고,
stx 도 [검색어1] [검색어2] 식으로 공백으로 구분자를 주면 wr_1 에 대해 [검색어1] 로 검색, wr_2 에 대해 [검색어2]로 검색이 되지만.. 사용자가 이렇게 입력하기 어려울 수 있으니..
편의상
<input type="text" name="wr_1">
<input type="text" name="wr_2">
를 나눠서 받은뒤, form 전송시 공백으로 합치는 방법을 예시로 말씀드린 것입니다.

그 부분이 자바스크립트로 얘기한 부분이고, 해당 list.skin.php <script> ~ </script> 안에 넣으면 될 것입니다.

혹 문법적인 오류나, 제가 미처 생각하지 못한 요인으로 오류가 있다면..
그건 하나씩 살펴서 오류를 해결해 나가시면 될 듯 합니다.

bo_table=galltest&sca=&sop=and&sfl=wr_1%7C%7Cwr_2&stx=박윤희 서정환
(정확히는 bo_table=galltest&sca=&sop=and&sfl=wr_1%7C%7Cwr_2&stx=박윤희%20서정환)
식으로 넘어가게 해야 됩니다.
wr_1, wr_2 에 값이 각각 들어가도 문제가 생기는 것은 아닙니다.

$(function() {
  $('form[name=fsearch]').on('submit', function() {
    var f = document.forms['fsearch'];
    f.stx.value = f.wr_1.value + ' ' + f.wr_2.value;
    f.wr_1.value = "";
    f.wr_2.value = "";
  });
});

로 조금 수정하면 될 것 같고..

이 자바 스크립트 구문을 <script> ~ </script> 에 넣어주시면 될 듯 합니다.

지금 보니..

<form name="fboardlist"  id="fboardlist" action="./board_list_update.php" onsubmit="return fboardlist_submit(this);" method="post">
에  sfl, stx 등을 넣으셨는데..

여기가 아닌

<form name="fsearch" method="get">
~
</form>
안에 넣으셔야 됩니다.

전자의 폼은 게시글 리스트의 선택수정, 선택 삭제 등을 위한 폼이고..

검색폼은 <form name="fsearch" method="get"> ~ </form> 입니다.

<form name="fsearch" method="get">
<input type="hidden" name="sfl" value="wr_1||wr_2">
<input type="hidden" name="stx" value="">
아빠 : <input type="text" name="wr_1" value="">
엄마 : <input type="text" name="wr_2" value="">
</form>

둘 중에 하나는 빼시면 됩니다.

제 예시 코드에서,
<input type="hidden" name="sfl" value="wr_1||wr_2">
는 기존 셀렉트박스로 되어있는 sfl 을 삭제하고 이렇게 대체하라는..

<input type="hidden" name="stx" value="">

기존 텍스트박스로 되어있던 stx 를 삭제하고 이렇게 대체하라는

의미입니다.

http://www.isarangclinic.co.kr/bbs/board.php?bo_table=gall&sfl=wr_1%7C%7Cwr_2&stx=박윤희%20서정환

간단화 시키면

<form name="fsearch">

~

</form>

안에

<input type="hidden" name="sfl" value="wr_1||wr_2"> 는 해결이 된 것이고,

<input type="hidden" name="stx" value="">

엄마 이름 : <input type="text" name="t1">

아빠 이름 : <input type="text" name="t2">

엄마 이름과, 아빠 이름을 임의의 텍스트박스로 받아서, 

stx 값을 '엄마이름 아빠이름' 으로 만들어주면 되는 문제입니다.

<form name="fboardlist" ~> 부분은 원 소스로 되돌리시는게 좋을 듯 합니다.

감사합니다. 위에 적어주신 주소처럼 동일하게 주소가 나오진 않더라도

wr_1과 wr_2값이 동일해야 게시글이 검색되네요 진짜 정말감사드립니다.

감사드립니다.

<input type="text" name="wr_1" value="<?php echo stripslashes($wr_1) ?>" required id="wr_1" class="frm_input required" size="15" maxlength="255" placeholder="엄마이름">

<input type="text" name="wr_2" value="<?php echo stripslashes($wr_2) ?>" required id="wr_2" class="frm_input required" size="15" maxlength="255" placeholder="아빠이름">

이러한 형태로 두개를 다 text형태로 넣고 엄마이름과 아빠이름을 적게끔 해주셔야 겠지요

select는 선택하는 부분이라서 그부분은 빼셔도 될 듯합니다.

답변을 작성하시기 전에 로그인 해주세요.
QA 내용 검색
질문등록
전체 0
© SIRSOFT
현재 페이지 제일 처음으로