moodle第一次没有在下拉列表中显示值

时间:2014-10-01 05:22:53

标签: php moodle

我遇到了问题。我必须为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;

请帮我解决。

1 个答案:

答案 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;
}