2011-09-26 13 views
1

선택한 달의 데이터를 표시하는 시스템을 작성 중입니다. 사용자는 보려는 달을 선택할 수 있습니다. 그러면 다음과 같은 URL이 생성됩니다. .com/page.php? month = 03 생각할 수있는 페이지가 아이디어를 취한 다음 데이터베이스에서 데이터를 가져 오는 데 사용됩니다. 그 달부터.두 날짜 사이에있는 데이터베이스에서 데이터 가져 오기

URL에있는 달을 기준으로이 예제에 기초한 $ startdate $ enddate 시작 날짜는 2011-03-01이며, 다음 날짜의 일 부분에 29 또는 30을 더합니다. 그 달이 31 일 또는 30 일이면. 좋아요 그래서 이런 식으로 날짜를 수행

$getresults = mysql_query("SELECT * FROM table1 WHERE date BETWEEN $startdate AND $enddate ORDER BY date ASC"); 

: 지금은 작동하지 않는 것이 변수 데이터베이스에서 데이터를 얻을 때

$startdate = mktime(0,0,0,date("$month"),date("01"),date("2011")); 
if($month==04 || $month==06 || $month==9 || $month==11) 
{ 
    $enddate = mktime(0,0,0,date("$month"),date("01")+29,date("2011")); 
} 
else 
{ 
    $enddate = mktime(0,0,0,date("$month"),date("01")+30,date("2011")); 
} 

, 이것은 쿼리입니다 문제는 내가 바스 (vars)를 하드 코딩 된 날짜로 바꾸면 치료법이 효과가 있다는 것입니다. 누구나 아이디어가 있습니까? 나는 그것이 형식화 된 방식과 관련이 있다고 생각하고 있었습니까? 내 데이터베이스에서 "Y-m-d"또한 PHP에서 동일합니다.

사람들에게 도움을 주신 모든 분들께 정말 감사드립니다.

답변

5

mktime은 유닉스 타임 스탬프 (예 : '1317046059')로 표시되지만 테이블은 다른 형식 (예 : '2011-09-26')으로 저장됩니다. 쿼리 작업을하려면, 적절한 형식으로 타임 스탬프를 변환해야합니다 :

$enddate = date('Y-m-d', mktime(0,0,0,date("$month"),date("01")+29,date("2011"))); 

업데이트 : 날짜가 데이터베이스에 타임 스탬프로 저장되어 새로운 의견을 바탕으로

, 당신 이런 식으로 날짜를 포맷해야합니다

$enddate = date('Y-m-d h:i:s', mktime(0,0,0,date("$month"),date("01")+29,date("2011"))); 
+0

고마워요.하지만 지금은 1970 년의 데이터를 되풀이합니다 ...? – ragebunny

+0

귀하의 질문을 이해할 수 있는지 잘 모르겠습니다. 그것을 바꿔 말할 수 있습니까? –

+0

그래, $ enddate = date ('Ym-d', mktime (0,0,0, date ("$ month"), 날짜 ("01") + 29, 날짜 ("2011"))); 그런 다음 날짜를 인쇄하여 사용합니다. 이제는 내 날짜가 1970-01-01 1970-01-01 대신 2011 년 9 월입니다. 희망이 조금 있습니다. – ragebunny

1

당신은 당신의 코드를 평가하는 주요 장소에서 몇 위해서 var_dump 문을 사용해야합니다. 이렇게하면 형식을 포함하여 데이터가 어떻게 보이는지 정확히 알 수 있으므로 필요한 날짜 형식을 지정하는 방법을 파악할 수 있습니다.

관련 문제