Percorrer banco e colocar zeros em uma matriz

9 views
Skip to first unread message

washington andre muller da silva

unread,
Apr 20, 2020, 12:11:29 AM4/20/20
to php-b...@googlegroups.com

Olá

tenho um select no bd Firebird que me retorna por exemplo os seguintes dados:

semana atividade minutos

7                 4              90
9                 2              150
9                 3              60
9                 4              120
9                 6              15

Estas 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
                              }
                        
                           }
                      ?>



--
Atenciosamente

Washington A. Muller da Silva
www.wvoleibol.blogspot.com
51-984.842206
Reply all
Reply to author
Forward
0 new messages