noshi’s diary

ゲームの事、映画やドラマ、思いついた事、プログラミングの事、雑記的なことを書いています

php 日付かどうかチェックする

日付を選択するリストから、日付の妥当性を調べる場合、checkdate()関数を使う方法があります。 たとえば、2月30日は正しくない日付として、falseが返され、2月28日は正しい日付としてtrueが返されます。

<?php
//データを受け取る(年/月/日)
$yyyy = @$_POST["yyyy"];
$mm = @$_POST["mm"];
$dd = @$_POST["dd"];
//正しい日付かどうかチェック
if(checkdate($mm,$dd,$yyyy)){
echo "<p>$yyyy/$mm/$dd"."は正しい日付です";
}else{
echo "<p>$yyyy/$mm/$dd"."は正しくない日付です";
}
?>
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?> ">
<table>
<tr>
<td>
<select name="yyyy">
<?php
//年
for($i = 2013; $i <=2020; $i++){
echo "<option>$i";
}
echo "</select>年";
//月
echo "<select name=\"mm\">";
for($i = 1; $i <=12; $i++){
echo "<option>$i";
}
echo "</select>月";
//日
echo "<select name=\"dd\">";
for($i = 1; $i <=31; $i++){
echo "<option>$i";
}
echo "</select>日";
?>
</td>
<td><input type="submit" value="送信" name="sub1" /></td>
</tr>
</table>
</form>

以下が結果表示です。 日付の妥当性がチェックされ、その判定結果が得られます。 chkdata.gif 上のhtmlの別の書き方として、次のようにHTMLタグをコーディングしてみました。 こちらも通常どおりに表示されます。

<form method="post" action="<?php echo $_SERVER["PHP_SELF"]?> ">
<table>
<tr>
<td>
<select name="yyyy">
<?php
//年
for($i = 2013; $i <=2020; $i++){
echo "<option>$i";
}?>
</select>年
<select name="mm">
<?php
for($i = 1; $i <=12; $i++){
echo "<option>$i";
}?>
</select>月
<select name="dd">
<?php
for($i = 1; $i <=31; $i++){
echo "<option>$i";
}?>
</select>日
</td>
<td><input type="submit" value="送信" name="sub1" /></td>
</tr>
</table>
</form>

どっちの書き方がいいかは、慣れ次第と思われますが、DreamWeaverを使っている場合ですと、下の書き方のほうが、デザインチェックやコードチェックができるので、下のほうが良いかと・・・。