Jump to content
  • 0
AnthraxisBR

PHP retorna vazio com json

Question

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.

 

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0
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!

Share this post


Link to post
Share on other sites
  • 0

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

 

 

 

 

 

  • +1 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By Adriano Barbosa
      Olá, tudo bom?
       
      Se alguém puder me ajudar já agradeço de agora.
       
      Tenho um .htaccess da seguinte forma:
      RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php?page=$1  
      No meu arquivo index.php eu pego a variável "page" e busco no banco de dados o arquivo correspondente ao valor informado, feito isso faço o seguinte:
       
      require ($Rs->nomeArquivo);
      que seria isso require (produto-detalhe.php);
       
      O que ocorre é o seguinte, algumas páginas eu preciso passar parâmetros e funciona quando utilizo ( & ) porém se for utilizar o ( ? ) não consigo recuperar os valores informados.
       
      Exemplos:
       
      Assim funciona:
      busca&b=carrinho
       
      Assim não funciona:
      busca?b=carrinho
       
      Não consigo pegar o valor informado.
      Alguém já passou por isso? ou estou fazendo da forma incorreta?
       
      Podem me ajudar.
      Abs
    • By peterstefan
      Olá, tenho 4 campos em um formulario, porem eles não são obrigatórios, queria ver qual tecnica para fazer que o cliente preencha pelo menos um dos campos. caso ele tente enviar vazio mostrar uma mensagem para ele avisando que tem que preencher pelo menos um dos 4 campos... 
       
      Obrigado!!
    • By Alex Dias
      Olá amigo, não sou usuário avançado, conseguir um código-fonte que lista arquivos de uma pasta no servidor, esses fontes listavam apenas os arquivos, daí eu dei uma incrementada nele para além dos arquivos ele listar também o tamanho do arquivo e a data da última modificação, segue ANEXO como ele está exibindo os resultados com perfeição.

      A minha dificuldade é que ele lista os arquivos da pasta por ordem alfabética de A a Z e eu gostaria muito que essa lista de arquivos fosse exibida por ordem de data de modificação decrescente, da mais atual para a mais antiga, e não estou conseguindo realizar essa tarefa, gostaria muito da ajuda dos amigos para solucionar esse ocorrido, desde já agradeço a ajuda de todos.

      Segue o código-fonte

       
      <?php //$diretorio = "D:\SERVIDOR-APACHE\PATRIMONIO TECNOLOGIA\images"; $diretorio = "/home/patrimonio/www/sites/default/files/ftpdata/download/Acesso Remoto"; //USADO PARA LISTAR OS ARQUIVOS DA PASTA $url = "sites/default/files/ftpdata/download/Acesso Remoto/"; // USADO PARA FAZER O LINK DE DOWNLOAD // abre o diretório $ponteiro = opendir($diretorio); // monta os vetores com os itens encontrados na pasta while ($nome_itens = readdir($ponteiro)) { $itens[] = $nome_itens; } // ordena o vetor de itens sort($itens); // percorre o vetor para fazer a separacao entre arquivos e pastas foreach ($itens as $listar) { // retira "./" e "../" para que retorne apenas pastas e arquivos if ($listar!="." && $listar!=".."){ // checa se o tipo de arquivo encontrado é uma pasta if (is_dir($listar)) { // caso VERDADEIRO adiciona o item à variável de pastas $pastas[]=$listar; } else{ // caso FALSO adiciona o item à variável de arquivos $arquivos[]=$listar; } } } // lista as pastas se houverem if ($pastas != "" ) { foreach($pastas as $listar){ print "";} } // lista os arquivos se houverem if ($arquivos != "") { foreach($arquivos as $listar){ //CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB $tamanho = filesize("$url/$listar"); $kb = "1024"; $mb = "1048576"; $gb = "1073741824"; $tb = "1099511627776"; if($tamanho<$kb){ $tamanho_resposta = ($tamanho." bytes"); }else if($tamanho>=$kb&&$tamanho<$mb){ $kilo = number_format($tamanho/$kb,2); $tamanho_resposta = ($kilo." KB"); }else if($tamanho>=$mb&&$tamanho<$gb){ $mega = number_format($tamanho/$mb,2); $tamanho_resposta = ($mega." MB"); }else if($tamanho>=$gb&&$tamanho<$tb){ $giga = number_format($tamanho/$gb,2); $tamanho_resposta = ($giga." GB"); } // FIM CONDICAO PARA NOMEAR EM BYTES, KB, MB, GB, TB // DATA DA ULTIMA MODIFICACAO $modificado = date("d/m/Y H:i:s", filemtime("$url/$listar"))."<br>"; // FIM DATA DA ULTIMA MODIFICACAO //echo"$modificado"; // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO // FAZ A LISTA DE XIBICAO DOS AQRUIVOS DO DIRETORIO echo" <tr> <td width='438' height='30' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;<a href='$url/$listar' target='_blank'>$listar</a></font></p></td> <td width='192' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$tamanho_resposta</font></p></td> <td width='340' bgcolor='#ffffff'><p><font size='2'>&nbsp;&nbsp;$modificado</font></p></td> <td width='202' bgcolor='#ffffff'><p align='center'><a href='$url/$listar' target='_blank'><img src='images/nuvem.jpg'/></a></p></td> </tr> "; } } else { echo "<p><font color='#ff0000' size='3'>Não há nenhum arquivo.</font><p><br>"; } echo"</table>" ?>  

    • By danicarla
      OI gente, gostaria de de ideias de como posso desenvolver um player que tenha mais de uma faixa...

      Algo semelhante a isso: https://www.karaoke-version.com/custombackingtrack/u2/beautiful-day.html
       
      Alguém tem alguma idéia de como fazer?
    • By luialcantara
      Olá, a empresa onde trabalho tem uma página de login para área restrita que está com problema na função de cadastro. O formulário está enviando os dados para o banco de dados e o usuário se torna ativo para acesso normalmente. O problema é que a mesma função que salva os dados deveria redirecionar o cliente para a área restrita ou então para a página inicial para que ele digite usuário e senha e consiga acessar a página. 
       
      A página já estava pronta quando comecei aqui e eu não tenho domínio sobre php, mas já corrigi alguns erros que estavam impedindo o cadastro. Porém os clientes reclamam pois após concluir o cadastro a imagem de carregamento não desaparece, então apenas coloquei um delay para evitar os questionamentos, pois o usuário fica ativo, então é só voltar para o login que eles conseguem usar nosso site.
       
      A página está dividida entre uma de login (php), uma para cadastro (php) e a principal, que está no wordpress. 
       
      Função do formulário de cadastro:
                  submitHandler: function(form) {                 $(".botoesactions").hide();                 $(".ajaxloader").show();                 var dados = jQuery( form ).serialize();                  $(".ajaxloader").fadeOut(1500);                 $.ajax({type: "POST", data: dados, url:"<?php echo get_site_url(); ?>/atendimento/cadastrar",success: function(data){                     console.log(data);                     try {             var ret = JSON.parse(data);                     } catch (e) {          var ret = false;                    }                     $(".ajaxloader").hide();                     if(ret !== false && ret.retorno === "ok"){                         console.log(ret);                         alert("Cadastrado realizado com sucesso!");                         window.location.href = "<--!?php echo get_site_url(); ?-->/atendimento/";                     }else if(ret !== false && ret.retorno === "fail"){                         alert(ret.mensagem);                         $(".botoesactions").show();                     }else{                         $(".botoesactions").show();                     }                 }});             }  
       
      Função de inserção de informações no banco de dados:
      elseif('cadastrar' == $syjusaten){                         if(!isset($_SESSION) || !isset($_SESSION['jusate_session']['answeris']) || $_SESSION['jusate_session']['answeris'] != 42 ){                 if($_POST && $_POST['typos'] == "iscadastro"){                     $url= $urlServer.'/Cliente/ClienteSite/cadastraclientesite';                     $parms = array(                         "usuario" => $_POST['user'],                         "Senha" => $_POST['pass'],                         "Cliente.ClienteId" => $_POST['clienteId'],                         "Cliente.Nome" => $_POST['nome'] /*Existem outros dados, mas acho que ficaria muito codigo e não contribuem para erro*/                     );                     $respServer = syJuCurl($url, $parms);                     if($respServer == ""){                         echo json_encode( array(                             "retorno" => "fail",                             "mensagem" => "Não foi possivel realizar o cadastro. Tente novamente mais tarde"                         ));                     }else{     echo $respServer;                         }                 }else{                     echo "ELSEE";                     header("Location: ".get_site_url()."/atendimento");                 }                         exit;             }else{                 header("Location: ".get_site_url()."/atendimento/");             }         }  
      Agradeço pela atenção ;)
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.