-
14 Nov 2012 10:46 AM #1
Unanswered: Problem with Array
Unanswered: Problem with Array
I'm using a two level array, where in the first one i pass the id from a certain region and at the second level of the same array, i pass the data from a product registered in this region, but, when i try to list this data in EXT, the only thing that appears is the name of the region, in other words, only the first level of this array. If anyone can help me, here's the code:
array result:
Code:Array ( [0] => Array ( [idregioes] => 3 [regiao] => regiao teste [0] => Array ( [idproduto] => 1 [descricao] => teste [quantidade1] => 0 [mes1] => 0 [quantidade2] => 0 [mes2] => 0 [quantidade3] => 2 [mes3] => 0.03 [quantidade4] => 2 [mes4] => 0.03 [quantidade5] => 0 [mes5] => 0 [quantidade6] => 0 [mes6] => 0 [quantidade7] => 0 [mes7] => 0 [quantidade8] => 0 [mes8] => 0 [quantidade9] => 0 [mes9] => 0 [quantidade10] => 0 [mes10] => 0 [quantidade11] => 4 [mes11] => 0.03 [quantidade12] => 0 [mes12] => 0 ) ) [1] => Array ( [idregioes] => 4 [regiao] => teste [0] => Array ( [idproduto] => 1 [descricao] => teste [quantidade1] => 0 [mes1] => 0 [quantidade2] => 0 [mes2] => 0 [quantidade3] => 2 [mes3] => 0.03 [quantidade4] => 2 [mes4] => 0.03 [quantidade5] => 0 [mes5] => 0 [quantidade6] => 0 [mes6] => 0 [quantidade7] => 0 [mes7] => 0 [quantidade8] => 0 [mes8] => 0 [quantidade9] => 0 [mes9] => 0 [quantidade10] => 0 [mes10] => 0 [quantidade11] => 4 [mes11] => 0.03 [quantidade12] => 0 [mes12] => 0 ) [1] => Array ( [idproduto] => 2 [descricao] => segundo produto [quantidade1] => 10 [mes1] => 50.00 [quantidade2] => 10 [mes2] => 50.00 [quantidade3] => 0 [mes3] => 0 [quantidade4] => 0 [mes4] => 0 [quantidade5] => 0 [mes5] => 0 [quantidade6] => 2 [mes6] => 50.00 [quantidade7] => 0 [mes7] => 0 [quantidade8] => 0 [mes8] => 0 [quantidade9] => 0 [mes9] => 0 [quantidade10] => 0 [mes10] => 0 [quantidade11] => 0 [mes11] => 0 [quantidade12] => 0 [mes12] => 0 ) ) )
Array Code:
Code:if($_POST['acao'] == 'produto'){ $query3 = $this->db->query("SELECT idregioes, nome FROM regiao WHERE ano = ".(int)$_POST['ano']." GROUP BY idregioes"); $c = 0; foreach($query3->result_array() as $indice3 => $valor3){ $array[$c] = array('idregioes'=>$valor3['idregioes'], 'regiao'=>$valor3['nome']); $query = $this->db->query("SELECT idproduto, descricao FROM produtos WHERE ano = ".(int)$_POST['ano']." AND idregioes = ".(int)$valor3['idregioes']." GROUP BY idproduto"); $a = 0; foreach($query->result_array() as $indice => $valor){ $array[$c][$a] = array('idproduto'=>$valor['idproduto'],'descricao'=>$valor['descricao']); for($b = 1; $b <= 12; $b++){ $query2 = $this->db->query("SELECT valor, quantidade FROM produtos WHERE idproduto = '".(int)$valor['idproduto'] . "' AND mes = '".$b."' AND ano =".(int)$_POST['ano']); $mes_quantidade = $query2->result_array(); if(count($mes_quantidade) > 0){ $array[$c][$a]["quantidade".$b] = $mes_quantidade[0]['quantidade']; $array[$c][$a]["mes".$b] = $mes_quantidade[0]['valor']; } else{ $array[$c][$a]["quantidade".$b] = 0; $array[$c][$a]["mes".$b] = 0; } } $a++; } $c++; } //print_r($array); echo json_encode(array('dados'=>$array)); exit; }
Grid Code:
Code://Modelo usado pela Store para carregar a grid do produto Ext.define('Dados', { extend: 'Ext.data.Model', idProperty: 'dadosdobanco', fields: [ {name: 'idproduto'}, {name: 'idregioes'}, {name: 'regiao'}, {name: 'descricao'}, {name: 'quantidade1'}, {name: 'quantidade2'}, {name: 'quantidade3'}, {name: 'quantidade4'}, {name: 'quantidade5'}, {name: 'quantidade6'}, {name: 'quantidade7'}, {name: 'quantidade8'}, {name: 'quantidade9'}, {name: 'quantidade10'}, {name: 'quantidade11'}, {name: 'quantidade12'}, {name: 'mes1'}, {name: 'mes2'}, {name: 'mes3'}, {name: 'mes4'}, {name: 'mes5'}, {name: 'mes6'}, {name: 'mes7'}, {name: 'mes8'}, {name: 'mes9'}, {name: 'mes10'}, {name: 'mes11'}, {name: 'mes12'} ] }); //store do produto var store_produto = Ext.create('Ext.data.JsonStore', { groupField: 'regiao', model: 'Dados', proxy: { type: 'ajax', url: '../comercial/metas', reader: { type: 'json', root: 'dados', totalProperty: 'total' }, actionMethods: { create : 'POST', read : 'POST', update : 'POST', destroy: 'POST' }, extraParams:{ acao: 'produto' } } }); var groupingFeature = Ext.create('Ext.grid.feature.Grouping',{ groupHeaderTpl: '{name} ({rows.length} Produto{[values.rows.length > 1 ? "s" : ""]})', hideGroupedHeader: false }); //grid produto var grid2 = Ext.create('Ext.grid.Panel', { store: store_produto, features: [groupingFeature], region: 'center', margin: '2 0 0 5', columns: [{ text: 'Produto', sortable: true, dataIndex: 'descricao' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade1', flex: 1 },{ text: 'Jan', sortable: true, dataIndex: 'mes1' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade2', flex: 1 },{ text: 'Fev', sortable: true, dataIndex: 'mes2' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade3', flex: 1 },{ text: 'Mar', sortable: true, dataIndex: 'mes3' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade4', flex: 1 },{ text: 'Abr', sortable: true, dataIndex: 'mes4' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade5', flex: 1 },{ text: 'Mai', sortable: true, dataIndex: 'mes5' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade6', flex: 1 },{ text: 'Jun', sortable: true, dataIndex: 'mes6' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade7', flex: 1 },{ text: 'Jul', sortable: true, dataIndex: 'mes7' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade8', flex: 1 },{ text: 'Ago', sortable: true, dataIndex: 'mes8' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade9', flex: 1 },{ text: 'Set', sortable: true, dataIndex: 'mes9' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade10', flex: 1 },{ text: 'Out', sortable: true, dataIndex: 'mes10' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade11', flex: 1 },{ text: 'Nov', sortable: true, dataIndex: 'mes11' },{ text: 'Qtde', sortable: true, dataIndex: 'quantidade12', flex: 1 },{ text: 'Dez', sortable: true, dataIndex: 'mes12' }], stripeRows: true, minHeight: 100, maxHeight: 600 });
-
16 Nov 2012 3:27 PM #2


Reply With Quote