2017-12-01 16 views
-1

日付とカウントの製品を比較するための簡単なコードがここにありますが、8月と9月を除くすべての月に有効です。私はこれを何十回も行ってきましたが、すべての月が同じように見えますが、8月と9月の日付は見つかりませんでした。他の日付はOKです。日付コンパルコーンコードが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通知:未定義変数:日付test.phpのseptember_end行145' – Samsquanch

+0

面白い私はちょうどstrtotime関数にパッチを当てましたが、私は同じ問題を抱えていました、愚かである! –

関連する問題