tags:

views:

36

answers:

2

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"]; ?>
A: 

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);
Sabeen Malik
what is $dob? the full birthday? And do i use this with Richard´s answer?
Karem
oh you added more info the question. so replace $dob with $v["birthday"] and use Richards sample code to do the rest of combo box building.
Sabeen Malik
`$dob` would be your `1990-01-01` date of birth string. Then yes, use a `for` loop as shown in my answer to output all the elements, with `selected` on the appropriate one.
Richard Fearn
OK just tried this new method, it works great on $day but as you can see in the HTML i have, at month it has 1-12 at value but then january, february, and so.. with names. How should i do that by making using a for loop?
Karem
+1  A: 

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.

Richard Fearn
but i dont have it stored like that so the day is in one field, $day in one, i have it like this: 1992-01-01, so the day is 01(the last of that)
Karem
OK just tried this new method, it works great on $day but as you can see in the HTML i have, at month it has 1-12 at value but then january, february, and so.. with names. How should i do that by making using a for loop?
Karem
Answer updated to describe how to output month names instead of numbers.
Richard Fearn