2017-12-01 6 views
-1

날짜를 비교하고 제품을 비교하는 간단한 코드가 있습니다. 8 월과 9 월을 제외한 모든 내 월 동안 작동합니다. 나는이 십여 번 갔고, 모든 것은 모든 달 동안 똑같이 보였지만 8 월과 9 월 날짜는 발견되지 않았고, 다른 날짜는 OK입니다.날짜 comparson 코드가 8 월과 9 월 날짜를 찾지 못했습니다.

불쌍한 코드를 사용하여 죄송합니다. 아직 초보자입니다. 사전에

덕분에

<?php 

//$ship_date = 20170420; 
//$ship_date = 20170520; 
//$ship_date = 20170620; 
//$ship_date = 20170720; 
//$ship_date = 20170820; 
//$ship_date = 20170920; 
//$ship_date = 20171020; 
//$ship_date = 20171120; 
$ship_date = 20171220; 

$apr = '1'; 
$may = '1'; 
$june = '1'; 
$july = '1'; 
$august = '1'; 
$september = '1'; 
$october = '1'; 
$nov = '1'; 
$decem = '1'; 

$valid = "Y"; 

$case_qty = 1; 

$apr_start = 20170401; 
$apr_end = 20170430; 
$may_start = 20170501; 
$may_end = 20170531; 
$june_start = 20170601; 
$june_end = 20170630; 
$july_start = 20170701; 
$july_end = 20170731; 
$augmonth_start = 20170801; 
$augmonth_stop = 20170831; 
$september_start = 20170901; 
$september_stop = 20170930; 
$october_start = 20171001; 
$october_end = 20171031; 
$nov_start = 20171101; 
$nov_end = 20171131; 
$decem_start = 20171201; 
$decem_end = 20171231; 
$jan_start = 20180101; 
$jan_end = 20180131; 
$feb_start = 20180201; 
$feb_end = 20180228; 
$mar_start = 20180301; 
$mar_end = 20180331; 

if ($valid == "Y") 
{ 

    if (($ship_date >= $apr_start) && ($ship_date <= $apr_end)) 
    { 
     echo "Sold apr<br />"; 

     $apr = $apr + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     //$apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $may_start) && ($ship_date <= $may_end)) 
    { 
     echo "Sold may<br />"; 

     $may = $may + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     //$may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $june_start) && ($ship_date <= $june_end)) 
    { 
     echo "Sold june<br />"; 

     $june = $june + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     //$june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $july_start) && ($ship_date <= $july_end)) 
    { 
     echo "Sold july<br />"; 

     $july = $july + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     //$july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $augmonth_start) && ($ship_date <= $augmonth_end)) 
    { 
     echo "Sold august <br />"; 

     $august = $august + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 

     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $september_start) && ($ship_date <= $september_end)) 
    { 
     echo "Sold sept <br />"; 

     $september = $september + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 

     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $october_start) && ($ship_date <= $october_end)) 
    { 
     echo "Sold oct<br />"; 

     $may = $october + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     //$october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $nov_start) && ($ship_date <= $nov_end)) 
    { 
     echo "Sold nov<br />"; 

     $nov = $nov + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     //$nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $decem_start) && ($ship_date <= $decem_end)) 
    { 
     echo "Sold decem<br />"; 

     $decem = $decem + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     //$decem = 0; 
    } elseif (($ship_date >= $jan_start) && ($ship_date <= $jan_end)) 
    { 
     echo "Sold jan<br />"; 

     $jan = $jan + $case_qty; 

     //$jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $feb_start) && ($ship_date <= $feb_end)) 
    { 
     echo "Sold feb<br />"; 

     $feb = $feb + $case_qty; 

     $jan = 0; 
     //$feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } elseif (($ship_date >= $mar_start) && ($ship_date <= $mar_end)) 
    { 
     echo "Sold mar<br />"; 

     $mar = $mar + $case_qty; 

     $jan = 0; 
     $feb = 0; 
     //$mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 
    } else 
    { 

     echo "No month selected!!!!!! " . $ship_date . "<br />"; 

     $jan = 0; 
     $feb = 0; 
     $mar = 0; 
     $apr = 0; 
     $may = 0; 
     $june = 0; 
     $july = 0; 
     $august = 0; 
     $september = 0; 
     $october = 0; 
     $nov = 0; 
     $decem = 0; 


    } 
} 
echo "Month Totals: " . $jan . " " . $feb . " " . $mar . " " . $apr . " " . $may . " " . $june . " " . $july . 
    " " . $august . " " . $september . " " . $october . " " . $nov . " " . $decem . "<br />"; 

?> 
+1

변수 정의에'_end' 대신'_stop'을 썼기 때문에 (런타임시 경고를 생성해야합니다). 게다가이 코드는 매우 반복적이며 미래의 증거는 아니라고 생각하지 않습니까? 데이터의 적절한 날짜 함수와 배열을 사용하여 이것을 다시 작성해야합니다. 이것은 정말로 추악합니다. –

+1

배열에 대해 배우고 싶을 것입니다 ... – iainn

+0

루프를 사용하여 이렇게하는 알고리즘을 작성하는 것이 좋습니다. 반복적으로 모든 12 개월을 수동으로 나열하는 것이 아닙니다. 또한 오타 오류를보다 쉽게 ​​방지 할 수 있습니다. – deceze

답변

1

이러한 변수가 있습니다

$augmonth_stop = 20170831; 
$september_stop = 20170930; 

을하지만 다른 뭔가를 확인하고 있습니다 :

($ship_date <= $augmonth_end) 
($ship_date <= $september_end) 

수정 하나 또는 다른과 코드가 작동합니다 .

그렇다면 strtotime()과 같은 PHP 내장 날짜 함수를 사용하거나 응용 프로그램에 따라 DateTime 클래스를 사용하는 것이 좋습니다.

+0

나는 그것이 어리석은 실수라는 것을 알았지 만 나는 나무 숲을 볼 수 없었다. 나는 내가 잘못 읽었을 때마다 내가 그것을 몇 번이나 읽었는지 말할 수 없다! 나를 도와 주셔서 감사합니다. –

+0

오류가 해제 되었습니까? 코드를 실행하여 꽤 빨리 발견했습니다. 'PHP Notice : 정의되지 않은 변수 : augmonth_end in date-test.php on line 127 PHP 공지 사항 : 정의되지 않은 변수 : september_end in date-test.php 145' – Samsquanch

+0

웃기는 방금 strtotime 함수에 패치를 붙 였지만 같은 문제가있었습니다. , 어리석은! –