주간단위 시작일에서 종료일을 셀렉트박스로 만들기.
시작일에서 종료일까지 선택할때 달력에서 선택하면 되지만 가끔... 한두번으로 클릭으로 원하는 주의 자료를 보고 싶어하는 사람들이 가끔 있습니다.
이번주, 저번주같은 버튼으로 생성해 간단하게 만들 수 있지만 최대 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년 전 | 4402 | ||
| 2574 | 10개월 전 | 559 | ||
| 2573 | 10개월 전 | 936 | ||
| 2572 |
두리삼촌v
|
10개월 전 | 606 | |
| 2571 | 10개월 전 | 554 | ||
| 2570 | 10개월 전 | 598 | ||
| 2569 |
두리삼촌v
|
10개월 전 | 635 | |
| 2568 |
두리삼촌v
|
10개월 전 | 665 | |
| 2567 |
두리삼촌v
|
10개월 전 | 459 | |
| 2566 |
두리삼촌v
|
10개월 전 | 441 | |
| 2565 | 10개월 전 | 738 | ||
| 2564 | 10개월 전 | 666 | ||
| 2563 | 10개월 전 | 472 | ||
| 2562 | 10개월 전 | 1028 | ||
| 2561 |
|
10개월 전 | 674 | |
| 2560 | 10개월 전 | 917 | ||
| 2559 | 10개월 전 | 655 | ||
| 2558 |
|
10개월 전 | 503 | |
| 2557 | 10개월 전 | 656 | ||
| 2556 | 10개월 전 | 953 | ||
| 2555 | 11개월 전 | 1334 | ||
| 2554 | 11개월 전 | 750 | ||
| 2553 |
|
11개월 전 | 744 | |
| 2552 | 11개월 전 | 673 | ||
| 2551 | 11개월 전 | 863 | ||
| 2550 | 11개월 전 | 764 | ||
| 2549 |
|
11개월 전 | 716 | |
| 2548 | 11개월 전 | 1028 | ||
| 2547 | 11개월 전 | 669 | ||
| 2546 | 11개월 전 | 1203 | ||
| 2545 | 11개월 전 | 660 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기