Jump to content

birth year


searls03

Recommended Posts

@Pikachu - This may be nitpicking, but PHP's date function is EXTREMELY slow. When you put it in a for loop, it will be executed at the start of each iteration, to verify the functions return value hasn't changed. Instead, use this

 

$year = date('Y');
for( $i = 1900; $i <= $year; $i++ ) // ... 

Link to comment
https://forums.phpfreaks.com/topic/243015-birth-year/#findComment-1248226
Share on other sites

nope came up with a different select box for each year.

 

So re-arrange to figure out why it is not working...that is like all of coding, trial and error till you get it right or give up.

 

<?php 
$dt = date('Y', strtotime( '- 1 year'));

echo '<select name="birthyear">';

for( $i = 1900; $i <= $dt; $i++ ) {
    echo '<option value="'.$i.'">';
    echo $i;
    echo '</option>';
}

echo '</select>';
?>

 

Link to comment
https://forums.phpfreaks.com/topic/243015-birth-year/#findComment-1248230
Share on other sites

@Pikachu - This may be nitpicking, but PHP's date function is EXTREMELY slow. When you put it in a for loop, it will be executed at the start of each iteration, to verify the functions return value hasn't changed. Instead, use this

 

$year = date('Y');
for( $i = 1900; $i <= $year; $i++ ) // ... 

 

No, you're absolutely right. I should have assigned the value to a variable first then used the variable.

Link to comment
https://forums.phpfreaks.com/topic/243015-birth-year/#findComment-1248304
Share on other sites

You should put the years in reverse order. 90% of your users are going to have a birth year in the last 55 years rather than the first 55 years, and that is pretty much an industry standard in my opinion. Also, the code provided previously would exclude the current year.

 

Here is my suggestion.

$thisYear = date('Y');
$firstYear = 1900;

echo '<select name="birthyear">';

for($year=$thisYear; $year>=$firstYear; $year++)
{
    echo "<option value=\"{$year}\">{$year}</option>\n";
}

echo '</select>';

Link to comment
https://forums.phpfreaks.com/topic/243015-birth-year/#findComment-1248308
Share on other sites

I'm sure you meant to decrement $year, rather than increment it . . .

 

Yes I did.

 

It may even be easier to use range() with a foreach() loop and still end up with the same result.

 

$years = range( date('Y'), 1900 );

Interesting, I would have thought that using range() would choke on that since the larger number is given as the first parameter and the step value (the optional third parameter) defaults to "1". I was surprised that it was "smart" enough to use a -1 step value.

Link to comment
https://forums.phpfreaks.com/topic/243015-birth-year/#findComment-1248333
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.