2017-09-15 11 views
1

私は年が2017年であるとき、開始日と終了日を設定する。しかしとき15 - 10月 - 2016で開始日15 - 9月 - 2017の場合、私は正確な結果を得ますそれは作業とエラーが表示されていません。ここCodeIgniterの開始日と終了日の検証

$error = "End date can't be older than begin date "; 

が私のコードである

 $data['beginDate'] = $this->input->post('beginDate'); 
     $data['endDate'] = $this->input->post('endDate'); 

     if($data['endDate'] < $data['beginDate']){ 
      $error = "End date can't be older than begin date "; 
      $this->session->set_flashdata('error', $error); 
      redirect('/search'); 
     } 
     else{ 
      $this->load->model('personhistory'); 
      $data['rets'] = $this->personhistory->searchDetails(); 
      $data['sum'] = $this->personhistory->searchDetailsSum(); 
      $data['title'] = "Search Details"; 
      $this->load->view('search_results', $data); 
     } 

は、この問題を取り除くために任意の解決策はありmessage-? ...

+0

を使用することができます

技術的には、テスト/例の入力があるかについて明確にしてください。エラーの原因となる '$ data ['beginDate']'と '$ data ['endDate']'の正確な値は何ですか? –

+0

これらの値は、JQueryカレンダーで選択された日付です。 – user3311692

+0

タイムマシンはありますか?私はそうは思わなかった。 10月はいつも私のカレンダーの9月の後に来る。 –

答えて

0

PHPは、あなたの文字列が何であるかを知らない、との値がポストされたデータから来ている場合、それらは文字列です助けてください:

// These are strings 
$s1 = '15-October-2016'; 
$s2 = '15-September-2016'; 

代わりに、あなたはあなたのためにDateTimeオブジェクトを作成する必要があります比較

$d1 = new DateTime('15-October-2016'); 
$d2 = new DateTime('15-September-2016'); 

if($d1 < $d2) 
    echo 'First date comes before the second date'; 

if($d1 > $d2) 
    echo 'First date comes after the second date'; 

if($d1 == $d2) 
    echo 'First date and second date are the same'; 

このコードを試して、日付を変更すると、私は正しいことがわかります。

UPDATE:あなたものstrtotime

<?php 

$s1 = strtotime('15-October-2016'); 
$s2 = strtotime('15-September-2016'); 

if($s1 < $s2) 
    echo 'First date comes before the second date'; 

if($s1 > $s2) 
    echo 'First date comes after the second date'; 

if($s1 == $s2) 
    echo 'First date and second date are the same'; 
+0

私の間違いをお詫び申し上げます... 2番目の日付は** 1510年9月20日ではありません**、** 1511年9月-2017 ** 私は '日付が** 14-October-2016 **の代わりに** ** 10-October-20 ** **のコードがうまくいけば、どんな種類の問題か分かります。 @BrianGottier – user3311692

+0

私のコメントを読んだり、自分のコードを試したことがあるのか​​どうかわかりませんが、コードがうまくいかない理由を説明しました。これは、日付を文字列として比較しようとしているためです。私はあなたに2つの選択肢を提供し、両方があなたのために働くでしょう。最初のオプションはPHPのDateTimeクラスを使用し、もう1つのオプションはPHPのstrtotime関数を使用しています。あなたはどちらかを試しましたか?私の答えが良いことを認識できない場合、私はあなたを助け続ける理由がありません。コードを試し、必要に応じて変更してください。それはあなたのために働くことがわかります。 –

関連する問題