검색은 참 어려운 부분이다. 해킹도 걱정해야하고.
이번엔 그냥 단순히 쿼리에 추가하는 정도만 작업해보자. 제목과 내용에서 검색하도록 할것이다. index.php를 고쳐보자.
/index.php
<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/header.php";
$search_keyword = $_GET['search_keyword'];
if($search_keyword){
$search_where = " and (subject like '%".$search_keyword."%' or content like '%".$search_keyword."%')";
}
$sql = "select * from board where 1=1";
$sql .= " and status=1";
$sql .= $search_where;
$order = " order by bid desc";
$query = $sql.$order;
echo "query=>".$query."<br>";
$result = $mysqli->query($query) or die("query error => ".$mysqli->error);
while($rs = $result->fetch_object()){
$rsc[]=$rs;
}
?>
<table class="table">
<thead>
<tr>
<th scope="col">번호</th>
<th scope="col">글쓴이</th>
<th scope="col">제목</th>
<th scope="col">등록일</th>
</tr>
</thead>
<tbody>
<?php
$i=1;
foreach($rsc as $r){
?>
<tr>
<th scope="row"><?php echo $i++;?></th>
<td><?php echo $r->userid?></td>
<td><a href="/view.php?bid=<?php echo $r->bid;?>"><?php echo $r->subject?></a></td>
<td><?php echo $r->regdate?></td>
</tr>
<?php }?>
</tbody>
</table>
<form method="get" action="<?php echo $_SERVER["PHP_SELF"]?>">
<div class="input-group mb-12" style="margin:auto;width:50%;">
<input type="text" class="form-control" name="search_keyword" id="search_keyword" placeholder="제목과 내용에서 검색합니다." value="<?php echo $search_keyword;?>" aria-label="Recipient's username" aria-describedby="button-addon2">
<button class="btn btn-outline-secondary" type="button" id="button-addon2">검색</button>
</div>
</form>
<p style="text-align:right;">
<?php
if($_SESSION['UID']){
?>
<a href="write.php"><button type="button" class="btn btn-primary">등록</button><a>
<a href="/member/logout.php"><button type="button" class="btn btn-primary">로그아웃</button><a>
<?php
}else{
?>
<a href="/member/login.php"><button type="button" class="btn btn-primary">로그인</button><a>
<a href="/member/signup.php"><button type="button" class="btn btn-primary">회원가입</button><a>
<?php
}
?>
</p>
<?php
include $_SERVER["DOCUMENT_ROOT"]."/inc/footer.php";
?>
이렇게 수정 후 검색란에 검색어를 넣고 검색하면 제목이나 내용에 해당 검색어가 포함된 게시물만 검색된다. 위 소스에서 echo로 수정된 쿼리를 찍어보았다.
select * from board where 1=1 and status=1 and (subject like '%안녕%' or content like '%안녕%') order by bid desc
이렇게 나온다. 해당 부분은 쿼리만 확인하고 바로 주석처리해준다.
여기서 한가지만 더 해보자. 보통 검색어가 리스트에 표시되면 해당 검색어에 색깔을 줘서 구분하는 경우가 있다. 그걸 해보자.
/index.php
str_replace라는 내장 함수를 이용해서 특정 단어만 색깔을 바꿔준다.
이렇게 나온다.
'PHP강좌 > 게시판만들기강좌' 카테고리의 다른 글
php+mysql 게시판 만들기 강좌 #16. 회원 게시판 - 페이징 (1) | 2022.02.03 |
---|---|
php+mysql 게시판 만들기 강좌 #15. 회원 게시판 - 답글 달기 (0) | 2022.01.30 |
php+mysql 게시판 만들기 강좌 #13. 회원전용게시판 - 삭제하기 (0) | 2022.01.27 |
php+mysql 게시판 만들기 강좌 #12. 회원전용게시판 - 수정하기 (3) | 2022.01.27 |
php+mysql 게시판 만들기 강좌 #11. 회원전용게시판 - 글쓰기 (0) | 2022.01.26 |