0

PHP でコードを記述して、うるう年に適した選択オプション タグを有効にしようとしています。たとえば、年を選択すると、それがうるう年かどうかがチェックされ、12 か月の別の選択オプション タグが先行する日のプルダウン メニュー (選択オプション タグ) が表示されます。PHP コードは HTML に埋め込まれています。以下は私の失敗した試みです(私はPHPが初めてです):

<form method="post">    
<select name="year">
 <option value="" selected>Pick a year</option><!--Default-->
 <option value="2016">2016</option>
 <option value="2017">2017</option>
 <option value="2018">2018</option>
 <option value="2019">2019</option>
 <option value="2020">2020</option>
</select>
<select name="month">
 <option value="" selected>Pick a month</option><!--Default-->
 <!--Show all 12 months-->  
 <?php for( $i = 1; $i <= 12; $i++ ): ?>
 <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
 <?php endfor; ?>
</select>
<select name="day">
 <option value="" selected>Pick a day</option><!--Default-->
 <!--Show dates depending on the conditions below:-->
 <?php
 if ( $month == 1 || 3 || 5 || 7 || 8 || 10 || 12 )
 {
    //Show dates until 31
    for ( $i = 1; $i <= 31; $i++ )
    {
 ?>
 <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
 <?php
    }
 }
 elseif ( $month == 2 )
 {
    //Leap year
    if ( $year != "" && $year % 4 == 0 && $year % 100 == 0 && $year % 400 == 0 )
    {
        //Show dates until 29
        for ( $i = 1; $i <= 29; $i++ )
        {
            ?>
            <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <?php
        }
    }
    //Regular year (Non-leap year)
    else 
    {
        //Show dates until 28
        for ( $i = 1; $i <= 28; $i++ )
        {
            ?>
            <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
            <?php
        }
     }
}
elseif ( $month == 4 || 6 || 9 || 11 )
{
    //Show dates until 30
    for ( $i = 1; $i <= 30; $i++ )
    {
        ?>
        <option value="<?php echo $i; ?>"><?php echo $i; ?></option>
        <?php
    }
 }
?>
</select>
<input type="submit" value="submit">
</form>

ノート:

上記は不完全なコードであり、機能しないことを理解しています。その上、選択タグから$yearorを定義する方法がわかりません。私はこのようにする必要がありますか?もしそうなら、どこに置くべきですか?$month$day

<?php 
if( $_SERVER["REQUEST_METHOD"] == "POST" )    
{
    $year = $_POST['year'];
    $month = $_POST['month'];
    $day = $_POST['day'];

    //The rest of the php code?
}
?>

forできれば、月や日のようにループを使用して年を表示したくありません。今回は手動で行いたいと思います(申し訳ありませんが、forループを使用することをお勧めする場合は、アドバイスをいただければ幸いです)。

空のデフォルト値がカウントされるのを回避したいので$year =! ""、うるう年の 2 月ブロックに書きました。if

私はあなたの提案と修正を暖かく歓迎します、私を助けてください:)

前もって感謝します!

4

2 に答える 2