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

简介不知道各位有没有在使用phpcms过程中发现,建模型字段时单选复选的值只能手写,不能从其他表获取这个问题;在这个方面,五指CMS更胜一筹,在字段的时候有“自定义SQL”这一选项。只要略加修改,也可以实现同样的功能。解决方案:方案一:(1)在phpcms/modules/content/sitemodel_field.php文件下,add方法和edit方法中增加(注意看一下代码,要增加在给$sett

  

不知道各位有没有在使用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_arras$key=>$value){$option_str.=$value[' '].'|'.$value['id']."rn";}$_POST['setting']['options']=rtrim($option_str);$_POST['setting']['sql']=$setting['options'];}}

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

<tr><tdwidth="100">选项列表</td><td><textareaname="setting[options]"rows="2"cols="20"id="options"style="height:100px;width:200px;"><?phpif(!empty($setting['sql'])){echo$setting['sql'];}else{echo$setting['options'];}?></textarea><br><spanstyle="color:grey;">如果需要其他表数据,直接填写SQL语句,格式按照"SELECT`filed1`asid,`field2`as FROMtable_nameWHERE..."</span></td></tr>

效果展示:

(1)字段新增与编辑

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

(2)内容管理

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

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

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

<tr><tdwidth="100">是否为SQL</td><td><inputtype="radio"name="setting[is_sql]"value="1"<?phpif($setting['is_sql'])echo'checked';?>/>是<inputtype="radio"name="setting[is_sql]"value="0"<?phpif(!$setting['is_sql'])echo'checked';?>/>否</td></tr><tr><tdwidth="100">选项列表</td><td><textareaname="setting[options]"rows="2"cols="20"id="options"style="height:100px;width:400px;"><?phpif(!empty($setting['sql'])){echo$setting['sql'];}else{echo$setting['options'];}?></textarea></td></tr>

(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.="ORDERBY".$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_arrayas$key=>$value){$option_str.=$value[' '].'|'.$value['id']."rn";}$_POST['setting']['options']=rtrim($option_str);$_POST['setting']['sql']=$setting['options'];}}

下载链接:网站源码/小程序源码/网站模板下载

版权声明

   站内部分内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供网络资源分享服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请 联系我们 一经核实,立即删除。并对发布账号进行永久封禁处理。在为用户提供最好的产品同时,保证优秀的服务质量。


本站仅提供信息存储空间,不拥有所有权,不承担相关法律责任。

给TA打赏
共{{data.count}}人
人已打赏
网站技巧

帝国CMS灵动标签显示标题属性、截取标题字数

2024-9-19 19:44:06

网站技巧

Dedecms在php7下的一些常见问题

2024-9-19 19:44:08

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索