주간단위 시작일에서 종료일을 셀렉트박스로 만들기.
시작일에서 종료일까지 선택할때 달력에서 선택하면 되지만 가끔... 한두번으로 클릭으로 원하는 주의 자료를 보고 싶어하는 사람들이 가끔 있습니다.
이번주, 저번주같은 버튼으로 생성해 간단하게 만들 수 있지만 최대 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 | ||
| 2634 | 6개월 전 | 609 | ||
| 2633 | 6개월 전 | 598 | ||
| 2632 |
|
6개월 전 | 508 | |
| 2631 | 6개월 전 | 569 | ||
| 2630 |
세르반데스
|
6개월 전 | 538 | |
| 2629 | 6개월 전 | 727 | ||
| 2628 | 6개월 전 | 412 | ||
| 2627 | 6개월 전 | 417 | ||
| 2626 |
이슈DEV
|
7개월 전 | 636 | |
| 2625 |
welcome
|
7개월 전 | 645 | |
| 2624 |
이슈DEV
|
7개월 전 | 449 | |
| 2623 | 7개월 전 | 407 | ||
| 2622 | 7개월 전 | 496 | ||
| 2621 | 7개월 전 | 350 | ||
| 2620 |
|
7개월 전 | 369 | |
| 2619 | 7개월 전 | 479 | ||
| 2618 | 7개월 전 | 465 | ||
| 2617 | 7개월 전 | 554 | ||
| 2616 | 7개월 전 | 678 | ||
| 2615 | 7개월 전 | 581 | ||
| 2614 | 7개월 전 | 410 | ||
| 2613 |
바닐라코드
|
8개월 전 | 730 | |
| 2612 | 8개월 전 | 594 | ||
| 2611 | 8개월 전 | 731 | ||
| 2610 | 8개월 전 | 966 | ||
| 2609 | 8개월 전 | 508 | ||
| 2608 | 8개월 전 | 653 | ||
| 2607 | 8개월 전 | 631 | ||
| 2606 | 8개월 전 | 576 | ||
| 2605 | 8개월 전 | 602 |
댓글 작성
댓글을 작성하시려면 로그인이 필요합니다.
로그인하기