php cms单选,PHPCMS模型字段单选复选只能填写不能使用SQL语句查询

不知道各位有没有在使用phpcms过程中发现,建模型字段时单选复选的值只能手写,不能从其他表获取这个问题;在这个方面,五指CMS更胜一筹,在字段的时候有“自定义SQL”这一选项。只要略加修改,也可以实现同样的功能。

解决方案:

方案一:

(1)在phpcms/modules/content/sitemodel_field.php文件下,add方法和edit方法中增加(注意看一下代码,要增加在给$setting重复赋值之前)$field_type = $_POST['info']['formtype'];

$setting = $_POST['setting'] ?  $_POST['setting'] : '';

if ($field_type == 'box' && !empty($setting)) {

// 如果是选项

// 判断选项值是否是SQL语句

if(strpos($setting['options'],'|') == false){

$options = $this->db->query($setting['options']);

$option_arr = $this->db->fetch_array();

$option_str = "";

foreach ($option_arr as $key => $value) {

$option_str .= $value['title'].'|'.$value['id']."\r\n";

}

$_POST['setting']['options'] = rtrim($option_str);

$_POST['setting']['sql'] = $setting['options'];

}

}

(2)在phpcms/modules/content/fields/box/field_edit_form.inc.php文件下修改文本框显示值,并在新增和编辑页面增加提醒语句

选项列表<?php  if(!empty($setting['sql'])) { echo $setting['sql']; } else { echo $setting['options']; } ?> 如果需要其他表数据,直接填写SQL语句,格式按照"SELECT `filed1` as id,`field2` as title FROM table_name WHERE ..."

效果展示:

(1)字段新增与编辑

ba9344aa7a0e1940d021a879e4d4f5e3.png

(2)内容管理

2a29ccb47c7df18a5b71324e7d87f7a3.png

方案二:与方案一相同原理,不直接填写SQL,将SQL整理成参数形式

(1)在 phpcms/modules/content/fields/box/field_edit_form.inc.php 文件下,增加是否是SQL语句的选项按钮

是否为SQL

 /> 是

 /> 否

选项列表<?php  if(!empty($setting['sql'])) { echo $setting['sql']; } else { echo $setting['options']; } ?>

(2)在phpcms/modules/content/sitemodel_field.php文件下,add方法和edit方法中增加(注意看一下代码,要增加在给$setting重复赋值之前)$setting = $_POST['setting'] ?  $_POST['setting'] : '';

if ($field_type == 'box' && !empty($setting)) {

// 如果是选项

// 判断选项值是否是SQL语句

if($setting['is_sql'] == 1){

$options = explode("\n",$setting['options']);

$sql = "SELECT ".$options[1]." FROM ".$options[0];

if (!empty($options[2])) $sql .= " WHERE ".$options[2];//条件

if (!empty($options[3])) $sql .= " ORDER BY ".$options[3];//排序

if (!empty($options[4])) $sql .= " LIMIT ".$options[4];//条数限制

$option = $this->db->query($sql);

$option_array = $this->db->fetch_array();

$option_str = "";

foreach ($option_array as $key => $value) {

$option_str .= $value['title'].'|'.$value['id']."\r\n";

}

$_POST['setting']['options'] = rtrim($option_str);

$_POST['setting']['sql'] = $setting['options'];

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值