Moodle

Advanced search not display single menu and multi menu fields

Details

  • Type: Bug Bug
  • Status: Closed Closed
  • Priority: Major Major
  • Resolution: Fixed
  • Affects Version/s: 1.9
  • Fix Version/s: 1.9.1
  • Labels:
    None
  • Environment:
    1.9 moodle with a 8.2.4 postgres installed in a SUSE Linux Enterprise Server 10 SP1
  • Database:
    PostgreSQL
  • Affected Branches:
    MOODLE_19_STABLE
  • Fixed Branches:
    MOODLE_19_STABLE

Description

In advanced search form, the single and multiple menu fields not display correct because an SQL query error.
The error display:
ERROR: column "mdl_data_content.id" must appear in the GROUP BY clause or be used in an aggregate function
SELECT id, content from mdl_data_content WHERE fieldid=4 GROUP BY content ORDER BY content

There are two php files affected:
1) mod/data/field/menu/field.class.php
Error line 62:
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');
Solution: (add id in GROUP BY)
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id,content ORDER BY content');

2) mod/data/field/multimenu/field.class.php
Error line 66:
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');
Solution: (add id in GROUP BY)
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id,content ORDER BY content');

Activity

Hide
Petr Škoda (skodak) added a comment -

should be fixed now, thanks for the report

Show
Petr Škoda (skodak) added a comment - should be fixed now, thanks for the report
Hide
Mathieu Petit-Clair added a comment -

QA-Tuesday: tested & closed.

Show
Mathieu Petit-Clair added a comment - QA-Tuesday: tested & closed.
Hide
Antonio Piedras Morente added a comment -

There are new errors about this bug in the 1.9.2 version:

Files affected:

1) mod/data/field/latlong/field.class.php
Line 73
$lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');

Solution: (add id in GROUP BY)
$lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content');

Line 74
$longs = get_records_sql_menu('SELECT id, content1 from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');

Solution: (add id in GROUP BY and change then name of field content by content1)
$longs = get_records_sql_menu('SELECT id, content1 from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content1 ORDER BY content1');

2) mod/data/field/checkbox/field.class.php

Line 70
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');

Solution:
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content');

3) mod/data/field/radiobutton/field.class.php

Line 72
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content');

Solution:
$temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content');

Bye

Show
Antonio Piedras Morente added a comment - There are new errors about this bug in the 1.9.2 version: Files affected: 1) mod/data/field/latlong/field.class.php Line 73 $lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content'); Solution: (add id in GROUP BY) $lats = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content'); Line 74 $longs = get_records_sql_menu('SELECT id, content1 from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content'); Solution: (add id in GROUP BY and change then name of field content by content1) $longs = get_records_sql_menu('SELECT id, content1 from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content1 ORDER BY content1'); 2) mod/data/field/checkbox/field.class.php Line 70 $temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content'); Solution: $temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content'); 3) mod/data/field/radiobutton/field.class.php Line 72 $temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY content ORDER BY content'); Solution: $temp = get_records_sql_menu('SELECT id, content from '.$CFG->prefix.'data_content WHERE fieldid='.$this->field->id.' GROUP BY id, content ORDER BY content'); Bye

Dates

  • Created:
    Updated:
    Resolved: