반응형
PHP로 목록 프로그램을 코딩 시 검색 폼에 있는 날짜가 월로 검색을 해야 하는 SELECT 콤보 박스 시 사용하는 예제입니다.
아래 소스에서는 날짜 검색을 위해서 월의 시작일이 1일까지를 포함해서 값을 셋팅하였습니다.
<form class="form-inline" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" style="display:inline;">
<select name="search_month" class="form-control" required>
<option value="20200601"<?=$search_month=="20200601"?" selected":""?>>2020년 06월</option>
<option value="20200701"<?=$search_month=="20200701"?" selected":""?>>2020년 07월</option>
<option value="20200801"<?=$search_month=="20200801"?" selected":""?>>2020년 08월</option>
<option value="20200901"<?=$search_month=="20200901"?" selected":""?>>2020년 09월</option>
<option value="20201001"<?=$search_month=="20201001"?" selected":""?>>2020년 10월</option>
<option value="20201101"<?=$search_month=="20201101"?" selected":""?>>2020년 11월</option>
<option value="20201201"<?=$search_month=="20201201"?" selected":""?>>2020년 12월</option>
<option value="20210101"<?=$search_month=="20210101"?" selected":""?>>2021년 01월</option>
<option value="20210201"<?=$search_month=="20210201"?" selected":""?>>2021년 02월</option>
<option value="20210301"<?=$search_month=="20210301"?" selected":""?>>2021년 03월</option>
<option value="20210401"<?=$search_month=="20210401"?" selected":""?>>2021년 04월</option>
<option value="20210501"<?=$search_month=="20210501"?" selected":""?>>2021년 05월</option>
</select>
<button type="submit" class="btn btn-default">검색</button>
</form>
첫 페이지 로딩 시 조회할 검색월이 없기에 초기값 설정을 합니다.
현재 날짜의 연도와 월을 가져옵니다.
$searchYear = (int)date('Y');
$searchMonth = (int)date('m');
쿼리문에 넣을 날짜를 YYYYMMDD 포맷으로 셋팅합니다.
$search_month = date("Ymd", mktime(0, 0, 0, $searchMonth, 1, $searchYear));
MySQL에서 조회 조건을 현재월을 기준으로 1개월 전의 말일, 현재월의 말일의 다음날로 셋팅을 합니다.
예시를 들면 오늘이 7월 15일일 때, 위의 쿼리문을 보면 6월 30일 AND 8월 1일이 됩니다.
날짜 뒤의 시간은 00:00:00 으로 자동으로 만들어지 때문에 7월 1일 ~ 7월 31일 까지로 데이터를 가져옵니다.
즉, 각 월별로 데이터 조회가 가능하게 되는 거죠.
WHERE reg_date BETWEEN LAST_DAY(STR_TO_DATE($search_month,'%Y%m%d') - INTERVAL 1 MONTH)
AND LAST_DAY(STR_TO_DATE($search_month,'%Y%m%d')) + INTERVAL 1 DAY
앞에서 설명 드린 내용을 조합한 전체 내용입니다.
<?php
// 검색월
$search_month = $_REQUEST['search_month'];
if ( empty($search_month) ) {
// 현재 날짜의 연, 월을 저장
$searchYear = (int)date('Y');
$searchMonth = (int)date('m');
// 현재월,일까지 설정
// 예시 : 20200701
$search_month = date("Ymd", mktime(0, 0, 0, $searchMonth, 1, $searchYear));
}
$query = "SELECT * FROM [테이블명]
WHERE reg_date BETWEEN LAST_DAY(STR_TO_DATE($search_month,'%Y%m%d') - INTERVAL 1 MONTH)
AND LAST_DAY(STR_TO_DATE($search_month,'%Y%m%d')) + INTERVAL 1 DAY";
?>
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<form class="form-inline" action="<?php echo $_SERVER['SCRIPT_NAME']?>" method="post" style="display:inline;">
<select name="search_month" class="form-control" required>
<option value="20200601"<?=$search_month=="20200601"?" selected":""?>>2020년 06월</option>
<option value="20200701"<?=$search_month=="20200701"?" selected":""?>>2020년 07월</option>
<option value="20200801"<?=$search_month=="20200801"?" selected":""?>>2020년 08월</option>
<option value="20200901"<?=$search_month=="20200901"?" selected":""?>>2020년 09월</option>
<option value="20201001"<?=$search_month=="20201001"?" selected":""?>>2020년 10월</option>
<option value="20201101"<?=$search_month=="20201101"?" selected":""?>>2020년 11월</option>
<option value="20201201"<?=$search_month=="20201201"?" selected":""?>>2020년 12월</option>
<option value="20210101"<?=$search_month=="20210101"?" selected":""?>>2021년 01월</option>
<option value="20210201"<?=$search_month=="20210201"?" selected":""?>>2021년 02월</option>
<option value="20210301"<?=$search_month=="20210301"?" selected":""?>>2021년 03월</option>
<option value="20210401"<?=$search_month=="20210401"?" selected":""?>>2021년 04월</option>
<option value="20210501"<?=$search_month=="20210501"?" selected":""?>>2021년 05월</option>
</select>
<button type="submit" class="btn btn-default">검색</button>
</form>
</body>
</html>
2019/12/30 - [유용한 활용팁] - MySQL 설정된 사용기간에 따라서 데이터 조회하는 방법
2019/12/26 - [유용한 활용팁] - MySQL 현재월, 현재월 기준 1개월, 2개월 조회 방법, 날짜 칼럼 월 조회 방법
반응형
'유용한 활용팁' 카테고리의 다른 글
Atom Remote-FTP Project Multiple servers Hosts 연결 방법 (0) | 2020.08.04 |
---|---|
.htaccess를 이용하여 URL에 www 붙이기 - mod_rewrite 이용, javascript, php (0) | 2020.07.28 |
네이버 스마트스토어 정부24에서 통신판매업 신고 방법 (0) | 2020.07.11 |
네이버 스마트스토어 통신판매업 신고에 필요한 구매안전서비스 이용확인증 발급 방법 - 개인에서 사업자 전환 시 (0) | 2020.07.10 |
MySQL LPAD를 이용하여 코드 자동 채번하는 방법 - feat.PHP (0) | 2020.07.07 |