Как сгенерировать формат json из модели в codeigniter

#mysql #json #codeigniter #highcharts

#mysql #json #codeigniter #высокие диаграммы

Вопрос:

У меня есть база данных :

введите описание изображения здесь

как запросить mysql в модели codeigniter, чтобы он мог выводить данные json следующим образом :

enter code here </script»> $.ajax({ url: ‘?grid=trueamp;tahun=’ tahuncikarang, метод: «GET», успех: функция (данные) { var obj = JSON.parse(данные);

          }
        Highcharts.chart('cikarang', {
            chart: {
                type: 'bar'
            },
            title: {
                text: 'Highcharts multi-series drilldown'
            },
            subtitle: {
                text: 'The <em>allowPointDrilldown</em> option makes point clicks drill to the whole category'
            },
            xAxis: {
                type: 'category'
            },

            plotOptions: {
                series: {
                    borderWidth: 0,
                    dataLabels: {
                        enabled: true
                    }
                }
            },

            series: [{
                name: '2010',
                data: obj.tahun1
            }, {
                name: '2014',
                data: obj.tahun2
            }],
            drilldown: {
                allowPointDrilldown: false,
                series: [{
                    id: 'republican-2010',
                    name: 'Republican 2010',
                    data: [
                        ['East', 4],
                        ['West', 2],
                        ['North', 1],
                        ['South', 4]
                    ]
                }, {
                    id: 'democrats-2010',
                    name: 'Republican 2010',
                    data: ''
                }, ]
            }
        });
    }

});
  

Я пытаюсь в модели:
индекс функции ($ tahuncikarang)
{

     $this->db->select('nama AS nama, CONCAT(nama,"-", tahun) AS drilldown, sum(nilai) AS y');
    $this->db->where('tahun=2010');
    $this->db->group_by('nama')
              ->group_by('tahun');
    $tahuna1  = $this->db->get(self::$table5);
    $tahuna2 = array();
    foreach ($tahuna1->result() as $row) {
        array_push($tahuna2, $row);
    }

    $this->db->select('nama AS nama, CONCAT(nama,"-", tahun) AS drilldown, sum(nilai) AS y');
    $this->db->where('tahun=2014');
    $this->db->group_by('nama')
        ->group_by('tahun');
    $tahunb1  = $this->db->get(self::$table5);
    $tahunb2 = array();
    foreach ($tahunb1->result() as $row) {
        array_push($tahunb2, $row);
    }
    $result = array();
    $result['tahun1']    = $tahuna2;
    $result['tahun2']    = $tahunb2;
    return json_encode($result, JSON_NUMERIC_CHECK);
} 
  

Комментарии:

1. пожалуйста, поделитесь, что вы пробовали до сих пор.

2. как мне запросить mysql, чтобы он мог отображать данные json следующим образом [{ id: ‘republican-2010’, имя: ‘Republican 2010’, данные: [[‘Восток’, 4], [‘Запад’, 2], [‘Север’, 1], [‘South’, 4] ] }]

3. сначала извлеките данные из mysql, а затем измените их, используя цикл foreach на php или на любом другом языке, который вы используете, затем передайте его в highcharts

Ответ №1:

Я прочитал ваш вопрос только что. Если бы вы могли использовать этот запрос, вы могли бы получить хорошие результаты. Спасибо

 $qy = $this->db->query("select concat(lower(nama),'-',tahun) as id,concat(nama,'-',tahun) as name,group_concat(concat(zone,'-' ,nilai),',') as data group by nama, tahun")->result_array();

$result = array(); 
    foreach($qy as $row) { 
        $temp = array( 
            "id"=>$row['id'], 
            "name"=>$row['name'], 
            "data"=>array() 
        ); 
        $array = explode(',',$row['data']); 
        foreach($array as $el) { 
            $temp['data'][]=explode('-',$el); 
        } 
        $result[] = $temp; 
    }

echo json_encode($result);