Код файла json для Select2, для получения форматирования с optgroup

Материал из Wiki МИАЦ ВО
Перейти к навигации Перейти к поиску

Пришлось как то с этим разбираться, выкладываю тут код, что бы потом найти было проще.

$out = [];
$q = !empty($_GET['q']) ? $_GET['q'] : '';

$group = [
    2 => 'Бесплатно',
    1 => 'РПН',
    0 => 'Платно',
];
$result = $GLOBALS['db']->mysqli_qw('SELECT a.cod, a.name, a.rpn, a.type  
    FROM dictionarys a
    WHERE a.dictionary=13 AND a.islast=1 AND a.name like ?
    ORDER BY a.`order`', '%' . $q . '%');
if (mysqli_num_rows($result) == false) {
   $out = array(array("id" => 0, "text" => 'Нет целей'));
} else {
   $i = 0;
   $b = 0;
   $gr = '';
   while ($row = mysqli_fetch_array($result)) {
       if ($gr && $gr != $row['rpn']) {
           $i++;
           $b = 0;
       }
       $out[$i]['text'] = $group[$row['rpn']];
       $out[$i]['children'][$b]['id'] = $row['cod'];
       $out[$i]['children'][$b]['text'] = $row['name'];
       $gr = $row['rpn'];
       $b++;
   }
}
$out5 = json_encode($out);
echo $out5;