Вывод запроса SQL в таблицу

Вывод запроса SQL в таблицу

от Ди No -
Количество ответов: 1

Здравствуйте! Никак не могу понять, как вывести результат запроса sql в таблицу moodle. Дело такое, я создаю блок, который отвечает за вывод категорий курсов, названий курсов и количество тем в каждом курсе. Вывод должен осуществляться в таблицу. Есть корявый код, который выводит категории и курсы, но курсы категориям не соответствуют.. в mysql workbench этот запрос работает нормально, а тут видимо вывод неправильный


$table = new html_table(); //создаю таблицу

$courses = $DB->get_records_sql('SELECT * FROM {course}'); 

$category=$DB->get_records_sql ('select fullname,name from {course}

join {course_categories} ON category={course_categories}.id'); //тот самый запрос

foreach ($category as $course_categories) //тут начинаются проблемы

{

foreach($courses as $course)

{

$table->data[] = array($course_categories->name,$course->fullname);

}

}


объясните новичку, как решить проблему и вывести всё, что требуется(

В ответ на Ди No

Re: Вывод запроса SQL в таблицу

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

сначала поставьте себе блок configurable reports и попрактикуйтесь с запросами в нём.

Вы выбрали в запросе по курсам все курсы, а не только те, которые относятся к конкретной категории. 

Суд по куску вашего кода вам нужно вообще с алгоритмами поразбираться, раз у вас команда на выборку курсов из категории находится снаружи цикла по категориям, а должна быть внутри.

Изучайте sql команду where. 

В moodle правильнее выбирать данные везде где можно без sql:

$categories = $DB->get_records('course_categories')

$courses = $DB->get_records('courses', array('category' => $category->id));

или $category = $DB->get_record('course_categories', ['id' => $course->category])