2012-03-31 14 views
1

こんにちは私のPHPスクリプトには2つのテキストボックスがあります(1つは月、1つは年)。ユーザーが送信ボタンを押すと、日付が期限切れになったかどうかを確認するために入力を確認する必要があります。ここで私が作ったコードはありますが、それは何もしていないようです。日付が期限切れになっていないかチェックする方法(PHP)

$input_date = "$_POST['m']/$_POST['y']"; 

$todays_date = date("MM/YY"); 

if ($input_date < $todays_date) 
{ 
    print '<p class = "error">Date has elapsed</p>'; 
} 

注:日付フォーマットはMM/YYYYです(テキストボックス 'M' のMMとtetxboxが含まれている 'Y' はYYYYが含まれています)

+4

'04/2012'のような文字列を' <'演算子と比較することはできません。この場合は、「04/2012」と「Apr/Apr/20122012」です。 – JJJ

+1

PHPで日付を比較する方法を具体的に扱うSOに関する1,000万件の質問の1つを考えましたか?右上の検索ボックスはあなたの友人です。 – rdlowrey

答えて

5

あなたはを使用することができますまたはstrtotime()

$input_time = mktime(0,0,0,$_POST['m']+1,0,$_POST['y']); 

if ($input_time < time()){ 
    print '<p class = "error">Date has elapsed</p>'; 

} 
+0

@jeroenありがとう、なぜ「31」ですか? – safarov

+0

マニュアル「12より大きい値は、翌年の適切な月を参照してください。ですから、 '$ _POST ['m'] + 1'を使うと、次の月の最初の秒のタイムスタンプを生成しています。 – jeroen

+0

@ jeroen。今度は – safarov

2

おそらく、このようのstrtotime関数を使用できます。

$input_date = "$_POST['m']/$_POST['y']"; 
$todays_date = date("m/Y"); 

if (strtotime($input_date) < strtotime($todays_date)){ 
print '<p class = "error">Date has elapsed</p>'; 

} 

あなたはのstrtotimeが処理できるフォーマットの種類をここで読むことができます。http://php.net/manual/en/function.strtotime.php

+2

'MM/YY'は' AprApr/20122012'のようなものを与えるでしょう - それはちょうど 'M/Y'でなければなりません。 – Bojangles

+0

正解ですが、正しい書式のために実際にはm/Yにする必要があります。 – jonaz

+0

これはうまくいきません – Matt9Atkins

2

私はあなたが引用符でそれらの$ _POST変数を置くことができることを信じていません。たとえば、次のコードがクラッシュします:

代わり
<?php 
$foo = array("foo" => "bar"); 
$input = "$foo['foo']"; 
print $input; 
?> 

、また

$input_date = $_POST['m'] . "/" . $_POST['y']; 

を試してみてください、あなたは、月と年を逆にすることを検討してください。現在のスキームでは、01/13は12/12より前に来る。

関連する問題