开发者

HTML and PHP, editing birthday

开发者 https://www.devze.com 2023-01-14 16:25 出处:网络
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_

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>
?>
0

精彩评论

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

关注公众号