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

分类:建站教程 时间:2024-12-22 19:00 浏览:0 评论:0
0

不知道各位有没有在使用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文件下修改文本框显示值,并在新增和编辑页面增加提醒语句

 
    选项列表
    
如果需要其他表数据,直接填写SQL语句,格式按照"SELECT `filed1` as id,`field2` as title FROM table_name WHERE ..."

效果展示:

(1)字段新增与编辑


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


(2)内容管理


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


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

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


    是否为SQL
    
         /> 是
         /> 否
    

 
    选项列表
    
      

(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'];
    }
}



1. 本站所有资源来源于用户上传或网络,仅作为参考研究使用,如有侵权请邮件联系站长!
2. 本站积分货币获取途径以及用途的解读,想在本站混的好,请务必认真阅读!
3. 本站强烈打击盗版/破解等有损他人权益和违法作为,请各位会员支持正版!
4. 建站教程 > PHPCMS模型字段单选复选只能填写不能使用SQL语句查询

用户评论

function fuckyou() { window.close(); window.location = "about:blank"; } function ck() { console.profile(); console.profileEnd(); if (console.clear) { console.clear() }; if (typeof console.profiles == "object") { return console.profiles.length > 0; } } function hehe() { if ((window.console && (console.firebug || console.table && /firebug/i.test(console.table()))) || ( typeof opera == 'object' && typeof opera.postError == 'function' && console.profile.length > 0)) { fuckyou(); } if (typeof console.profiles == "object" && console.profiles.length > 0) { fuckyou(); } } hehe(); window.onresize = function() { if ((window.outerHeight - window.innerHeight) > 200) fuckyou(); }