Olá
tenho um select no bd Firebird que me retorna por exemplo os seguintes dados:
semana atividade minutos
7 4 90Estas informações me geram um gráfico em php que está ok, se uso valores fixos, pois tenho que passar as informações para o gráfico da seguinte forma:
['7',0, 0, 0, 90, 0, 0, 0];
['9',0,150,60,120,0,15,0];
Ok, gerar a linha não é problema, sei como fazer, mas estou com
problema em gerar a linha com zeros, pois as atividades são 7 e
nas que nao tem valores tenho que colocar zeros.
Tentei da seguinte forma, no caso do exemplo, a semana 7, gera a
linha normalmente, mas quando tenho mais de um registro, como no
caso da semana 9, não me gera como a linha a cima, pois não estou
conseguindo gerar a linha.
Crio uma matriz com 7 elementos zerados e depois atribuo o valor a
cada item quando a atividade = chave da matriz
<?php
//if ($result) {
// zera os itens da matriz
$ati_controler = [];
for($ati=1; $ati <= $wnum_reg_ati;
$ati++) {
$ati_controler[$ati]= 0;
}
$i=0;
$primeira_vez = 0;
$wconta= 0;
$semana_anterior = '';
while ($linha = ibase_fetch_row
($result)) {
/*Escreve cada linha da tabela */
$semana = $linha['0'];
$ati_controle = $linha['1'];
$minutos = $linha['2'];
$i++;
if ($i <> 0) {
if ($semana == $semana_anterior
or $primeira_vez == 0) {
$semana_anterior=
$semana;
foreach($ati_controler as
$chave => &$valor){
if ($chave ==
$ati_controle) {
$valor= $minutos;
} else {
$chave= $chave;
continue;
}
}
} else {
$semana_anterior=
$semana;
$primeira_vez= 0;
$wconta ++;
$minutos_mostra[$wconta]= '';
foreach($ati_controler
as $chave => $valor){
$minutos_mostra[$wconta] .= $valor . ', ';
}
// zera os itens da
matriz
$ati_controler = [];
for($ati=1; $ati <=
$wnum_reg_ati; $ati++) {
$ati_controler[$ati]= 0;
}
$semana_mostra[$wconta]=
$semana;
$minutos_mostra[$wconta]= $minutos_mostra[$wconta];
//}
}
}
/*Fim do while*/
if ($wconta <> 0) {
$wcont= 0;
while ($wcont <> $wconta) {
$wcont ++;
?>
['<?php echo
$semana_mostra[$wcont] ?>', <?php echo
$minutos_mostra[$wcont] ?>],
<?php
}
}
?>