Publicidade

AnthraxisBR

Members
  • Total de itens

    38
  • Registro em

  • Última visita

Reputação

8 Regular

Sobre AnthraxisBR

  • Data de Nascimento 26-03-1995

Informações Pessoais

  • Sexo
    Masculino
  1. @JacsJacob vou tentar explicar de um prático: Primeiro, você não vai declarar as variáveis PHP dentro da tag <script>, o que você vai fazer é uma requisição ajax para um pagina .PHP, e nessa página, a única coisa que ela deve retornar ao ajax é o dados que serão colocados no gráfico, essa página não pode responder nem uma vírgula errada, senão o gráfico não é exibido corretamente. Começa assim, aqui nos fazemos com que a requisição seja chamada quando a pagina com o gráfico for carregada: Após o evento ser disparado, nós fazemos a requisição dos dados: O arquivo PHP responsável por exibir os dados, deverá devolver algo como isso: E depois de ter os dados, nós chamamos a função que executará o gráfico: Acho que não consigo pensar em uma forma melhor de explicar isso kk
  2. Tenho um exemplo de um gráfico com esse plugin funcionando recebendo dados json do PHP: <script> $(document).ready(function () { var data_a = $('.data_chart_dashboard_fiscal').val(); var regime = $('.filtro_por_regime_chart_dashboard_fiscal').val(); $.ajax({ url: 'callFunctions.php', type: 'POST', data: {funcao: 'chart_por_regime_dashboard_fiscal', regime: regime, resposta: 'feitos', data_relacionada: data_a}, async: true, dataType: "json", success: function (data) { var dados = data; //var categorias = data['categoria']; $.ajax({ url: 'callFunctions.php', type: 'POST', data: {funcao: 'chart_por_regime_dashboard_fiscal', regime: regime, resposta: 'nao_feitos', data_relacionada: data_a}, async: true, dataType: "json", success: function (data2) { var dados2 = data2; //var categorias = data['categoria']; elementosData(dados, regime, dados2); } }); } }); }); function elementosData(dados, regime, dados2) { if (regime === '3' || regime === '4') { $('#containerChart').highcharts({ chart: { type: 'column' }, title: { text: 'Entrega das obrigações' }, xAxis: { categories: ['Sped fical', 'Sped Contrib.', 'DCTF', 'Retenções'] }, yAxis: { title: { text: '%' } }, series: [{name: 'concluido', data: dados}, {name: 'Não concluido', data: dados2}] }); } if (regime === '1' || regime === '2') { $('#containerChart').highcharts({ chart: { type: 'column' }, title: { text: 'Entrega das obrigações' }, xAxis: { categories: ['Sintegra', 'Recibo Simples', 'Difal / DeSTDA', 'PGDAS', 'Retenções / CPOM'] }, yAxis: { title: { text: '%' } }, series: [{name: 'concluido', data: dados}, {name: 'Não concluido', data: dados2}] }); } } </script> E a parte do php: tem que retornar nesse formato: (Não vou mandar minha parte do php porque vai complicar mais pra você entender) <?php //Essas váriaveis possuem os numeros que eu trouxe do banco de dados if ($resposta == 'feitos') { $retorno = "[$total_porc_sintegra,$total_porc_recibo_simples,$total_porc_difal_destda,$total_porc_pgdas,$total_porc_retencoes_cpom]"; } elseif ($resposta == 'nao_feitos') { $retorno = "[$tot_porc_neg_sintegra,$tot_porc_neg_recibo_simples,$tot_porc_neg_difal_destda,$tot_porc_neg_pgdas,$tot_porc_neg_retencoes_cpom]"; } header("Content-type: text/json"); echo $retorno; PS: No caso ali eu fiz uma gambiarra com uma requisição ajax dentro da outra pra conseguir cruzar os dados, acredito que exista um modo melhor, mas ainda não parei pra pensar nisso.
  3. Tenta usar um plugin para gráficos, eu geralmente uso esse: https://www.highcharts.com/demo/ Na documentação e nas demos existem exemplos de gráficos que atualizam com tempo (SEM REFRESH!!), e de todos os tipos que plugins possui, se não conseguir manda um salve que eu passo um exemplo de como preencher o gráfico com JS + PHP.
  4. Isso mesmo, mas se ele precisar printar esses dados, ou se os último e penúltimo forem apenas uma condição para os dois últimos serem exibidos de forma diferente ele já terá que iniciar um loop, mas se for linear apenas os dois últimos o seu exemplo é melhor realmente.
  5. Tenta algo assim: <?php $count = count($array); for($i = 1;$i <= $count; $i++){ if($i == $count OR $i == ($count -1)){ echo $array['dado'] } }
  6. Depois de alguma pesquisada encontrei o erro: O loop para contar '$a' estava repetindo apenas uma vez, e sempre retornando '0', então o índice buscava o mesmo parcelamento todas as vezes, mudei o loop para um loop while para contar o '$a' limitado pelo contador "$b" no lugar do loop for anterior, pode vir a ser útil pra alguém, abaixo segue o código fazendo a inserção de um loop de arrays dentro de outro loop de uma array dentro de outra array: <?php $sql = "SELECT id,cod,empresa_rel,qntd_parc FROM control_parc_fiscal"; $parcs = Components::get_rs_array_stmt_PDO($sql); $count = 0; $emps_cod = array_column($parcs, 'empresa_rel'); $SQL_emp_cod = implode("','", $emps_cod); if ($nivel <= 3) { $sql_2 = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao FROM empresas WHERE cod IN ('$SQL_emp_cod') AND responsavel = '$user' GROUP BY id ORDER BY id"; } else { $sql_2 = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao FROM empresas WHERE cod IN ('$SQL_emp_cod')"; } $emps = Components::get_rs_array_stmt_PDO($sql_2); $countParcs = Components::get_count_reg_mysql_PDO($sql_2); $i = 0; foreach ($emps as $emps_loop) { $emps_data[$i]['id'] = $emps_loop['id']; $emps_data[$i]['cod'] = $emps_loop['cod']; $emps_data[$i]['nome'] = $emps_loop['nome']; $emps_data[$i]['cnpj'] = $emps_loop['cnpj']; $o = 0; $emps_data[$i]['insc_estadual'] = $emps_loop['insc_estadual']; $b = 0; foreach ($parcs as $parc) { $cod[$b] = $parc['empresa_rel']; if ($emps_data[$i]['cod'] == $cod[$b]) { $d = 0; while ($d <= $b) { if ($emps_data[$i]['cod'] == $cod[$b]) { $emps_data[$i]['parcs'][$b] = Array( "parc_cod" => $parc['cod'], "qntd_parc" => $parc['qntd_parc'] ); } else { $emps_data[$i]['parcs'] = NULL; } $d++; } $b++; } } $i++; } print_r($emps_data);
  7. É mais ou menos isso, mas o contexto da sua dúvida ali não foi o mesmo. Eu faço minha segunda consulta com IN no mysql, e recebo a array. O que eu não estou conseguindo fazer é abrir essa parte da array: <?php $emps[0] = Array ( "id" => '1', "cod" => 'cod_1', "parcs" = Array ( // aqui ) E acrescentar os valor corretos, o código aqui abaixo está mais atualizado que o da pergunta: <?php $sql = "SELECT id,cod,empresa_rel,qntd_parc FROM control_parc_fiscal"; //recebo array das parcelamentos $parcs = Components::get_rs_array_stmt_PDO($sql); $count = 0; //crio array com o cod as empresas relacionadas $emps_cod = array_column($parcs, 'empresa_rel'); $SQL_emp_cod = implode("','", $emps_cod); if ($nivel <= 3) { $sql_2 = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao FROM empresas_base WHERE cod IN ('$SQL_emp_cod') AND responsavel = '$user' GROUP BY id ORDER BY id"; } else { $sql_2 = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao FROM empresas_base WHERE cod IN ('$SQL_emp_cod')"; } //recebe array com os dados das empresas $emps = Components::get_rs_array_stmt_PDO($sql_2); //conta quantidade de parcelamentos //$countParcs = Components::get_count_reg_mysql_PDO($sql); $i = 0; //abre a array para inserir o dado das empresas foreach ($emps as $emps_loop) { $emps_data[$i]['id'] = $emps_loop['id']; $emps_data[$i]['cod'] = $emps_loop['cod']; $emps_data[$i]['nome'] = $emps_loop['nome']; $emps_data[$i]['cnpj'] = $emps_loop['cnpj']; $o = 1; $emps_data[$i]['insc_estadual'] = $emps_loop['insc_estadual']; $b = 0; // abre outra array dentro da array $emps_data para incluir o valor dos parcelamentos foreach ($parcs as $parc) { $cod[$b] = $parc['empresa_rel']; //verifica se o código da empresa relacionada no parcelamento corresponde a empresa da array primária, se sim : if ($emps_data[$i]['cod'] == $cod[$b]) { //Abre um contador pra verificar se a empresa ja não está relacionada com um parcelamento - > Parte com problema for ($d = 0; $d <= $b; $d++) { //echo $a ." - " . $b . "<br>"; $c = $a - 1; //tento ver //Verifica dentro da array aberta se a empresa e a parcelamento estão relacionados -> Parte com problema if ($emps_data[$i]['parcs'][$c]['parc_cod'] == $parc['cod']) { //se existe não faz nada } else { //echo $d . " - " . $cod[$b] . " - " . $parc['cod'] . " - " . $parc['qntd_parc'] . "<br>"; //Se não existe insere, aqui está o problema, ele está inserindo os mesmos valores em todos os parcelamentos $emps_data[$i]['parcs'][$d] = Array( "parc_cod" => $parc['cod'], "qntd_parc" => $parc['qntd_parc'] ); } } else { $emps_data[$i]['parcs'] = NULL; } } $b++; } $i++; } print_r($emps_data); Esse código me responde as empresas, e relaciona as parcelas, mas, qnd possui mais de uma parcela por empresa, em invés de acrescentar corretamente todas as parcelas, ele acrescenta várias vezes a mesma. OBS: Eu não busco as parcelas, eu busco quantos parcelamentos, a empresa tem.
  8. Tenho duas arrays trazidas do MySQL via PDO qual a seguinte finalidade: Buscar as empresas -> e com o campo 'cod' das empresas buscar os parcelamentos no banco de dados, até aí ok, mas preciso incluir um quantidade váriavel de arrays dentro um de um campo ja existente da primeira array com as empresas, sendo assim tenho duas array: Uma contendo as empresas: <?php $emps[0] = Array ( "id" => '1', "cod" => 'cod_1' ); $emps[1] = Array ( "id" => '2', "cod" => 'cod_2' ); E a segunda array contendo quais parcelamentos estão no bd. <?php $parcs[0] = Array ( "emp_rel" = "cod_1", "qntd_parc" = "2" ) $parcs[1] = Array ( "emp_rel" = "cod_1", "qntd_parc" = "5" ) $parcs[2] = Array ( "emp_rel" = "cod_2", "qntd_parc" = "12" ) O dado 'emp_rel' da segunda array é ralcionado com o dado cod da primeira array, preciso que essas duas arrays fiquem no seguinte formato: <?php $emps[0] = Array ( "id" => '1', "cod" => 'cod_1', "parcs" = Array ( [0] => Array ( "emp_rel" = "cod_1", "qntd_parc" = "2" ) [1] => Array ( "emp_rel" = "cod_1", "qntd_parc" = "5" ) ) ); $emps[1] = Array ( "id" => '2', "cod" => 'cod_2', "parcs" = Array ( "emp_rel" = "cod_2", "qntd_parc" = "12" ) ); Meu código atual está assim: <?php $i = 0; //$b = 0; foreach ($emps as $emps_loop) { $emps_data[$i]['id'] = $emps_loop['id']; $emps_data[$i]['cod'] = $emps_loop['cod']; //$o = 1; //$emps_data[$i]['insc_estadual'] = $emps_loop['insc_estadual']; foreach ($parcs as $parc) { $cod = $parc['emp_rel']; for ($a = 0; $a < $countParcs; $a++) { if ($emps_data[$i]['cod'] == $cod) { $emps_data[$i]['parcs'][$a] = Array( "parc_cod" => $parc['cod'], "qntd_parc" => $parc['qntd_parc'] ); } else { $emps_data[$i]['parcs'] = ''; } } } $i++; } O problema está em associar os devidos valores 'emp_rel' da segunda array com 'cod' da primeira array, no meu código ele relaciona todos os valores iguais para todas as empresas. Se alguém tiver uma luz de como resolver isso agradeço, obrigado!
  9. Está um é uma dúvida muito simples, mas que está me encucando. Por exemplo uma função em uma classe que eu tenho com nome grande: <?php Class geralModel { public static function get_fiscal_control_obrig_confirm_sended_msg ($obrig) { //tradução livre dessa função "Obter obrigação de controle fiscal confirmar mensagem enviada" //Fazer as coisas } //Mais muitas funções ( geralmente com nome grande) } E a mesma função, fazendo a mesma coisa, mas com nome menor: <?php Class geralModel { public static function get_confirm_obrig_stats ($obrig) { // //Fazer as coisas } //Mais muitas funções ( geralmente com nome pequeno nesse caso) } Ignorando totalmente o que estas funções fazem, somente o nome ser grande em muitas funções interfere em algo além do visual ?
  10. Primeiramente obrigado @gabrieldarezzo pela indicação, me ajudou muito! Bom consegui resolver o problema, chega a ser bizarro a proporção de melhora no tempo de consulta que o sistema obteve, vou postar aqui a solução pois pode ser útil pra alguém. <?php $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base GROUP BY id ORDER BY id"; $emps = Components::get_rs_array_stmt_PDO($sql); $emps_cod = array_column($emps, 'id'); $SQL_emp_cod = implode(',', $emps_cod); $sql_2 = sprintf(" SELECT * FROM controle_fiscal WHERE id IN ($SQL_emp_cod) ", $SQL_emp_cod); $controls = Components::get_rs_array_stmt_PDO($sql_2); foreach ($controles as $control){ print_r($control['id'])."<br>"; } Observações: 1 - Mudei a forma da conexão para a classe PDO, não sei até que ponto isso interferiu no tempo da consulta. 2 - Código ficou mais limpo. 3 - O tempo de consulta anteriormente estava com a média de 1075ms, depois dessa mudança, com os mesmo testes o tempo médio de resposta passou para 77.8ms, ou seja, mais de 13x mais rápido.
  11. Nossa, eu nunca tinha ouvido falar nesse 'IN", vou estudar como funciona, mas no caso basicamente seria: <?php //query da consulta $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base GROUP BY id ORDER BY id"; //rs da query -> classe components $rs = Components::get_rs_consulta_query($sql); //Contando quantidade de elementos na query -> Classe components $count = Components::get_count_consulta_query($sql); $key = 0; //inicia a array $emps = Array(); //loop para criar a array -> Acredito que aqui que esteja criando errado while ($row = mysqli_fetch_array($rs)) { $emp_cod = $row['cod']; $emps[$key] = $emp_cod; $key ++; } $m = date('m'); $a = date('Y'); $Arr_empresa_cod = implode(',', $emps); //print_r($Arr_empresa_cod); --> Essa parte imprime o problema está na consulta com IN abaixo pelo motivo da array vir errada $sql_2 = " SELECT * FROM controle_fiscal WHERE empresa IN ($Arr_empresa_cod) AND mes_correspondente = '$m' AND ano_correspondente = '$a' GROUP BY id ORDER BY id "; $rs_2 = Components::get_rs_consulta_query($sql_2); while ($row_2 = mysqli_fetch_array($rs_2)) { print_r($row_2).'<br>'; } Só que neste cado mesmo tendo dado uma olhada, não entendi como deve ser estruturada a array que passa pelo IN, esse código me devolve a array do $row_2 como nula, tem alguma ideia do que está errado? O erro referente é o seguinte:
  12. Tenho uma parte do meu sistema que em opera o controle das obrigações fiscais, essa parte é exibida de acordo com o nível de acesso, com o parâmetro de filtro, e ela é responsável por buscar as empresas no banco de dados, depois verificar quais empresas foram inclusas no controle fiscal, e dentro disso existem muitas condições pra como/o que/onde as coisas devem ser disparas, tudo funciona ok, o porém é: MUITOS IFs e condições estão fazendo isso demorar. Fiz 10 testes em cada um dos três navegadores principais do Windows a média de resposta para 311 registros foi 1075ms. O código responsável por fazer só a parte da busca e as condições é esse: <?php $login_test = new loginController(); $login_test->verif_login(); $_POST = Sanitize::filter($_POST); $filtro_regime = $_POST['regime']; $filtro_regime_nome = Components::nome_regime_trib($filtro_regime); $filtro_empresa = $_POST['empresa']; $filtro_mes_ano = $_POST['mes_ano']; $status = $_POST['status']; $user = $_SESSION['userCod']; $nivel = $_SESSION['userLevel']; $dataD = explode("/", "$filtro_mes_ano"); $m = $dataD[0]; $a = $dataD[1]; $tributacao = $filtro_regime_nome; $opt = $_GET['opt']; if ($opt == 'menu_btn') { $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base WHERE responsavel = '$user' GROUP BY id ORDER BY id"; } else { if ($nivel <= 3) { if ($filtro_regime != "0") { $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base WHERE tributacao = '$filtro_regime_nome' AND responsavel = '$user' GROUP BY id ORDER BY id"; } else { $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base WHERE nome = '$filtro_empresa' AND responsavel = '$user' GROUP BY id ORDER BY id"; } } else { if ($filtro_regime != "0") { $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base WHERE tributacao = '$filtro_regime_nome' GROUP BY id ORDER BY id"; } else { $sql = "SELECT id,cod,nome,cnpj,insc_estadual,tributacao,grupo_easy FROM empresas_base WHERE nome = '$filtro_empresa' GROUP BY id ORDER BY id"; } } } $rs = Components::get_rs_consulta_query($sql); while ($row = mysqli_fetch_array($rs)) { $empresaID = $row['id']; $empresaCod = $row['cod']; $empresa = utf8_encode($row['nome']); $cnpj = $row['cnpj']; $insc_est = $row['insc_estadual']; $grupo_easy = $row['grupo_easy']; $regime_trib = $row['tributacao']; // verifica pelo POST status se é pra exibir concluidos e incompletos if ($status == '0' OR $status == '2') { $sql2 = "SELECT * FROM controle_fiscal WHERE empresa = '$empresaCod' AND mes_correspondente = '$m' AND ano_correspondente = '$a' GROUP BY id ORDER BY id "; } else { if ($tributacao == 'SIMPLES NACIONAL') { $sql2 = "SELECT * FROM controle_fiscal WHERE empresa = '$empresaCod' AND mes_correspondente = '$m' AND ano_correspondente = '$a' AND data_envio != '' AND data_confirmacao != '' AND sintegra != '0' AND difal_destda != '0' AND retencoes_cpom != '0' GROUP BY id ORDER BY id"; } elseif ($tributacao == 'PRESUMIDO' OR $tributacao == 'REAL') { $sql2 = "SELECT * FROM controle_fiscal WHERE empresa = '$empresaCod' AND mes_correspondente = '$m' AND ano_correspondente = '$a' AND data_envio != '' AND data_confirmacao != '' AND sped_fiscal != '0' AND sped_contrib != '0' AND dctf != '0' AND retencoes != '0' GROUP BY id ORDER BY id"; } } $rs2 = Components::get_rs_consulta_query($sql2); while ($row2 = mysqli_fetch_array($rs2)) { $porc_form = 0; //Todos $apuracao = $row2['apuracao']; $recibo_simples = $row2['recibo_simples']; $controle_cod = $row2['cod']; $data_envio = $row2['data_envio']; $data_confirmacao = $row2['data_confirmacao']; $entrada_notas = $row2['triagem_notas_ent']; $saida_notas = $row2['triagem_notas_saida']; //Simples $sintegra = $row2['sintegra']; $difal_destda = $row2['difal_destda']; $retencoes_cpom = $row2['retencoes_cpom']; //Presumido $sped_fiscal = $row2['sped_fiscal']; $sped_contrib = $row2['sped_contrib']; $dctf = $row2['dctf']; $retencoes = $row2['retencoes']; $pgdas = $row2['pgdas']; if ($insc_est == 'CANCELADA' OR $insc_est == "INATIVA" OR $grupo_easy == 'X') { if ($data_envio != 0) { $data_envio_inativa = ''; } else { $data_envio_inativa = " - " . 'Nada a enviar'; } if ($data_confirmacao != 0) { $data_confirmacao_inativa = ''; } else { $data_confirmacao_inativa = " - " . 'Nada a confirmar'; } if ($apuracao != 0) { $apuracao_inativa = ''; } else { $apuracao_inativa = 'Nada a apurar'; } if ($tributacao == 'PRESUMIDO' OR $tributacao == "REAL") { $retencoes_inativa = "Não necessário"; $sped_fiscal_inativa = 'Não necessário'; $sped_contrib_inativa = 'Não necessário'; $dctf_inativa = ''; $sintegra_inativa = ''; $difal_inativa = ''; $retencoes_cpom_inativa = ''; $sped_fiscal = ''; $sped_contrib = ''; $retencoes = ''; } elseif ($tributacao == 'SIMPLES NACIONAL') { //$pgdas_inativa = 'Não necessário'; $retencoes_inativa = ""; $sped_fiscal_inativa = ''; $sped_contrib_inativa = ''; $sintegra_inativa = 'Não necessário'; $difal_inativa = 'Não necessário'; $retencoes_cpom_inativa = 'Não necessário'; $retencoes_cpom = ''; $difal_destda = ''; $sintegra = ''; } } else { $data_envio_inativa = ''; $data_confirmacao_inativa = ''; $apuracao_inativa = ''; $sintegra_inativa = ''; $pgdas_inativa = ''; $difal_inativa = ''; $retencoes_cpom_inativa = ''; $retencoes_inativa = ""; $dctf_inativa = ''; $sped_fiscal_inativa = ''; $sped_contrib_inativa = ''; } if ($data_confirmacao == '' AND $data_envio != '') { $data_envio_formated = DateTime::createFromFormat('d/m/Y', $data_envio); $datetime1 = $data_envio_formated->format('Y-m-d'); $datetime2 = date('Y-m-d'); $time_inicial = strtotime($datetime1); $time_final = strtotime($datetime2); $diferenca = $time_final - $time_inicial; $dias = (int) floor($diferenca / (60 * 60 * 24)); if ($dias == 1) { $data_confirmacao = 'Enviado ontem.'; $data_confirmacao_td_class = 'default'; } elseif ($dias < 5) { $data_confirmacao = "A " . $dias . " dias sem confirmação"; $data_confirmacao_td_class = "warning"; } else { $data_confirmacao = "ATENÇÃO! A " . $dias . " dias sem confirmação"; $data_confirmacao_td_class = "danger"; } } else { $data_confirmacao_td_class = ""; $data_confirmacao = $row2['data_confirmacao']; } if ($apuracao != 0) { $apuracao_val = 1; } else { $apuracao_val = 0; } if ($apuracao != 0) { $data_envio_val = 1; if ($data_confirmacao != '' || $data_confirmacao != 0) { $data_confirmacao_val = 1; } else { $data_confirmacao_val = 0; } } else { if ($data_envio != '' || $data_envio != 0) { $data_envio_val = 1; } else { $data_envio_val = 0; } if ($data_confirmacao != '' || $data_confirmacao != 0) { $data_confirmacao_val = 1; } else { $data_confirmacao_val = 0; } } if ($entrada_notas != 0) { $entrada_notas_val = 1; } else { $entrada_notas_val = 0; } if ($saida_notas != 0) { $saida_notas_val = 1; } else { $saida_notas_val = 0; } if ($insc_est == 'INATIVA' OR $insc_est == 'CANCELADA' OR $grupo_easy == 'X') { $data_envio_val = 1; $data_confirmacao_val = 1; $sintegra_val = 1; $recibo_simples_val = 1; if ($pgdas != 0) { $pgdas_val = 1; } else { $pgdas_val = 0; } $difal_destda_val = 1; $retencoes_cpom_val = 1; $apuracao_val = 1; $sped_fiscal_val = 1; $sped_contrib_val = 1; $retencoes_val = 1; $saida_notas_val = 1; $entrada_notas_val = 1; if ($tributacao == 'SIMPLES NACIONAL') { $val_obrig = $saida_notas_val + $entrada_notas_val + $apuracao_val + $data_envio_val + $data_confirmacao_val + $sintegra_val + $recibo_simples_val + $difal_destda_val + $retencoes_cpom_val + $pgdas_val; $porc_form = (($val_obrig * 100) / 10); } else { $val_obrig = $saida_notas_val + $entrada_notas_val + $apuracao_val + $data_envio_val + $data_confirmacao_val + $sped_fiscal_val + $sped_contrib_val + $dctf_val + $retencoes_val; $porc_form = (($val_obrig * 100) / 9); } } else { if ($tributacao == 'SIMPLES NACIONAL') { if ($sintegra != 0) { $sintegra_val = 1; } else { $sintegra_val = 0; } if ($recibo_simples != 0) { $recibo_simples_val = 1; $pgdas_val = 1; } else { $recibo_simples_val = 0; if ($pgdas != 0) { $pgdas_val = 1; } else { $pgdas_val = 0; } } if ($difal_destda != 0) { $difal_destda_val = 1; } else { $difal_destda_val = 0; } if ($retencoes_cpom != 0) { $retencoes_cpom_val = 1; } else { $retencoes_cpom_val = 0; } $val_obrig = $saida_notas_val + $entrada_notas_val + $apuracao_val + $data_envio_val + $data_confirmacao_val + $sintegra_val + $recibo_simples_val + $difal_destda_val + $retencoes_cpom_val + $pgdas_val; $porc_form = (($val_obrig * 100) / 10); } elseif ($tributacao == 'PRESUMIDO' || $tributacao == "REAL") { if ($sped_fiscal != 0) { $sped_fiscal_val = 1; } else { $sped_fiscal_val = 0; } if ($sped_contrib != 0) { $sped_contrib_val = 1; } else { $sped_contrib_val = 0; } if ($dctf != 0) { $dctf_val = 1; } else { $dctf_val = 0; } if ($retencoes != 0) { $retencoes_val = 1; } else { $retencoes_val = 0; } $val_obrig = $saida_notas_val + $entrada_notas_val + $apuracao_val + $data_envio_val + $data_confirmacao_val + $sped_fiscal_val + $sped_contrib_val + $dctf_val + $retencoes_val; $porc_form = (($val_obrig * 100) / 9); $sped_fiscal_sum += $sped_fiscal_val; $sped_contrib_sum += $sped_contrib_val; $retencoes_sum += $retencoes_val; $dctf_sum += $dctf_val; } } $tr_styles = fiscalModel::get_tr_obrigacoes_stats($status, $tributacao, $apuracao, $recibo_simples, $data_envio, $data_confirmacao, $sintegra, $difal_destda, $retencoes_cpom, $dctf, $retencoes, $pgdas, $sped_contrib, $sped_fiscal); } Obrigado
  13. Amigo, Não sei se vou acertar o que você precisa, mas: No caso você tem uma array, dentro uma array dentro de uma array, você tem q passar duas vezes pelos dados pra pegar os valores das 3 camadas, segue um exemplo que acabei de fazer abaixo: //Criando uma array igual a sua $array = Array( ); $array['matriz'] = Array( "0" => 'Array' ); $array['matriz'][0] = Array( "0" => 'dado 1', "1" => 'dado 2', "2" => 'dado 3' ); $array['matriz'][1] = Array( "0" => 'dado 4', "1" => 'dado 5', "2" => 'dado 6' ); //definindo 0 para a chave $key_1 = 0; //parrando o parametro para pegar os valores inclusos na array primaria foreach ($array as $array_2) { //Aqui parra a array primaria com uma key, pois ela pode possuir mais de um elemento foreach ($array_2[$key_1] as $array_3[$key_1]) { //aqui cada dado da array ja vem separado echo $array_3[$key_1]; } //contador de keys $key_1 ++; } Com os dados certos você consegue fazer o que tem que ser feito. Não cheguei a testar, mas o echo é pra trazer os dados finais. Acabou coincidindo de eu ter que fazer algo parecido no meu trabalho hoje: "colocar dados de uma array, dentro de outra array se determinado valor for igual", então ta aí como foi feito: A primeira Array: Array ( [0] => Array ( [id] => 1 [cod] => COD 1 [nome] => EMPRESA 1 [cnpj] => CNPJ 1 [insc_estadual] => INSC 1 [tributacao] => SIMPLES NACIONAL ) [1] => Array ( [id] => 2 [cod] => COD 2 [nome] => EMPRESA 2 [cnpj] => CNPJ 2 [insc_estadual] => INSC 2 [tributacao] => SIMPLES NACIONAL ) ) A segunda Array: Array ( [0] => Array ( [id] => 1 [cod] => codigo 1 [empresa] => COD 1 // Aqui é que precisa relacionar [triagem_notas_ent] => 0 [triagem_notas_ent_data] => [triagem_notas_saida] => 0 [triagem_notas_saida_data] => [apuracao] => 1 [recibo_simples] => 11111111 [data_envio] => S/M [data_confirmacao] => S/M [responsavel] => [sintegra] => 2 [difal_destda] => 3 [retencoes_cpom] => 1 [sped_fiscal] => 0 [sped_contrib] => 0 [dctf] => 0 [retencoes] => 0 [pgdas] => 1 [mes_correspondente] => 03 [ano_correspondente] => 2017 [autor_edicao] => 0 ) [1] => Array ( [id] => 2 [cod] => codigo 2 [empresa] => COD 2 // Aqui é que precisa relacionar [triagem_notas_ent] => 0 [triagem_notas_ent_data] => [triagem_notas_saida] => 0 [triagem_notas_saida_data] => [apuracao] => 1 [recibo_simples] => 11111111 [data_envio] => S/M [data_confirmacao] => S/M [responsavel] => [sintegra] => 2 [difal_destda] => 3 [retencoes_cpom] => 1 [sped_fiscal] => 0 [sped_contrib] => 0 [dctf] => 0 [retencoes] => 0 [pgdas] => 1 [mes_correspondente] => 03 [ano_correspondente] => 2017 [autor_edicao] => 0 ) ) E aqui p código que coloca uma array dentro da outra. <?php //contador $i = 0; //Abro a array $emps foreach ($emps as $emps_loop) { // o key $i serve pra dizer com qual array estamos trabalhando $emps_data[$i]['id'] = $emps_loop['id']; $emps_data[$i]['cod'] = $emps_loop['cod']; $emps_data[$i]['nome'] = $emps_loop['nome']; $emps_data[$i]['cnpj'] = $emps_loop['cnpj']; $emps_data[$i]['insc_estadual'] = $emps_loop['insc_estadual']; $emps_data[$i]['grupo_easy'] = $emps_loop['grupo_easy']; $emps_data[$i]['tributacao'] = $emps_loop['tributacao']; //Aqui é aberta a segunda array, repare q essa array foi aberta dentro da outra, assim consigo relacionar dados foreach ($controles as $controle) { //Busco dentro da segunda array ($controles) o dado 'empresa' que é o dado que precisa bater com '$cod' da empresa da primeira array, se igual, salva os dados $cod = $controle['empresa']; if($emps_data[$i]['cod'] == $cod){ $emps_data[$i]['controles'] = Array( "pgdas" => $i, "apuracao" => $controle['apuracao'], "recibo_simples" => $controle['recibo_simples'], "controle_cod" => $controle['cod'], "data_envio" => $controle['data_envio'], "data_confirmacao" => $controle['data_confirmacao'], "entrada_notas" => $controle['triagem_notas_ent'], "saida_notas" => $controle['triagem_notas_saida'], "sintegra" => $controle['sintegra'], "difal_destda" => $controle['difal_destda'], "retencoes_cpom" => $controle['retencoes_cpom'], "sped_fiscal" => $controle['sped_fiscal'], "sped_contrib" => $controle['sped_contrib'], "dctf" => $controle['dctf'], "retencoes" => $controle['retencoes'], "pgdas" => $controle['pgdas'] ); } } //Impressão para teste echo $emps_data[$i]['id'] . "-" . $emps_data[$i]['controles']['recibo_simples']."<br>"; $i++; } Espero ter ajudado! Vlw
  14. Andei reparando nisso, inclusive tem o metro, que é menos compatível com o que eu busco do que o bootstrap, pelo jeito vamos ter que contratar um desenvolvedor front-end mesmo mais pra frente kk
  15. Ja tenho esse site na minha biblioteca de consultas, mas mesmo assim obrigado! Eu estou procurando algo mais como os dessa lista: https://colorlib.com/wp/free-bootstrap-admin-dashboard-templates/ Porém os daqui não atendem o que eu queria, na verdade to começando a achar que não tem, já estamos a um bom tempo procurando aqui na empresa e nada se encaixa.