본문 바로가기
따라 공부하기/PHP게시판 따라하기

[PHP+MySQL]게시판 만들기 11 - 글 검색 기능

by DawIT 2020. 12. 10.
320x100

이 글은 이곳을 참고하여 쓰여졌습니다.

 

오늘은 게시판에 간단한 검색 기능을 구현해 볼 것이다.

 

일단 index.php를 열어 검색박스용 태그를 만든다.

 

 

이 검색박스는 search_result.php로 이어진다. 이어서 search_result.php를 작성한다.

 

<?php 
  include $_SERVER['DOCUMENT_ROOT']."/BBS/db.php";
?>
<!doctype html>
<head>
<meta charset="UTF-8">
<title>게시판</title>
<link rel="stylesheet" type="text/css" href="/BBS/css/style.css" />
</head>
<body>
<div id="board_area"> 
<!-- 18.10.11 검색 추가 -->
<?php
 
  /* 검색 변수 */
  $catagory = $_GET['catgo'];
  $search_con = $_GET['search'];
?>
    <?php if($catagory=='title'){
        $catname = '제목';
    } else if($catagory=='name'){
        $catname = '작성자';
    } else if($catagory=='content'){
        $catname = '내용';
    } ?>
  <h1><?php echo $catname; ?>:<?php echo $search_con; ?> 검색결과</h1>
  <h4 style="margin-top:30px;"><a href="/BBS/index.php">홈으로</a></h4>
    <table class="list-table">
      <thead>
          <tr>
              <th width="70">번호</th>
                <th width="500">제목</th>
                <th width="120">글쓴이</th>
                <th width="100">작성일</th>
                <th width="100">조회수</th>
            </tr>
        </thead>
        <?php
          $sql2 = query("select * from board where $catagory like '%$search_con%' order by idx desc");
          while($board = $sql2->fetch_array()){
           
          $title=$board["title"]; 
            if(strlen($title)>30)
              { 
                $title=str_replace($board["title"],mb_substr($board["title"],0,30,"utf-8")."...",$board["title"]);
              }
            $sql3 = query("select * from reply where con_num='".$board['idx']."'");
            $rep_count = mysqli_num_rows($sql3);
        ?>
      <tbody>
        <tr>
          <td width="70"><?php echo $board['idx']; ?></td>
          <td width="500">
            <?php 
              $lockimg = "<img src='/BBS/img/lock.png' alt='lock' title='lock' with='20' height='20' />";
              if($board['lock_post']=="1")
              { ?><a href='/BBS/ck_read.php?idx=<?php echo $board["idx"];?>'><?php echo $title, $lockimg;
              }else{?>

        <!--- 추가부분 18.08.01 --->
        <?php
          $boardtime = $board['date']; //$boardtime변수에 board['date']값을 넣음
          $timenow = date("Y-m-d"); //$timenow변수에 현재 시간 Y-M-D를 넣음
          
          if($boardtime==$timenow){
            $img = "<img src='/BBS/img/new.png' alt='new' title='new' />";
          }else{
            $img ="";
          }
          ?>
        <!--- 추가부분 18.08.01 END -->
        <a href='/BBS/read.php?idx=<?php echo $board["idx"]; ?>'><span style="background:yellow;"><?php echo $title; }?></span><span class="re_ct">[<?php echo $rep_count;?>]<?php echo $img; ?> </span></a></td>
          <td width="120"><?php echo $board['name']?></td>
          <td width="100"><?php echo $board['date']?></td>
          <td width="100"><?php echo $board['hit']; ?></td>

        </tr>
      </tbody>

      <?php } ?>
    </table>
    <!-- 18.10.11 검색 추가 -->
    <div id="search_box2">
      <form action="/BBS/page/board/search_result.php" method="get">
      <select name="catgo">
        <option value="title">제목</option>
        <option value="name">글쓴이</option>
        <option value="content">내용</option>
      </select>
      <input type="text" name="search" size="40" required="required"/> <button>검색</button>
    </form>
  </div>
</div>
</body>
</html>

 

이렇게 작성하면 된다.

 

 

이 부분의 쿼리에서 $search_con 변수 앞에 %는 검색 구문이라고 한다. 즉,

 

  • %가 앞에만 붙어 있으면 해당 변수로 끝나는 결과를,
  • %가 뒤에만 붙어 있으면 해당 변수로 시작하는 결과를,
  • %가 앞 뒤에 붙어 있으면 해당 변수를 포함하는 결과를 가져온다고 한다.

이렇게 제작하고 게시판을 새로고침 해준다.

 

 

그러면 이렇게 검색 박스가 있다. 각 검색 카테고리로 검색을 해본다.

 

 

이렇게 각 카테고리에서의 검색이 잘 구현되었다.

댓글