MOODLE中的过滤器

MOODLE中的过滤器,moodle,Moodle,通过添加select元素编辑Mycode 如果我想添加select元素(比如..课程列表)和username元素。我是这样加的……但没用 $params = array(); if (!empty($usernamefilter) && !empty($coursesfilter)) { $params['id'] = $usernamefilter; $params['courses'] = $coursesfilter;

通过添加select元素编辑Mycode

如果我想添加select元素(比如..课程列表)和username元素。我是这样加的……但没用

 $params = array();
    if (!empty($usernamefilter) && !empty($coursesfilter)) 
    {
        $params['id'] = $usernamefilter;
        $params['courses'] = $coursesfilter;

        $sql .= ' AND '.$DB->sql_like('cc.id', ':id', false). ' AND '.$DB->sql_like('c.courses', ':courses', false).

}

您将需要一个表单,以便用户可以输入用户名进行搜索-使用此表单创建一个名为filter_form.php的文件

defined('MOODLE_INTERNAL') || die;

require_once($CFG->libdir . '/formslib.php');

class filter_form extends moodleform {

    public function definition() {
        $mform =& $this->_form;

        $mform->addElement('text', 'username', get_string('username', 'yourpluginname'));
        $mform->setType('username', PARAM_TEXT);

        $this->add_action_buttons(false, get_string('submit'));
    }

}
然后在自定义页面中显示或获取表单

require_once(dirname(__FILE__) . '/filter_form.php');
...
$mform = new filter_form();
$usernamefilter = '';
if ($formdata = $mform->get_data()) {
    $usernamefilter = $formdata->username;
}
$mform->display();
然后使用它来搜索数据-类似sql_的函数提供跨数据库兼容性-


如果您使用的是get\u recordset\u sql,那么您需要使用$mods->valid()和$mods->close()-

您可以演示如何检索数据吗?您在自定义页面中使用过$DB函数吗?@Russell England:这是我的自定义代码page@Russell英格兰:你能告诉我如何在自定义页面中添加过滤器吗。。拉塞尔英格兰非常感谢你。。。它帮助了我很多,我也学会了如何添加筛选搜索。很多感谢如果我的表单中有另一个选择元素(比如..课程列表)和文本元素..那么我们如何像上次编辑的代码“如果有多个筛选”中那样扩展我们的查询::你能建议我再添加一个选择筛选吗
$sql = "SELECT u.username, u.firstname, gg.finalgrade
        FROM {grade_grades} gg
        JOIN {user} ON gg.userid = u.id
        WHERE gg.finalgrade IS NOT NULL";

$params = array();
if (!empty($usernamefilter)) {
    $params['username'] = '%' . $DB->sql_like_escape($usernamefilter) . '%';
    $sql .= " AND " . $DB->sql_like('u.username', ':username', false);
}

$mods = $DB->get_recordset_sql($sql, $params));
if ($mods->is_valid()) {
   // Display table
   ...
}
$mods->close();