2014-10-01 32 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

相關問題