주간단위 시작일에서 종료일을 셀렉트박스로 만들기.
시작일에서 종료일까지 선택할때 달력에서 선택하면 되지만 가끔... 한두번으로 클릭으로 원하는 주의 자료를 보고 싶어하는 사람들이 가끔 있습니다.
이번주, 저번주같은 버튼으로 생성해 간단하게 만들 수 있지만 최대 15주전까지라던가 그 이상의 주간단위로 빠르게 원하는 주를 선택할때 셀렉트박스로 만들어 선택할 수 있게 만들었습니다.
우선 아래의 2가지 함수를 필요로 합니다.
[code]
<?php
// 셀렉트박스의 옵션을 만들어주는 함수 (보여질텍스, value값, 선택되어질값)
function option_str($data1,$data2,$option_name=''){
$data1=explode("|",$data1);
$data2=explode("|",$data2);
for($i=0; $i < count($data1); $i++){ $dataA[$i] = trim($data1[$i]); }
for($i=0; $i < count($data2); $i++){ $dataB[$i] = trim($data2[$i]); }
for($i=0; $i < count($data2); $i++){
$selected = ( $option_name == $dataB[$i] )? "selected":"";
$result .="<option value='".$dataB[$i]."' ".$selected.">".$dataA[$i]."</option>";
}
return $result;
}
// 지정한날자를 기준으로 몇주전까지 배열로 생성
// $day = 기준날자(0000-00-00), $idx = 주간단위 수
function get_weeks($day, $idx=10) {
$today = strtotime($day);
$start_day = date('Y-m-d', (strtotime('MONDAY', $today) > $today) ? strtotime('LAST MONDAY', $today) : strtotime('MONDAY', $today)); // 기준일짜 주의 시작일 (월)
$end_day = date('Y-m-d', strtotime('SUNDAY', $today)); // 기준일짜 주의 종료일 (일)
$arr[$start_day."X".$end_day] = " 이번주 : ".$start_day." ~ ".$end_day;
for($i=0; $i < $idx; $i++) {
$tt = (($i+1)<10)? "0":"";
$a = date('Y-m-d', strtotime('-'.($i+1).' WEEK', strtotime($start_day))); // 주시작일(월)
$b = date('Y-m-d', strtotime('-'.($i+1).' WEEK', strtotime($end_day))); // 주종료일(일)
$arr[$a."X".$b] = $tt.($i+1)." 주전 : ".$a." ~ ".$b;
}
return $arr;
}
?>
[/code]
사용법은 아래와 같습니다.
[code]
<select name='week' id='week' class='week'>
<?php
$wk = get_weeks(G5_TIME_YMD, '15'); // 오늘날짜를 기준으로 15주전까지 배열 생성
$week_txt = implode("|", $wk); // 배열의 원소를 구분자"|"를 붙여 합침.
$week_val = implode("|", array_keys($wk)); // 배열의 키를 구분자 "|"를 붙여 합침
echo option_str($week_txt, $week_val,$week); // 옵션 생성
?>
</select>
[/code]
셀렉트박스의 value값이 0000-00-00X0000-00-00의 형태로 시작일과 종료일의 구분을 "X"로 하였으니 받는쪽에서는 "X"로 구분하여 시작일과 종료일을 구분해주면 됩니다.
예를 들면 아래처럼~~
[code]
list($fr_date, $to_date) = explode("X", $_GET['week']);
$sql = "select * from table_name where reg_date between '$fr_date' and '$to_date' ";
$result = sql_query($sql);
[/code]

댓글 3개
게시판 목록
그누보드5 팁자료실
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 |
|---|---|---|---|---|
| 공지 | 3년 전 | 4443 | ||
| 2244 |
|
2년 전 | 2229 | |
| 2243 | 2년 전 | 2151 | ||
| 2242 | 2년 전 | 2722 | ||
| 2241 | 2년 전 | 1929 | ||
| 2240 | 2년 전 | 3409 | ||
| 2239 | 2년 전 | 2823 | ||
| 2238 |
welcome
|
2년 전 | 1802 | |
| 2237 | 2년 전 | 1493 | ||
| 2236 | 2년 전 | 1825 | ||
| 2235 |
teradesign
|
2년 전 | 2255 | |
| 2234 | 2년 전 | 1784 | ||
| 2233 | 2년 전 | 2014 | ||
| 2232 | 2년 전 | 2532 | ||
| 2231 | 2년 전 | 1973 | ||
| 2230 | 2년 전 | 2434 | ||
| 2229 | 2년 전 | 2354 | ||
| 2228 |
|
2년 전 | 3486 | |
| 2227 | 2년 전 | 3016 | ||
| 2226 | 2년 전 | 1478 | ||
| 2225 | 2년 전 | 1775 | ||
| 2224 | 2년 전 | 1986 | ||
| 2223 | 2년 전 | 2159 | ||
| 2222 | 2년 전 | 1944 | ||
| 2221 | 2년 전 | 2319 | ||
| 2220 | 2년 전 | 3405 | ||
| 2219 | 2년 전 | 2503 | ||
| 2218 | 2년 전 | 2561 | ||
| 2217 |
|
2년 전 | 2093 | |
| 2216 | 2년 전 | 2708 | ||
| 2215 | 2년 전 | 2532 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기