tags:

views:

99

answers:

3

Hello. So in my community I really want a birthday in the profiles, but I don't know how to do it.

What I want to do is in the profiles theirs e.g "16" years old" if he chose in his settings: 1994-01-01, so like it counts out how old he is from the birthday he pickd in his settings.

How should i do this? I started out with 3 select´s, days, months & years.

                    <select name="days" id="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="months" id="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="years" id="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>

What should i do know? How should i store them in the "birthday" field just like this: days/months/years? Is there a specific way to do this, so you can count the age later? How do you count the age..

Thank you!

+6  A: 

If you want to calculate an age given you have when they were born, you can simply do (PHP 5.3+):

$birth = new DateTime("1986-12-02");
$now = new DateTime();
$age = $now->diff($birth)->format("%y");
echo $age; //23
Artefacto
Ok and should i store the birthday like that yyyy-mm-dd ?
Karem
@Karem Yes, that's one valid possibility.
Artefacto
@Karem: If you're storing the birthday in a database, I would tend to store it as a datetime object (or whatever equivalent your database supports). There are various advantages to this: easier to interact with dates in your SQL, improved efficiency, no need to guess at the string format, no confusion over if it is yyyy-mm-dd or yyyy-dd-mm.
Brian
A: 

for counting the date difference..

+2  A: 

Here is a solution that works with php versions below 5.3 (most hosts still use versions below):

<?php
list($year, $month, $day) = explode('-', $date);

$year = date('Y') - $year;
$month = date('m') - $month;
$day = date('d') - $day;

if ($month < 0 || ($month == 0 && $day < 0)) // Have we had a birth this year?
    $year--;

echo 'Age is ' . $year;

This requires the format to be yyyy-mm-dd. However, this is easily changed with the use of strtotime if anyone wants.

alexn