본문 바로가기
IT/PHP

23##]PHP로 홈페이지 만들기>게시글 검색

by 혁이 2017. 4. 22.
반응형


검색을 위해 검색하는 form부터 만들어보겠습니다.






list.php 

               

 <div> 

                <form method=GET name=frm1 action='list.php'>

검    색 
<select name=kind>
<option value=title selected>제목
<option value=name>글쓴이
<option value=comment>내용
</select>

<input type=text size=45 name=search>
<input type=button name=byn1 onclick="search1()" value="찾기">
<input type=hidden name="no" value=0>
</form>
               
 </div>




list.php의 body부분 제일 아래에 추가했습니다.

no=0을 전송시키는 이유는 현재 페이지가 2이상일 때 검색하면 검색된 화면에서 페이지가 현재의 페이지를

따라가서 0으로 수정해줍니다.(즉 검색하면 1페이지로 오게끔 합니다)

<select>태그는 form에서 콤보박스를 담당합니다.

버튼을 추가하여 onclick로 search1()이라는 함수를 실행시킵니다.

search1() 

<script>

function search1(){

if(frm1.search.value){

frm1.submit();

}else{

location.href="list.php";

}


}

</script>



</title>아래에 삽입됐습니다.


search(텍스트박스)의 내용이 있을때는 submit()를 하고

그렇지 않을 땐 list.php를 초기화시킵니다.




후에 submit()된 부분을 처리해 보겠습니다.

list.php 

 

if(isset($_GET['search'])){

                                $sel=$_GET['kind'];
$search=$_GET['search'];
$sql="select id,thread,depth,name,email,title,comment,DATE_FORMAT(wdate,'%Y-%m-%d') as wdate, see,cmt_cnt,filename from $board where $sel like '%$search%' order by id desc limit $no,$page_size";
$result=mysql_query($sql,$conn);

$result_count=mysql_query("select count(*) from $board where $sel like '%$search%'",$conn);
}



상단의

if(!$no||$no<0)$no=0; 부분 바로 아래에 들어갑니다.

콤보박스에서 선택한것은 $sel변수에 들어가고 텍스트박스에 적은것은 $search에 

들어갑니다.


이렇게 검색하는 where 필드명 like '%%'구문을 써서 검색하고자하는 것들만 추출합니다.

또한 이렇게 검색한 것들의 갯수를 세는 sql문을 써서 검색한 페이지 수를 계산하는데 사용합니다.

원래 사용되고 있던 변수 명과 같이해서 굳이 많은 변화를 주지 않았습니다.

아래에는 else{}으로 원래 sql문이 안에 들어갑니다.





list.php 


                       for($i=$start_page;$i<=$end_page;$i++){

$page=$page_size*$i;

$page_num=$i+1;


if(isset($sel)){

                                       if($no!=$page)

echo "<a href=list.php?kind=$sel&search=$search&no=$page>";

}

else{


                        if($no!=$page){

 

         echo "<a href=list.php?no=$page>";

        }

}

echo " $page_num ";

if($no!=$page){

echo "</a>";

}

}


페이지수를 출력하는 반복문입니다.

붉은 곳을 추가했습니다. 검색 후 여러 페이지일 때 해당 페이지를 클릭 시 검색이 

풀리는 것을 방지하고자 추가하였습니다.






asdf를 검색한 결과.get방식으로 검색을 하였습니다.


잘되네요 ㅎㅎ 기분이 좋습니다.


감사합니다






반응형