PDA

View Full Version : Problem with Array



OtavioF
14 Nov 2012, 10:46 AM
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:

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:

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:

//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

});

OtavioF
16 Nov 2012, 3:27 PM
can someone help me?