discuz解决栏目时间类型问题
2014-03-03 12:26
253 查看
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" onchange="showbirthday();" tabindex="1">'
.'<option value="">'.lang('space', 'year').'</option>'
.$birthyeayhtml
.'</select>'
.' '
.'<select name="birthmonth" id="birthmonth" class="ps" onchange="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.或者是插入数据的时候组合成一个字符串
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" onchange="showbirthday();" tabindex="1">'
.'<option value="">'.lang('space', 'year').'</option>'
.$birthyeayhtml
.'</select>'
.' '
.'<select name="birthmonth" id="birthmonth" class="ps" onchange="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.或者是插入数据的时候组合成一个字符串
相关文章推荐
- 解决mybatis查询日期时间数据得到long类型数据的问题
- 解决mybatis查询日期时间数据得到long类型数据的问题
- 解决axis2处理java.util.Date类型对象时丢弃时间部分的问题
- mysql处理varchar类型的between和and的时间问题少一天解决;
- 解决mybatis查询日期时间数据得到long类型数据的问题
- webapi datetime类型序列化成json带T且时间不对问题的解决
- js解决通过json传来的timestamp类型时间的显示问题
- 注解解决——解析date类型生成毫秒时间戳的问题
- 一个比较愚蠢的办法,解决excel表,关于导出时间类型转换成QString的问题
- iOS中使用int类型会出现的问题和解决办法
- SpringMVC注解@initbinder解决类型转换问题
- linux下如何解决jvm执行取得的时间和系统时间不一致的问题
- MOSS 2010 Content Type(内容类型)开发中的一个问题及其解决方法
- JsonFormat注解转换时间错误问题解决方案
- access中,有无将文本类型的数据格式转化成数值型的函数?(解决 order by 的非数字排序问题)
- 实际遭遇并解决:类型“ASP.global_asax”同时存在的问题
- Linq中字段数据类型转换问题(Linq to entity,LINQ to Entities 不识别方法"System.String ToString()"问题解决)
- AppFuse中日期时间(Date,Timestamp,Time)类型问题
- SpringMVC 映射Date类型时的问题,及解决
- 终于知道递归解决什么样的问题了,指数级问题(或者说无法简单的用for循环就能完成的问题)。想通了为啥图的优先和广度优先搜索的时间复杂度是o(n+e)了,而且一分不差。