if($fieldid == 'birthday') {
if($field['unchangeable'] && !empty($space[$fieldid])) {
return '<span>'.$space['birthyear'].'-'.$space['birthmonth'].'-'.$space['birthday'].'</span>';
}
$birthyeayhtml = '';
$nowy = dgmdate($_G['timestamp'], 'Y');
for ($i=0; $i<100; $i++) {
$they = $nowy - $i;
$selectstr = $they == $space['birthyear']?' selected':'';
$birthyeayhtml .= "<option value=\"$they\"$selectstr>$they</option>";
}
$birthmonthhtml = '';
for ($i=1; $i<13; $i++) {
$selectstr = $i == $space['birthmonth']?' selected':'';
$birthmonthhtml .= "<option value=\"$i\"$selectstr>$i</option>";
}
$birthdayhtml = '';
if(empty($space['birthmonth']) || in_array($space['birthmonth'], array(1, 3, 5, 7, 8, 10, 12))) {
$days = 31;
} elseif(in_array($space['birthmonth'], array(4, 6, 9, 11))) {
$days = 30;
} elseif($space['birthyear'] && (($space['birthyear'] % 400 == 0) || ($space['birthyear'] % 4 == 0 && $space['birthyear'] % 400 != 0))) {
$days = 29;
} else {
$days = 28;
}
for ($i=1; $i<=$days; $i++) {
$selectstr = $i == $space['birthday']?' selected':'';
$birthdayhtml .= "<option value=\"$i\"$selectstr>$i</option>";
}
$html = '<select name="birthyear" id="birthyear" class="ps" οnchange="showbirthday();" tabindex="1">'
.'<option value="">'.lang('space', 'year').'</option>'
.$birthyeayhtml
.'</select>'
.' '
.'<select name="birthmonth" id="birthmonth" class="ps" οnchange="showbirthday();" tabindex="1">'
.'<option value="">'.lang('space', 'month').'</option>'
.$birthmonthhtml
.'</select>'
.' '
.'<select name="birthday" id="birthday" class="ps" tabindex="1">'
.'<option value="">'.lang('space', 'day').'</option>'
.$birthdayhtml
.'</select>';
}
discuz用户给我们提供了三十多项选择还有八个自定义的栏目类型,但是我们平常需要设置某项栏目为时间类型,类似于生日的填写方式,但是discuz没有给我们提供这样的类型,生日在数据表pre_common_member_profile数据表里面保存着,
我们可以看到生日是保存在三个不同的字段里面的
而source/function/function_profile文件里面包含着日期类型的实现(上面的代码)
只需要把字段名给换了,那么这个字段就是和生日类型一样了
但是下面需要解决三个问题
1.给每个时间栏目添加成三个字段
2.并且在插入数据时是分开插入的
3.或者是插入数据的时候组合成一个字符串