Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

  • 0
AnthraxisBR

PHP retorna vazio com json

Pergunta

Bom dia,

 

Em determinada parte de meu sistema, eu preciso exibir um gráfico com base em um calculo composto de porcentagem, a função do php que faz esse calculo constrói uma array que deverá ser retornada ao ajax que que solicita essa função:

 

 

<?php
$sql_1 = "SELECT user_cod, user_name FROM users";
            $users = Components::get_rs_array_stmt_PDO($sql_1);
            $users_cod = array_column($users, 'user_cod');
            $SQL_users_cod = implode("','", $users_cod);

            $sql_2 = "SELECT * FROM empresas_base WHERE responsavel IN ('$SQL_users_cod') AND nome != ''";
            $emps = Components::get_rs_array_stmt_PDO($sql_2);
            $emps_cod = array_column($emps, 'cod');
            $SQL_emp_cod = implode("','", $emps_cod);

            $sql_3 = "SELECT * FROM controle_fiscal WHERE empresa IN ('$SQL_emp_cod') AND exercicio = '$exercicio'";

            $controles = Components::get_rs_array_stmt_PDO($sql_3);

            $series = [];
            $drilldown = [];

            $a = 1;
            foreach ($users as $user) {
                $series[$a]['name'] = $user['user_name'];

                $drilldown[$a]['name'] = $user['user_name'];
                $drilldown[$a]['id'] = $user['user_name'];

                $colaborador[$a] = $user['user_cod'];
                $count_tot = 0;
                $count_t_porc = 0;
                $count_apuracao_tot = 0;
                $count_recibo_simples_tot = 0;
                $count_data_envio_tot = 0;
                $count_data_confirmacao_tot = 0;
                $count_entrada_notas_tot = 0;
                $count_saida_notas_tot = 0;
                $count_sintegra_tot = 0;
                $count_difal_destda_tot = 0;
                $count_retencoes_cpom_tot = 0;
                $count_sped_fiscal_tot = 0;
                $count_sped_contrib_tot = 0;
                $count_dctf_tot = 0;
                $count_retencoes_tot = 0;
                $count_pgdas_tot = 0;
                foreach ($emps as $emp) {
                    $responsavel = $emp['responsavel'];

                    if ($responsavel == $colaborador[$a]) {

                        $series[$a]['id'] = $emp['id'];
                        $series[$a]['cod'] = $emp['cod'];
                        $series[$a]['nome'] = $emp['nome'];
                        $series[$a]['cnpj'] = $emp['cnpj'];
                        $series[$a]['insc_estadual'] = $emp['insc_estadual'];
                        $series[$a]['grupo_easy'] = $emp['grupo_easy'];
                        $series[$a]['tributacao'] = $emp['tributacao'];
                        $count_controles = count($controles);
                        foreach ($controles as $controle) {

                            $cod = $controle['empresa'];
                            if ($series[$a]['cod'] == $cod) {

                                $controle_cod = $controle['cod'];
                                $apuracao = Components::convert_into_calc_val($controle['apuracao']);
                                $recibo_simples = Components::convert_into_calc_val($controle['recibo_simples']);
                                $data_envio = $controle['data_envio'];
                                $data_confirmacao = $controle['data_confirmacao'];
                                $entrada_notas = Components::convert_into_calc_val($controle['triagem_notas_ent']);
                                $saida_notas = Components::convert_into_calc_val($controle['triagem_notas_saida']);
                                $sintegra = Components::convert_into_calc_val($controle['sintegra']);
                                $difal_destda = Components::convert_into_calc_val($controle['difal_destda']);
                                $retencoes_cpom = Components::convert_into_calc_val($controle['retencoes_cpom']);
                                $sped_fiscal = Components::convert_into_calc_val($controle['sped_fiscal']);
                                $sped_contrib = Components::convert_into_calc_val($controle['sped_contrib']);
                                $dctf = Components::convert_into_calc_val($controle['dctf']);
                                $retencoes = Components::convert_into_calc_val($controle['retencoes']);
                                $pgdas = Components::convert_into_calc_val($controle['pgdas']);
   
                                $calc_porc_obrig_response = responseMaker::get_calc_porc_obrig_executed($entrada_notas, $saida_notas, $apuracao, $data_confirmacao, $data_envio, $entrada_notas, $saida_notas, $series[$a]['insc_estadual'], $series[$a]['grupo_easy'], $pgdas, $series[$a]['tributacao'], $sintegra, $recibo_simples, $difal_destda, $retencoes_cpom, $sped_fiscal, $sped_contrib, $dctf, $retencoes);
                                if($data_envio != NULL){
                                    $data_envio_calc = 1;
                                }else{
                                    $data_envio_calc = 0;
                                }
                                if($data_confirmacao != NULL){
                                    $data_confirmacao_calc = 1;
                                }else{
                                    $data_confirmacao_calc = 0;
                                }
                                $count_tot += 1;
                                $count_apuracao_tot += $apuracao;
                                $count_recibo_simples_tot += $recibo_simples;
                                $count_data_envio_tot += $data_envio_calc;
                                $count_data_confirmacao_tot += $data_confirmacao_calc;
                                $count_entrada_notas_tot += $entrada_notas;
                                $count_saida_notas_tot += $saida_notas;
                                $count_sintegra_tot += $sintegra;
                                $count_difal_destda_tot += $difal_destda;
                                $count_retencoes_cpom_tot += $retencoes_cpom;
                                $count_sped_fiscal_tot += $sped_fiscal;
                                $count_sped_contrib_tot += $sped_contrib;
                                $count_dctf_tot += $dctf;
                                $count_retencoes_tot += $retencoes;
                                $count_pgdas_tot += $pgdas;


                                $count_t_porc += $calc_porc_obrig_response;
                            } else {

                                $count_tot += 0;
                                $count_apuracao_tot += 0;
                                $count_recibo_simples_tot += 0;
                                $count_data_envio_tot += 0;
                                $count_data_confirmacao_tot += 0;
                                $count_entrada_notas_tot += 0;
                                $count_saida_notas_tot += 0;
                                $count_sintegra_tot += 0;
                                $count_difal_destda_tot += 0;
                                $count_retencoes_cpom_tot += 0;
                                $count_sped_fiscal_tot += 0;
                                $count_sped_contrib_tot += 0;
                                $count_dctf_tot += 0;
                                $count_retencoes_tot += 0;
                                $count_pgdas_tot += 0;
                                $count_t_porc += 0;
                            }
                        }
                    }
                }

                $tot_porc = number_format($count_t_porc / $count_tot, 2, '.', '');
                $tot_apuracao = number_format($count_apuracao_tot/$count_tot, 2, '.', '');
                $tot_recibo_simples = number_format($count_recibo_simples_tot/$count_tot, 2, '.', '');
                $tot_data_envio = number_format($count_data_envio_tot/$count_tot, 2, '.', '');
                $tot_data_confirmacao = number_format($count_data_confirmacao_tot/$count_tot, 2, '.', '');
                $tot_entrada_notas = number_format($count_entrada_notas_tot/$count_tot, 2, '.', '');
                $tot_saida_notas = number_format($count_saida_notas_tot/$count_tot, 2, '.', '');
                $tot_sintegra = number_format($count_sintegra_tot/$count_tot, 2, '.', '');
                $tot_difal_destda = number_format($count_difal_destda_tot/$count_tot, 2, '.', '');
                $tot_retencoes_cpom = number_format($count_retencoes_cpom_tot/$count_tot, 2, '.', '');
                $tot_sped_fiscal = number_format($count_sped_fiscal_tot/$count_tot, 2, '.', '');
                $tot_sped_contrib = number_format($count_sped_contrib_tot/$count_tot, 2, '.', '');
                $tot_dctf = number_format($count_dctf_tot/$count_tot, 2, '.', '');
                $tot_retencoes = number_format($count_retencoes_tot/$count_tot, 2, '.', '');
                $tot_pgdas = number_format($count_pgdas_tot/$count_tot, 2, '.', '');
             
                $series[$a]['y'] = $tot_porc;
                $series[$a]['drilldown'] = $user['user_name'];
                $drilldown[$a]['data'] = Array(
                    "apuracao" => $tot_apuracao,
                    "recibo_simples" => $tot_recibo_simples,
                    "data_envio" => $tot_data_envio,
                    "data_confirmacao" => $tot_data_confirmacao,
                    "entrada_notas" => $tot_entrada_notas,
                    "saida_notas" => $tot_saida_notas,
                    "sintegra" => $tot_sintegra,
                    "difal_destda" => $tot_difal_destda,
                    "retencoes_cpom" => $tot_retencoes_cpom,
                    "sped_fiscal" => $tot_sped_fiscal,
                    "sped_contrib" => $tot_sped_contrib,
                    "dctf" => $tot_dctf,
                    "retencoes" => $tot_retencoes,
                    "pgdas" => $tot_pgdas,
                );
                $a++;
            }
            $response = [];
            $response['series'] = $series;
            $response['drilldown'] = $drilldown;
       
        }

        //print_r($response);
        //header("Content-type: text/json");
        //return json_encode($response);
        echo json_encode($response);

 

O ajax que faz a solicitação

 


$(document).on('click', '.exec_render_chart_controle_de_obrigacoes_fiscal', function (a) {
    a.preventDefault;
    var setor = $(this).data('setor');
    var type = $('.tipos_de_graficos_fiscal').val();
    var exercicio = $(".exercicio").val();

    $.ajax({
        type: "POST",
        url: "call_functions.php",
        data: {function: 'exec_render_chart_controle_de_obrigacoes_fiscal', type: type, exercicio: exercicio},
        dataType: 'json',
        success: function (data)
        {
            //var chart = data['chart'];
            //var data_infos = data['data'];
            alert(type);
            $('.' + setor + '_container').empty().html("<div id='chart_container' style='margin:0px'></div>");
            if (type === '1') {
                concluidos_por_regime_chart(data);
            }
            if (type === '2') {
                concluidos_por_responsavel_chart(data);
            }

        }
    });
});

 

 

O grande problema é, os cálculos estão sendo feitos ok, mas, quando eu tento retornar a array $response com json_encode, ele retorna sempre vazio, e quando retorno com print_r ele exibe os valores corretamente, não consigo achar o que pode ser isso de jeito nenhum, se alguém tiver alguma ideia agradeço.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

3 respostas a esta questão

Recommended Posts

2 minutos atrás, EdCesar disse:

O json_encode só aceita codificação UTF-8, tente usar utf8_encode() nos seus campos

 Era isso mesmo, postei e logo em seguida deu boa kk

 

A única diferença do que você disse é que coloquei o UTF8 na conexão do PDO.

 

  $PDO->exec("set names utf8");

 

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde AnthraxisBR

 

EDIT-> ESTAVA A ESCREVER E PELOS VISTOS JÁ ESTA RESOLVIDO KKSKSKSKSKSKS MELHOR

 

 

 Tenta fazer o seguinte no teu ficheiro onde fazer a ligação à base de dados

acrescenta a seguinte linha->

mysqli_set_charset($connection, "utf8");

Presta atenção pois poderás ter de alterar o nome da variável $conection consoante o teu código ...

 

Essa função json_encode não funciona se tiver caracteres não codificados e se não tiveres o código acima que te mostrei é bem provável que existam caracteres não codificados...

 

Espero que te tenha ajudado!

 

Abraço 

 

Vítor Mendes

 

 

 

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Fala galera.
      Espero que todos estejam bem.
      Seguinte: Tenho um arquivo xml onde alguns campos estão com : (dois pontos), como o exemplo abaixo:
       
      <item>
      <title>
      d sa dsad sad sadasdas
      </title>
      <link>
      dsadas dsa sad asd as dsada
      </link>
      <pubDate>sadasdasdsa as</pubDate>
      <dc:creator>
      d sad sad sa ad as das
      </dc:creator>
      </item>
       
      Meu código:
       
      $link = "noticias.xml"; 
      $xml = simplexml_load_file($link); 
      foreach($xml -> channel as $ite) {     
           $titulo = $ite -> item->title;
           $urltitulo = $ite -> item->link;
           print $urltitulo = $ite -> item->dc:creator;
      } //fim do foreach
      ?>
       
      Esse campo dc:creator eu não consigo ler. Como faço?
       
      Agradeço quem puder me ajudar.
       
      Abs
       
       
    • Por First
      Olá a todos!
       
      Eu estou criando um sistema do zero mas estou encontnrando algumas dificuldades e não estou sabendo resolver, então vim recorrer ajuda de vocês.
      Aqui está todo o meu código: https://github.com/PauloJagata/aprendizado/
       
      Eu fiz um sistema de rotas mas só mostra o conteúdo da '/' não sei porque, quando eu tento acessar o register nada muda.
      E eu também quero que se não estiver liberado na rota mostra o erro de 404, mas quando eu tento acessar um link inválido, nada acontece.
      Alguém pode me ajudar com isso? E se tiver algumas sugestão para melhoria do código também estou aceitando.
       
       
      Desde já, obrigado.
    • Por landerbadi
      Olá pessoal, boa tarde
       
      Tenho uma tabela chamada "produtos" com os seguintes campos (id, produto) e outra tabela chamada "itens" com os seguintes campos (id, prod_01, prod_02, prod_03, prod_04).
       
      Na tabela produtos eu tenho cadastrado os seguintes produtos: laranja, maçã, uva, goiaba, arroz, feijão, macarrão, etc.
       
      Na tabela itens eu tenho cadastrado os itens da seguinte maneira:
       
      1, laranja, uva, arroz, feijão;
      2, maçã, macarrão, goiaba, uva;
      3, arroz, feijão, maçã, azeite
       
      Meu problema é o seguinte: 
      Eu escolho um produto da tabela "produtos", por exemplo "uva".  Preciso fazer uma consulta na tabela "itens" para ser listado todos os registros que contenham o produto "uva" e que todos os demais produtos estejam cadastrados na tabela "produtos".
       
      No exemplo acima seria listado apenas dois registros, pois o terceiro registro não contém o produto "uva". 
       
      Alguém pode me ajudar? Pois estou quebrando a cabeça a vários dias e não consigo achar uma solução.
    • Por landerbadi
      Boa tarde pessoal. Estou tentado fazer uma consulta no banco de dados porém estou tendo dificuldades. Tenho uma tabela chamada "itens" com os seguintes campos: id, item, plural, ativo. Nela tem cadastrado vários itens e seu respectivo plural. No campo ativo eu coloco a letra "S" para informar que esta palavra está ativa no sistema. Por exemplo: 1, casa, casas, S 2, mesa, mesas, S 3, cama, camas, S 4, moto, motos, S 5, rádio, rádios O quinto registro "radio" não está ativo no sistema pois não tem um "S" no campo ativo. E outra tabela chamada "variações" com os seguintes campos (id, item1, item2, item3) com os seguintes registros: 1, casa, camas, moto 2, mesas, casas, radio 3, rádio, cama, mesa Eu preciso fazer uma busca na tabela variações da seguinte maneira: Eu escolho um registro na tabela "itens", por exemplo "casa". Preciso fazer com que o php me liste todos os registros da tabela "variações" que contenham a palavra "casa". Porém se tiver algum registro com a palavra "casas" também tem que ser listado. Neste caso ele irá encontrar dois registros. Agora eu preciso que o php verifique os demais itens e faça a listagem apenas dos item que estão ativos (que contenham um "S" no campo ativo. Neste caso ele irá encontrar apenas um registro, pois o segundo registro contém a palavra "rádio". E "rádio" não está ativo na tabela itens. Como faço isso?
    • Por First
      Olá a todos!
       
      Quando eu tento fazer o login me mostra esse erro "Could not log you in."; Alguém sabe me ajudar a resolver esse problema no meu código?
      <?php require_once("core/init.php"); if (Input::exists()) { if (Token::check(Input::get("token"))) { $validate = new Validate(); $validation = $validate->check($_POST, array( "username" => array("required" => true), "password" => array("required" => true) )); if ($validation->passed()) { $user = new User(); $remember = (Input::get("remember")) === "on" ? true : false; $login = $user->login(Input::get("username"), Input::get("password"), $remember); if ($login) { Session::flash("home", "Welcome back!"); Redirect::to("index.php"); } else { echo "Could not log you in."; } } else { foreach ($validation->errors() as $error) { echo $error."<BR>"; } } } } ?> <form action="" method="POST"> <div class="field"> <label for="username">Username</label> <input type="text" name="username" id="username"> </div> <div class="field"> <label for="password">Password</label> <input type="password" name="password" id="password"> </div> <div class="field"> <label for="remember"> <input type="checkbox" name="remember" id="remember"> Remember me </label> </div> <input type="hidden" name="token" value="<?php echo Token::generate(); ?>"> <input type="submit" value="Log in"> </form>  
       
      Desde já obrigado.
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.