Значи не ти трябват тия три таблици day, month и year. Тези select можеш да ги изкараш примерно така:
<?php
$months = array(1 => "Януари", "Февруари", "Март", "Април", "Май", "Юни", "Юли", "Август", "Септември", "Октомври", "Ноември", "Декември");
$start_year = 1920;
$end_year = date("Y");
?>
Age <select name="day">
<?php
for($i = 1; $i <= 31; $i++){
print '<option value="' . $i . '">' . $i . "</option>\n";
}
?>
</select>
<select name="month">
<?php
foreach($months as $key => $month) {
print '<option value="' . $key . '">' . $month . "</option>\n";
}
?>
</select>
<select name="year">
<?php
for($i = $end_year; $i >= $start_year; $i--) {
print '<option value="' . $i . '">' . $i . "</option>\n";
}
?>
</select><br />
Това може да не е най-добрия начин, но това ми хрумна на момента.
След като изкарваш вече така дните, месеците и годините значи вече спокойно можеш да изтриеш трите таблици day, month и year.
Следващата стъпка е в таблицта users да изтриеш колоните month, day, year. След като ги изтриеш вече за потребителя не записваш датата в никоя колона. Затова трябва да създадеш една.
Създаваш я така:
ALTER TABLE users ADD birth_date date
И ако работиш по същата база данни от предната тема (dandl). Тогава тя трябва да изглежда така:
city, form, gender1 и users.
А таблицата users трябва да ти изглежда така:
id, username, password, email, gender1, form, city, birth_date
Както виждаш и в таблиците си се лишил от три излишни таблици и в таблица users си заменил 3 полета за едно.
Сега вече датата на раждане ти се записва в таблицата във вида YYYY-MM-DD. И тук идва въпросът как да я запишеш така? Вместо както досега си вкарвал трите стойности по отделно сега ще го направиш така:
$birth_date = date("Y-m-d", mktime(0, 0, 0, $month, $day, $year));
...
....
....
$result = mysq_query("INSERT INTO users values('', $username, $password, $email, $gender1, $form, $city, $birth_date)");
Като тук променливите $month, $day, $year, $username, $passowrd, $email, $gender1, $form, $city ти идват от формата за регистрация. Т.е преди това си направил нещо от рода на това:
$username = $_POST['username'];
...
Като това не е защитено по никакъв начин.
И ето готово. Вече дата ти се записва в базата данни по този начин. След като си я записал вече изкарването на годините става изключително лесно само с една заявка към базата данни:
$result = mysql_query("SELECT DATE_FORMAT( FROM_DAYS( TO_DAYS( NOW( ) ) - TO_DAYS('birth_date' ) ) , '%Y' ) +0 AS age FROM users") or die("ERROR");
while($row = mysql_fetch_array($result)) {
echo $row['age'].'<br />';
}
birth_date - това е новото поле, което създаде по-нагоре в обяснението.
По-добре не мога да го обясня.