日付を選択するリストから、日付の妥当性を調べる場合、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>
以下が結果表示です。 日付の妥当性がチェックされ、その判定結果が得られます。 上の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を使っている場合ですと、下の書き方のほうが、デザインチェックやコードチェックができるので、下のほうが良いかと・・・。