gpt4 book ai didi

php - 使用查询填充 Moodle 表单中的选择元素

转载 作者:行者123 更新时间:2023-11-29 10:35:12 28 4
gpt4 key购买 nike

我正在使用 Forms API 创建 Moodle 表单。我尝试使用查询填充表单中的下拉元素。

class my_form extends moodleform {

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

$mform->addElement('html', '<h2>' . get_string('header', 'local_data') . '</h2>');

global $USER;
$userid = $USER->id;
$myCourseIds = getMyCourses($userid);

$mform->addElement('select', 'courseid', get_string('courseid', 'local_data'), $myCourseIds);


$this->add_action_buttons(true, get_string('send', 'local_data'));
}

}

这是查询:

function getMyCourses($userid) {
global $DB;

$sql = 'SELECT c.idnumber, c.shortname
FROM {role_assignments} ra, {user} u, {course} c, {context} cxt, {attendance_sessions} ass, {attendance} att
WHERE ra.userid = u.id
AND ra.contextid = cxt.id
and att.id = ass.attendanceid
and c.id = att.course
AND cxt.instanceid = c.id
AND (roleid =12 OR roleid=3)
and u.id = ?';

return $DB->get_records_sql($sql, array($userid));
}

返回的错误是一般数据库错误。我注意到 Moodle Forms API 中的示例页面使用全局变量 $FORUM_TYPES,我在其中使用了该变量进行查询。

错误消息如下:

Coding error detected, it must be fixed by a programmer: PHP catchable fatal error. More information about this error

所以我的问题是 -

  • 我可以使用一个变量来存储 Moodle 表单 API 的 select 元素中的数据库查询结果吗?

最佳答案

无需在表单函数definition()中转换数组即可获得相同的结果。因为在您的查询中您只选择了两列(idnumber 和短名称),所以您可以在 getMyCourses() 函数中使用 get_records_sql_menu 函数而不是 get_records_sql

get_records_sql_menu 将返回数组,其中元素已在键 -> 值对中匹配,其中 select 中的第一列将是键,第二列 -> 值。

Moodle Docs Reference

关于php - 使用查询填充 Moodle 表单中的选择元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46545991/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com