公告:分类目录网(www.flml.net)为广大站长提供免费收录网站服务(违法站勿扰),快审10元/站,永久收录!合作QQ:405593121。

快速审核,网站广告合作请联系我们
新站提交
  • 网站:211337
  • 待审:220
  • 小程序:53
  • 文章:2653

yzmcms自定义字段时,如果自定义一个单选框字段,备选选项,将以标题存储在数据库中。

例如:如果做个模板站,新建个字段叫 模板颜色{mbcolor},对应的单选框有:红色、绿色、蓝色等10种颜色,那么在每篇文章中,mbcolor字段内容将是红色,或蓝色,这种varchar型的文本。

当数据量过大时,前端利用这些信息筛选时,效率就会明显下降。

那么,如何优化查询效率,其实很简单,让mbcolor使用数字来存储颜色。即红色就存1,绿色就存成2..

然后将mbcolor字段的字段类型修改成数值/布尔/选择类型,根据具体的可以变动,并设置成索引。

那么,一串数字,前台调用和后台录入,不可能记录每个颜色对应的数值,怎么办如何录入?

接下来简单改造即可。

让系统单选框中选择红色,自动向数据库存储为数字1,等等,操作方法如下:

1、打开文件 /yzmphp/core/class/form.class.php,将单选框的函数修改成如下:

/**

* 单选框

* @param $name name

* @param $val 默认选中值 如:1

* @param $array 一维数组 如:array('交易成功', '交易失败', '交易结果未知');

*/

public static function radio($name, $val = '', $array = array()) {

$string = '';

foreach($array as $value) {

 

$tmpstr=explode('::',$value,2);

$value=$tmpstr[0];

$vname=empty($tmpstr[1])?$value:$tmpstr[1];

 

 

$checked = trim($val)==trim($value) ? 'checked' : '';

$string .= '<label class="option_label option_radio" >';

$string .= '<input type="radio" class="yzm-radio" name="'.$name.'" id="'.$name.'_'.$value.'" '.$checked.' value="'.$value.'">'.$vname;

$string .= '</label>';

}

return $string;

}

 

将复选框函数修改成:

/**

* 复选框

* @param $name name

* @param $val 默认选中值,多个用 '逗号'分割 如:'1,2'

* @param $array 一维数组 如:array('交易成功', '交易失败', '交易结果未知');

*/

public static function chec**ox($name, $val = '', $array = array()) {

$string = '';

$val = trim($val);

if($val != '') $val = strpos($val, ',') ? explode(',', $val) : array($val);

$i = 1;

foreach($array as $value) {

$value = trim($value);

 

$tmpstr=explode('::',$value,2);

$value=$tmpstr[0];

$vname=empty($tmpstr[1])?$value:$tmpstr[1];

 

$checked = ($val && in_array($value, $val)) ? 'checked' : '';

$string .= '<label class="option_label option_box" >';

$string .= '<input type="chec**ox" class="yzm-chec**ox" name="'.$name.'[]" id="'.$name.'_'.$i.'" '.$checked.' value="'.$value.'">'.$vname;

$string .= '</label>';

$i++;

}

return $string;

}

 

即可在单选框与复选框中定义2个参数,即录入标题,和录入数值

2、自定义字段为单选框和复选框时,默认的选项列表格式为:用“|”分开,如“男|女|人妖”

修改后则为:用“|”分开,如“1::男|2::女|3::人妖”,即表示,后台录入时选择男,录入到数据库值为1。

当然修改后,兼容老格式,你仍然可以使用男|女|人妖这种格式,只不过仍然用汉字存储到数据库。同时,试试下拉框,如何修改?

3、根据上文说的,修改对应字段的类型,比如改成布尔型

后台录入搞定,那么前台调用如何调用成汉字?

4、if else 或者 case switch总会用吧。再或者定义个数组,如 mbcolor[1]='红色';

即可完美提升效率。

  admin

注册时间:

网站:0 个   小程序:3 个  文章:0 篇

  • 1337

    网站

  • 53

    小程序

  • 53

    文章

  • 46

    会员

赶快注册账号,推广您的网站吧!
最新入驻小程序

美兔去水印2021-10-31

美兔去水印小程序,支持解析图集、

小勇去水印2021-07-08

短视频去水印神器,微信搜索小勇去

夜郎影音小程序2021-02-16

夜郎影音包含各类热门电影,热门连

91视频分享小程序2021-02-16

91视频,性感美女,JK制服视频,韩国女

皮皮影吧小程序2021-02-16

全网最新vip影视在线,皮皮影吧小

证件照X小程序2021-02-16

各类证件照快速裁、换底色等,1寸