2011-12-19 3 views
0

MySQL 데이터베이스에 날짜 필드가 있고 PHP 폼에 세 개의 필드 (yyyy-mm-dd)가 있습니다. 사용자는 완전한 날짜를 설정하지만 "yyyy-mm"또는 "yyyy"날짜를 설정할 수도 있습니다. MySQL에서는 모든 것이 올바르게 진행됩니다. 사용자가 연도 만 설정하면 "yyyy-00-00"이 저장됩니다. 따라서 한 달에 00 일과 00 개월이 없기 때문에 "NULL"일 또는 월처럼 작동합니다.PHP 날짜에서 일 또는 월 무시 허용

그러나 날짜를 "2012-00-00"이면 th date_format PHP 함수를 사용하여 사용자에게 다시 표시하려고 할 때 "2011-12-30"이 표시됩니다.

어떻게하면 쉽게이 동작을 처리 할 수 ​​있습니까 (데이터베이스에서 have_day 및 has_month 열을 사용하지 않습니까)?

미리 감사드립니다.

+2

사용자에게 무엇을 표시 하시겠습니까? – dm03514

+0

완료되면 전체 날짜이며, 날짜가 "yyyy-00-00"인 경우에만 연도가 표시되고 날짜가 "yyyy-mm-00"인 경우 연도와 월이 표시됩니다. –

답변

2

귀하의 케이스는 드뭅니다. DATE 클래스를 사용하여 날짜를 형식화 할 수 없습니다. 날짜를 리터럴 문자열로 처리하십시오.

if (strstr($date_returned,'-00-00')) 
{ 
    echo str_replace('-00-00','',$date_returned).'-00-00'; 
} 
+0

좋은 아이디어! 이 같은 것을 어떻게 생각하십니까? 스위치 (strpos ($ date, '00')) { catch 0 : // 오류 중단; 사례 5 : // 연도 만 휴식; 사례 8 : // 연도와 월 만 휴식; 기본값 : // 완료 날짜 휴식; } –

+0

귀하의 의견과 같은 솔루션을 구현해야하는 경우 더 나은 솔루션을 찾기 위해 접근 방식을 변경해야 할 때가 있습니다. 당신이하는 일은 자연스럽지 않고 대부분의 경우 코드를 다시 생각해 보는 것이 좋습니다. – Stewie

+0

그게 왜 나쁜 해결책이고 다른 방법으로 그것을 수행하는 방법입니까? –

관련 문제