Значение не отображается в раскрывающемся списке в первый раз в 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 вы должны использовать синтаксис {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;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]