날짜 검색 질문드립니다. (다시질문.ㅠ) 채택완료
안녕하세요.
아래에서도 질문을 드렸었는데요..
날짜 검색을 여기저기 참고해서 만들었습니다.
소스는 아래와 같습니다.
bbs/list.php 에 추가
if($s_Date && $e_Date) {
$sql_datet .= " and left(wr_datetime, 10) between '{$s_Date}' and '{$e_Date}' ";
}
if ($is_search_bbs) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_datet} {$sql_order} limit {$from_record}, $page_rows ";
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 {$sql_datet}";
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}
list.skin.php에 추가
$.datepicker.setDefaults({
dateFormat: 'yy-mm',
prevText: '이전 달',
nextText: '다음 달',
monthNames: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
monthNamesShort: ['1월', '2월', '3월', '4월', '5월', '6월', '7월', '8월', '9월', '10월', '11월', '12월'],
dayNames: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesShort: ['일', '월', '화', '수', '목', '금', '토'],
dayNamesMin: ['일', '월', '화', '수', '목', '금', '토'],
showMonthAfterYear: true,
yearSuffix: '년'
});
$(function() {
$("#s_Date, #e_Date").datepicker({
dateFormat: 'yy-mm-dd'
});
});
이렇게 해서 기능은 정상적으로 잘 동작을 하는데요..
문제는
결과는 3건인데
하단에 페이징 리스트가 나옵니다.
2페이지 눌러보면 상관없는 게시물이 그대로 나와버리더라구요..
bbs/list.php 에서 뭔가를 해줘야 할 것 같은데
검색해도 나오지 않아서 이렇게 다시 질문올려봅니다.
도와주십시오..ㅠ
답변 4개
$sql_datet관련 코드 삭제, 모든 것을 원본대로 돌리고 더음 코드만 추가 수정하세요
if ($sca || $stx || $stx === '0' || ($s_Date && $e_Date)) { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
if(!$sql_search || $sql_search =='0') $sql_search ='';
if($s_Date && $e_Date){
if($sql_search) $sql_search .= " and ";
$sql_search .= " wr_datetime between '$s_Date 00:00:00' and '$e_Date 23:59:59' ";
$qstr.="&e_Date=$e_Date&s_Date=$s_Date";
}
댓글을 작성하려면 로그인이 필요합니다.
bbs/list.php
이부분은 원본 그대로 유지하고
if ($is_search_bbs) {
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} {$sql_order} limit {$from_record}, $page_rows ";
} else {
$sql = " select * from {$write_table} where wr_is_comment = 0 ";
if(!empty($notice_array))
$sql .= " and wr_id not in (".implode(', ', $notice_array).") ";
$sql .= " {$sql_order} limit {$from_record}, $page_rows ";
}
이부분이 다음과 같이 수정되어야 할것 같습니다.
// ------------------------------------------- 추가
$sql_datet = '';
if ($s_Date && $e_Date) {
$sql_datet .= " and left(wr_datetime, 10) between '{$s_Date}' and '{$e_Date}' ";
}
// ------------------------------------------- 추가
if ($sca || $stx || $stx === '0') { //검색이면
$is_search_bbs = true; //검색구분변수 true 지정
$sql_search = get_sql_search($sca, $sfl, $stx, $sop);
// 가장 작은 번호를 얻어서 변수에 저장 (하단의 페이징에서 사용)
$sql = " select MIN(wr_num) as min_wr_num from {$write_table} ";
$row = sql_fetch($sql);
$min_spt = (int)$row['min_wr_num'];
if (!$spt) $spt = $min_spt;
//$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) "
$sql_search .= " and (wr_num between {$spt} and ({$spt} + {$config['cf_search_part']})) {$sql_datet} ";
// 원글만 얻는다. (코멘트의 내용도 검색하기 위함)
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} ";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
/*
$sql = " select distinct wr_parent from {$write_table} where {$sql_search} ";
$result = sql_query($sql);
$total_count = sql_num_rows($result);
*/
} else {
$sql_search = "";
$total_count = $board['bo_count_write'];
}
list.skin.php
답변에 대한 댓글 2개
커스텀 되어 있거나 코드자체가 기준버전과 많이 다를경우
관련부분에 대한 추가확인이 필요합니다.
댓글을 작성하려면 로그인이 필요합니다.
bbs/list.php 에 아래소스를 추가해서.. 전체 페이지수를 다시 구해야 합니다.
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_datet}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
답변에 대한 댓글 2개
// 라엘님 제안 코드로 대체 http://sir.kr/g5_bug/2922
$sql = " SELECT COUNT(DISTINCT `wr_parent`) AS `cnt` FROM {$write_table} WHERE {$sql_search} {$sql_datet}";
$row = sql_fetch($sql);
$total_count = $row['cnt'];
이렇게 해보니 기존이랑 똑같은 증상이네요 ㅠ
기존의 상단 소스는 수정해도 소용이 없습니다.
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 3개
이렇게 나옵니다.
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
너무 자세히 적어주셔서 정말 감사드립니다!! ㅎㅎ
근데 날짜검색 자체가 안되네요 ㅠ
제가 뭔가 잘못만지고 있나봅니다.... 그대로 하긴했는데..ㅠ