Self Coder
Self Coder

Reputation: 33

current years in dropdown select box

I have this function for print current year in select box but option value not equal with option text. i.e :current years in selected value is 2013 but html text output is 2012. how to fix this?

PHP:

<select name="year">
    <?php
    for($i=date("Y")-5;$i<=date("Y");$i++) {
        $sel = ($i == date('Y')) ? 'selected' : '';
        echo "<option value=".$i." ".$sel.">".date("Y", mktime(0,0,0,0,1,$i))."</option>";
    }
    ?>
</select>

Output:

<select name="year">
    <option value=2008 >2007</option>
    <option value=2009 >2008</option>
    <option value=2010 >2009</option>
    <option value=2011 >2010</option>
    <option value=2012 >2011</option>
    <option value=2013 selected>2012</option>
</select>

Upvotes: 0

Views: 5001

Answers (3)

santhosh Reddy
santhosh Reddy

Reputation: 24

<?php
                $yearArray = range(2015, 2050);
                    ?>
                    Year
                    <select name="year" id="year">
                    <option value="">Select Year</option>
                    <?php
                    foreach ($yearArray as $year) {

                    $selected = ($year == 2017) ? 'selected' : '';
                    echo '<option '.$selected.' value="'.$year.'">'.$year.'</option>';
                    }
                    ?>
                    </select>

Upvotes: 0

ಠ_ಠ
ಠ_ಠ

Reputation: 1235

Maybe not a good wayو But just Add +1 for $i:

<select name="year">
    <?php
    for($i=date("Y")-5;$i<=date("Y");$i++) {
        $sel = ($i == date('Y')) ? 'selected' : '';
        echo "<option value=".$i." ".$sel.">".date("Y", mktime(0,0,0,0,1,$i+1))."</option>"; // change This Line
    }
    ?>
</select>

Online Demo Here

Upvotes: 3

Shafeeque
Shafeeque

Reputation: 2069

Problem with your value printing

<select name="year">
    <?php
    for($i=date("Y")-5;$i<=date("Y");$i++) {
        $sel = ($i == date('Y')) ? 'selected' : '';
        echo "<option value=".$i." ".$sel.">".$i."</option>";  // here I have changed      
    }
    ?>
</select>

Upvotes: 0

Related Questions