주간단위 시작일에서 종료일을 셀렉트박스로 만들기.
시작일에서 종료일까지 선택할때 달력에서 선택하면 되지만 가끔... 한두번으로 클릭으로 원하는 주의 자료를 보고 싶어하는 사람들이 가끔 있습니다.
이번주, 저번주같은 버튼으로 생성해 간단하게 만들 수 있지만 최대 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개
게시글 목록
| 번호 | 제목 |
|---|---|
| 24149 | |
| 24140 | |
| 24133 | |
| 24125 | |
| 24119 | |
| 24109 | |
| 24105 | |
| 24101 | |
| 24093 | |
| 24089 | |
| 24077 | |
| 24074 | |
| 24071 | |
| 24070 | |
| 24067 | |
| 24056 | |
| 24050 | |
| 24046 | |
| 24043 | |
| 24040 | |
| 24037 | |
| 24036 | |
| 24035 | |
| 24034 | |
| 24021 | |
| 24017 | |
| 24005 | |
| 24002 | |
| 23990 | |
| 23980 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기