我遇到了问题。我必须为moodle中的下拉列表增加价值。我创建了一个从数据库中获取结果并在下拉框中显示的函数。当我在moodle中添加新课程时,第一次下拉列表似乎是空的。当我再次进入相同课程的活动时,它显示出价值。但它没有在第一次尝试时显示值。 我正在使用这个功能
function getActivities($cid)
{
global $DB;
global $CFG;
$res=array();
$sql="SELECT m.id as id, m.name as name
FROM {$CFG->prefix}course_modules as cm,{$CFG->prefix}modules as m,{$CFG->prefix}course as c,{$CFG->prefix}activitysetmodule as asm
WHERE asm.course = cm.course
AND asm.course = c.id
AND cm.module = m.id
AND cm.course =$cid";
$rec2=array();
$rec1=array();
$result=$DB->get_records_sql($sql);
foreach($result as $rec)
{
$rec2[]=$rec->name;
}
foreach($result as $rec)
{
$rec1[]=$rec->id;
}
$c = array_combine($rec1,$rec2);
return $c;
请帮我解决。
答案 0 :(得分:0)
因为在第一次创建课程时没有任何模块,$ cid将为空白。
同样对于Moodle 2,您应该使用{tablename}语法而不是{$ CFG->前缀}
还有一个函数可以为您检索数据:
function getActivities($cid) {
global $DB;
if (empty($cid)) {
// New course.
return array();
}
$sql = "SELECT m.id, m.name
FROM {modules} m
JOIN {course_modules} cm ON cm.module = m.id AND cm.course = :courseid";
$result = $DB->get_records_sql_menu($sql, array('courseid' => $cid));
return $result;
}