본문 바로가기
WEB HACKING/웹 해킹[실습]

Php로 웹 개발하기 : 게시판(16) - 날짜 기간 조회

by madevth 2021. 12. 7.
반응형

기존 포스팅에서 작성자, 제목, 내용, 날짜로 검색할 수 있는 기능을 구현했었다.

게시판(2) : [모의해킹_실습] - Php로 웹 개발하기 : 게시판 만들기(2) - Search

게시판(3) : [모의해킹_실습] - Php로 웹 개발하기 : 게시판 만들기(3) - Option Search

 

select option으로 네 가지 선택사항을 보여줬는데, 그중 날짜 검색은 아예 기간을 정해서 조회할 수 있도록 만들 것이다.

<select name = "option_val">
    <option value = "username">작성자</option>
    <option value = "title">제목</option>
    <option value = "content">내용</option>
</select>

option은 위처럼 3가지로 수정해주고, 기간을 설정해서 조회할 수 있는 기능을 구현해보자.

 

이모티콘은 fontawesome에서 불러왔고, input type는 date로 주었다.

<i class="far fa-calendar-alt"></i><input type = "date" name ="date_from" />
<i class="far fa-calendar-alt"></i><input type = "date" name = "date_to" />

CSS는 무시하고, 기능부터 구현해보자.

type를 date로 주면, 자동으로 년/월/일 값을 입력받는다.

날짜를 선택한 후, 값을 출력해보자.

echo $_POST['date_from'].'</br>';
echo $_POST['date_to'];

기존에 MySQL에 저장했던 날짜의 형식과 똑같이 출력되기 때문에, 그대로 사용할 수 있다.

 

쿼리에서 날짜 사이의 row를 출력할 때는 between을 사용하면 된다.

select * from table where date between "날짜1" and "날짜2";

 

날짜 선택 여부에 따라 검색을 할 때의 SQL 쿼리문이 달라지므로, [board.php]의 검색 부분에 SQL 쿼리를 수정해줬다.

$start_date = $_POST['date_from'];
$end_date = $_POST['date_to'];

if($start_date && $end_date){
    $sql = "SELECT * FROM board where $column like '%$find%' and date between '$start_date' and '$end_date';";
}
else $sql = "SELECT * FROM board where $column like '%$find%';";

$result = mysqli_query($conn, $sql);

test가 2020/09/15일과 2021/09/15 사이에 작성한 글을 검색해보았다.

잘 나오는 것을 확인할 수 있다!

반응형

댓글