HTML and PHP, editing birthday
If I store birthday as 1990-01-01
When a user edits his profile, how do i show his current birthday?
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$days" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_days">
<option selected="selected" value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
<option value="10">10</option>
<option value="11">11</option>
<option value="12">12</option>
<option value="13">13</option>
<option value="14">14</option>
<option value="15">15</option>
<option value="16">16</option>
<option value="17">17</option>
<option value="18">18</option>
<option value="19">19</option>
<option value="20">20</option>
<option value="21">21</option>
<option value="22">22</option>
<option value="23">23</option>
<option value="24">24</option>
<option value="25">25</option>
<option value="26">26</option>
<option value="27">27</option>
<option value="28">28</option>
<option value="29">29</option>
<option value="30">30</option>
<option value="31">31</option>
</select>
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$months" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_months" style="width:100px;">
<option selected="selected" value="1">januar</option>
<option value="2">februar</option>
<option value="3">marts</option>
<option value="4">开发者_开发百科;april</option>
<option value="5">maj</option>
<option value="6">juni</option>
<option value="7">juli</option>
<option value="8">august</option>
<option value="9">september</option>
<option value="10">oktober</option>
<option value="11">november</option>
<option value="12">december</option>
</select>
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$years" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_years">
<option selected="selected" value="1950">1950</option>
<option value="1951">1951</option>
<option value="1952">1952</option>
<option value="1953">1953</option>
<option value="1954">1954</option>
<option value="1955">1955</option>
<option value="1956">1956</option>
<option value="1957">1957</option>
<option value="1958">1958</option>
<option value="1959">1959</option>
<option value="1960">1960</option>
<option value="1961">1961</option>
<option value="1962">1962</option>
<option value="1963">1963</option>
<option value="1964">1964</option>
<option value="1965">1965</option>
<option value="1966">1966</option>
<option value="1967">1967</option>
<option value="1968">1968</option>
<option value="1969">1969</option>
<option value="1970">1970</option>
<option value="1971">1971</option>
<option value="1972">1972</option>
<option value="1973">1973</option>
<option value="1974">1974</option>
<option value="1975">1975</option>
<option value="1976">1976</option>
<option value="1977">1977</option>
<option value="1978">1978</option>
<option value="1979">1979</option>
<option value="1980">1980</option>
<option value="1981">1981</option>
<option value="1982">1982</option>
<option value="1983">1983</option>
<option value="1984">1984</option>
<option value="1985">1985</option>
<option value="1986">1986</option>
<option value="1987">1987</option>
<option value="1988">1988</option>
<option value="1989">1989</option>
<option value="1990">1990</option>
<option value="1991">1991</option>
<option value="1992">1992</option>
<option value="1993">1993</option>
<option value="1994">1994</option>
<option value="1995">1995</option>
</select>
So it has the user's birthday as selected=.
Its stored in the database and i get out the full birthday like this:
<?php echo $v["birthday"]; ?>
Courtesy to “ Richard Fearn” and “Karem”, I have completed the month and year combo box. Full source code is below:
<?php
$month = date("n"); //without leading zero(o)
$year = date("Y"); //four digit format
$st_year = "2010"; //Starting Year
$month_names = array("January", "February", "March","April", "May", "June", "July", "August", "September", "October", "November", "December");
?>
<form name="Month_Year" id="Month_Year" action="<?php $SITE['REQURI'] ?>" method="post">
<select name="month" id="month">
<?php
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
?>
</select>
<select name="year" id="year">
<?php
for ($i=$st_year; $i<=$year; $i++) {
echo "<option ";
if ($i == $year) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">$i</option>\n";
}
?>
</select>
<input type="submit" name="submit" id="submit" value="Submit" />
</form>
<?php
$month = $_POST['month'];
$year = $_POST['year'];
$final_val = $month ."-". $year ;
echo $final_val;
?>
If you use a for
loop to generate the <option>
elements, such as:
for ($i=1; $i<=31; $i++) {
echo "<option value=\"$i\">$i</option>\n";
}
Then you can just modify this slightly to insert the selected
attribute on the appropriate element:
// Assuming $day is the user's day of birth
for ($i=1; $i<=31; $i++) {
echo "<option ";
if ($i == $day) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">$i</option>\n";
}
You would use similar loops for the month and year. In the case of months, where you don't want to output a number but want the month name, you can store the names in an array and index into that array in the loop:
$month_names = array("Jan", "Feb", "Mar", ...);
for ($i=1; $i<=12; $i++) {
echo "<option ";
if ($i == $month) {
echo "selected=\"selected\" ";
}
echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
To get the day/month/year from your yyyy-mm-dd
date of birth strings, use the explode
function, as shown by Sabeen Malik.
Instead of using hardcoded HTML, print the combo box with a for loop and based on what the user has selected, print "selected" in the relevant "option"
to get the date parts you can do something like:
list($year , $month , $day) = explode("-" , $dob);
I thought I would add my method of doing this as an answer. Maybe it will be useful to someone.
This uses an abbreviated months array.
list() idea from Sabeen.
<?php
·
·
·
list( $dob['year'], $dob['month'], $dob['day'] ) = explode( "-", $user['birthday'] );
$user['dob'] = $dob;
?>
<select id="dob-day" name="dob-day">
<?php
foreach( range(1, 31) as $day )
printf( "<option%s>$day</option>", $day == $user['dob']['day'] ? ' selected' : '' );
?>
</select>
<select id="dob-month" name="dob-month">
<?php
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
foreach( $months as $key => $month )
printf( "<option%s>$month</option>", $key + 1 == $user['dob']['month'] ? ' selected' : '' );
?>
</select>
<select id="dob-year" name="dob-year">
<?php
foreach( range( date('Y'), date('Y') - 105 ) as $year )
printf( "<option%s>$year</option>", $year == $user['dob']['year'] ? ' selected' : '' );
?>
</select>
?>
精彩评论