开发者

in html <select>, php code to add <option>s

开发者 https://www.devze.com 2023-04-01 18:05 出处:网络
I would like to add the years 2011-2001 in my drop-down-box (2012-2002 in next year, etc...). Since I don\'t want to change my code I thought to do it in php.

I would like to add the years 2011-2001 in my drop-down-box (2012-2002 in next year, etc...).

Since I don't want to change my code I thought to do it in php.

I had it like this which worked:

<select name="purchaseYear" size="1">
   <?echo "<option>" . date("Y") . "</option>";?>
   <?echo "<option>" . date("Y") - 1 . "</option>";?>
   ...
</select>

Now I w开发者_JS百科ant to realise it with a for-loop and tried it like this:

<select name="purchaseYear" size="1">
    <?
    for ($i = 0; $i <= 9; $i++) {
       echo "<option>" . date("Y") - $i . "</option>";
    }
    ?>
</select>

Which gave me an empty drop-down-box.

What do I need to change? And why didn't it work?


Try this:

<select name="purchaseYear" size="1">

<?php for ($i = 0; $i <= 9; $i++)
{
    $date = date("Y") - $i;
    echo "<option value='$date'>" . $date . "</option>";
}


?>

Just so you know: the issue was with Operator Precedence. You could also add parenthesis like this to solve the problem:

<select name="purchaseYear" size="1">

<?php for ($i = 0; $i <= 9; $i++)
{
    echo "<option>" . (date("Y") - $i) . "</option>";
}


?>


try this way

<select name="purchaseYear" size="1">
<? for ($i = 0; $i <= 9; $i++)
    {
      echo "<option>" . (date("Y") - $i) . "</option>";
    }?>

because you do the arithmetic operation with concatenating with the string that why you have to put arithmetic operation into the () bracket

or you can first store the year in any another variable and the pass that variable into this echo statement


<select name="purchaseYear" size="1">   
    <?php
    for ($i = 0; $i <= 9; $i++)
    {
        ?>
        <option><?= date("Y") - $i ?></option>
        <?php
    }
    ?>
</select>

This worked for me!

I try to avoid putting HTML into echo statements if I can help it.


Or you can scrap the calculation in the loop body and perform it during setup:

<select name="purchaseYear" size="1">
<?php
    for ($i = date('Y'), $j = ($i - 10); $i >= $j; $i--) {
        echo '<option>', $i, '</option>', PHP_EOL;
    }
?>
</select>


This:

echo "<option>" . date("Y") - $i . "</option>";

becomes this:

echo "<option>" . (date("Y") - $i) . "</option>";
0

精彩评论

暂无评论...
验证码 换一张
取 消