2014-10-01 74 views
0

我正面临一个问题。我必须在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; 

请帮我寻找出来。

回答

0

因为在第一次创建课程时不会有任何模块,所以$ cid将会是空白的。

也为Moodle的2,你应该使用{}表名语法,而不是{$ 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; 
} 
+0

我得到一个错误“从数据库中获取错误”。@ Russell England – Rupzz 2014-10-01 06:14:23

+0

非常感谢你....它的工作原理! – Rupzz 2014-10-01 06:26:19

相关问题