Jump to content
alan de souza arantes

Gero um relatório e quando o campo esta em branco ele preenche o campo com outra informação qualquer.

Recommended Posts

Boa tarde Galera!

 

Tenho um cod que extrai relatórios do MYSQL em forma de Excel, meu problema é que quando o campo que busco esta vazio ele preenche com outra informação qualquer.

Como eu resolvo isso?

 

<?php

include("../conexao_checkout.php");


session_start();

$usuario     = $_SESSION['UsuarioID'];
$usuario_nome  = $_SESSION['UsuarioNome'];
$ip      = $_SERVER["REMOTE_ADDR"];
$data_contratado       = date('Y-m-d H:i:s');

$exibicao   = $_POST["exibicao"];
$filtro     = $_POST["filtro"];
$entrega    = $_POST["entrega"];
$contrata   = $_POST["contrata"];

if ($filtro > 0) {
    $cli = " AND `id_cliente` = ".$filtro;
}else{
    $cli = "";
}

if ($entrega  != "") {
    $data2 = str_replace('/', '-', $entrega);
    $nova_data2 = strftime("%Y-%m-%d", strtotime($data2));
    $ent = "AND `prazo_entrega` LIKE '%".$nova_data2."%' ";
}else{
    $ent = "";
}

if ($contrata  != "") {
    $data1 = str_replace('/', '-', $contrata);
    $nova_data = strftime("%Y-%m-%d", strtotime($data1));
    $cont = "AND `contratacao` LIKE '%".$nova_data."%' ";
}else{
    $cont = "";
}


$results = mysqli_query($conexao, "SELECT * FROM `servicos_filiais` WHERE `tecnico_interno` = $usuario {$cli} {$ent} {$cont};");


echo '
    <table class="table table-hover" style="display: none;">
                <thead>
                    <th>ID</th>
                    <th>Ordem</th>
                    <th>COd Serviço</th>
                    <th>Nome Serviço</th>
                    <th>Cliente</th>
                    <th>Filial</th>
                    <th>Acompanhamento</th>
                    <th>Contratação</th>
                    <th>Solicitante</th>
                    <th>Coordenação</th>
                    <th>Técnico</th>
                    <th>Técnico interno</th>
                    <th>Total do Serviço</th>
                    <th>Total de Parcelas</th>
                    <th>Status</th>
                    <th>Observação</th>
                    <th>Data da Observação</th>                    
                </thead>
                <tbody>
                    
                
  ';

while ($row = mysqli_fetch_assoc($results)) {
    $id_cliente       = $row['id_cliente'];
    $id_servico_      = $row['id'];
    $id_filial        = $row['id_filial'];
    $id_coordenacao   = $row['coordenacao'];
    $id_tecnico       = $row['tecnico'];
    $id_tecnico_int   = $row['tecnico_interno'];
    $observacao       = $row['texto'];
    $data_3           = $row['data'];


    $consulta   = mysqli_query($conexao, "SELECT * FROM `clientes` WHERE `id` = {$id_cliente}; ");
    while ($row01 = mysqli_fetch_assoc($consulta)) {
        $nomedocliente = $row01['nome_cliente'];
    }
    $consulta01   = mysqli_query($conexao, "SELECT * FROM `filiais` WHERE `id` = {$id_filial}; ");
    while ($row02 = mysqli_fetch_assoc($consulta01)) {
        $nome_filial = $row02['nome_filial'];
    }
    $consulta02   = mysqli_query($conexao, "SELECT * FROM `login_funcionarios` WHERE `id` = {$id_coordenacao}; ");
    while ($row03 = mysqli_fetch_assoc($consulta02)) {
        $coordenacao = $row03['nome'];
    }
    $consulta03   = mysqli_query($conexao, "SELECT * FROM `login_funcionarios` WHERE `id` = {$id_tecnico}; ");
    while ($row04 = mysqli_fetch_assoc($consulta03)) {
        $tecnico = $row04['nome'];
    }

    $consulta04   = mysqli_query($conexao, "SELECT * FROM `login_funcionarios` WHERE `id` = {$id_tecnico_int}; ");
    while ($row05 = mysqli_fetch_assoc($consulta04)) {
        $tecnico_interno = $row05['nome'];
    }

    $consulta05   = mysqli_query($conexao, "SELECT * FROM `observacao_servicos` WHERE `id_servico` = {$id_servico_}; ");
    while ($row06 = mysqli_fetch_assoc($consulta05)) {
        $observacao_texto = $row06['texto'];
    }

    $consulta06   = mysqli_query($conexao, "SELECT * FROM `observacao_servicos` WHERE `id_servico` = {$id_servico_}; ");
    while ($row07 = mysqli_fetch_assoc($consulta06)) {
        $data_3 = $row07['data'];
    }

    $gerando_status = mysqli_query($conexao, "SELECT * FROM `detalhes_servico` WHERE `id_servico` = {$id_servico_}");
    $contar_parcelas = mysqli_num_rows($gerando_status);
    while($row3 = mysqli_fetch_assoc($gerando_status)){
        $status = $row3['status'];
        if(($status == 0) or ($status == 3) or ($status == 2)){
            $nao_concluido += 1;
        }
    }

    // ---------------- STATUS ----------------- //

    if ($contar_parcelas == 1) {
        $busca_tipo_status = mysqli_query($conexao, "SELECT * FROM `detalhes_servico` WHERE `id_servico` = {$id_servico_} AND `tipo_servico` = 1");
        while ($row_busca_status = mysqli_fetch_assoc($busca_tipo_status)) {
            $status_final = $row_busca_status['status'];
        }
    }
    if ($contar_parcelas == 2) {
        $busca_tipo_status = mysqli_query($conexao, "SELECT * FROM `detalhes_servico` WHERE `id_servico` = {$id_servico_} AND `tipo_servico` = 2");
        while ($row_busca_status = mysqli_fetch_assoc($busca_tipo_status)) {
            $status_final = $row_busca_status['status'];
        }
    }
    if ($contar_parcelas == 3) {
        $busca_tipo_status = mysqli_query($conexao, "SELECT * FROM `detalhes_servico` WHERE `id_servico` = {$id_servico_} AND `tipo_servico` = 3");
        while ($row_busca_status = mysqli_fetch_assoc($busca_tipo_status)) {
            $status_final = $row_busca_status['status'];
        }
    }
    if($status_final ==0){

        $nome_do_status = "A Protocolar";

    }
    if($status_final ==1){

        $nome_do_status = "Concluído";

    }
    if($status_final ==2){

        $nome_do_status = "Protocolado";

    }
    if($status_final ==3){

        $nome_do_status = "Em Andamento";

    }
    if($status_final ==4){

        $nome_do_status = "Pendência Forma";

    }
    if($status_final ==5) {

        $nome_do_status = "Pendência Cliente";
        
    }
    if($status_final ==6) {

        $nome_do_status = "Rescindido";
    }

    // ---------------- STATUS ----------------- //


    echo "<tr>";
    echo "<td>".$row['id']."</td>";
    echo "<td>".$row['ordem_de_servico']."</td>";
    echo "<td>".$row['id_servico']."</td>";
    echo "<td>".$row['nome_servico']."</td>";
    echo "<td>".$nomedocliente."</td>";
    echo "<td>".$nome_filial."</td>";
    echo "<td>".date('d/m/Y', strtotime($row['prazo_entrega']))."</td>";
    echo "<td>".date('d/m/Y', strtotime($row['contratacao']))."</td>";
    echo "<td>".$row['solicitante']."</td>";
    echo "<td>".$coordenacao."</td>";
    echo "<td>".$tecnico."</td>";
    echo "<td>".$tecnico_interno."</td>";
    echo "<td>".number_format($row['valor'], 2, ',', '.')."</td>";
    echo "<td>".$row['parcela_comissao']."</td>";
    echo "<td>".$nome_do_status."</td>";
    echo "<td>".$observacao_texto."</td>";
    echo "<td>".date('d/m/y', strtotime($data_3))."</td>";
    echo "</tr>";
}

echo '</tbody>
            </table>
        
        ';

echo '
  <script src="assets/js/jquery.table2excel.js"></script>
  <script>
    $(function() {
      $(".table").table2excel({
        exclude: ".noExl",
        name: "Lista de Serviços",
        filename: "lista_servicos",
        fileext: ".xls",
        exclude_img: true,
        exclude_links: true,
        exclude_inputs: true
      });
    });
  </script> 
  ';


$insere_registro   = mysqli_query($conexao, "INSERT INTO `historico_acoes` (`id`, `nome_usuario`, `id_usuario`, `acao`, `ip`, `data`, `tipo`) VALUES (NULL, '{$usuario_nome}', {$usuario}, 'Exportou Relatório de serviços cadastrados', '{$ip}', '{$data_contratado}', 6);");


mysqli_close($conexao);

?>

Share this post


Link to post
Share on other sites

alan de souza arantes

Sua dúvida esta mais ou menos dentro da sua própria lógica.

O código esta meio bagunçado e sem você especificar quais os campos que estão vázios e quais os valores que ele assumi, se de outro campo ou se qualquer um outro valor, fica díficil lhe ajudar.

 

Mas fazendo uma breve analise o que eu encontrei de errado é o seguinte:

 

Você tem um LOOP WHILE PRINCIPAL e dentro dele você tem outros LOOP WHILE SECUNDÁRIOS, o que PODE acontecer é que você só alimenta a sua variável de saida SE você encontrar o resultado na sua tabela.

 

EXEMPLO:

TAB1               TAB2               TAB3

REG                 VALOR1          VALOR2

1                       1                      2

2                       1

3                                               1

 

Você fez o primeiro select na tabela 1

Resultado do LOOP PRINCIPAL / REG = 1

          ai você tem o LOOP 2 para obter o resultado da TAB2

          Valor1 obtido no segundo select = 1

          ai você tem o LOOP 3 para obter o resultado da TAB3

          Valor2 obtido no terceiro select = 2

VOLTOU para o primeiro LOOP / REG = 2

          ai você tem o LOOP 2 para obter o resultado da TAB2

          Valor1 obtido no segundo select = 1

          ai você tem o LOOP 3 para obter o resultado da TAB3

          no terceiro select não tem nada, MAS você não atribui um valor novo porque não entra no WHILE então o valor dele fica 2 que foi o valor encontrado anteriormente.

VOLTOU para o primeiro LOOP / REG = 3

          ai você tem o LOOP 2 para obter o resultado da TAB2

          no segundo select não tem nada, MAS você não atribui um valor novo porque não entra no WHILE então o valor dele fica 1 que foi o valor encontrando anteriormente.

          ai você tem de novo o 2 LOOP e para cada resultado você alimenta a variavel de novo

          Valor obtido no terceiro select = 1

FIM LOOP PRINCIPAL

...

Entendeu.

 

O que eu recomendo, ANTES de cada WHILE  você deve LIMPAR suas variáveis.

Ficando assim:

//OKAY AQUI

while ($row = mysqli_fetch_assoc($results)) {
    $id_cliente       = $row['id_cliente'];
    $id_servico_      = $row['id'];
    $id_filial        = $row['id_filial'];
    $id_coordenacao   = $row['coordenacao'];
    $id_tecnico       = $row['tecnico'];
    $id_tecnico_int   = $row['tecnico_interno'];
    $observacao       = $row['texto'];
    $data_3           = $row['data'];
//ATÉ AQUI

//ENTÂO VOCÊ TEM ESSE AQUI:

 

    $consulta   = mysqli_query($conexao, "SELECT * FROM `clientes` WHERE `id` = {$id_cliente}; ");
    while ($row01 = mysqli_fetch_assoc($consulta)) {

//ENTENDA QUE A VARIAVEL $nomedocliente SÓ SERA ALIMENTADA SE ENCONTRAR.
        $nomedocliente = $row01['nome_cliente'];
    }

 

//RECOMENDO VOCÊ SEMPRE LIMPAR ELA E DEPOIS VER SE ALIMENTA OU NÃO.

    $nomedocliente = ""; //LIMPO

    while ($row01 = mysqli_fetch_assoc($consulta)) {
        $nomedocliente = $row01['nome_cliente'];
    }

 

//OUTRO MEIO É, SE O SEU SELECT NÃO TE RETORNAR UMA LISTA (+ de 1 Registro).

//RECOMENDO VOCÊ USAR O IF NO LUGAR DO WHILE E NO ELSE LIMPAR

//A VARIAVEL CASO NÃO ENCONTRE NADA NA TABELA

//FICANDO ASSIM:

    if ($row01 = mysqli_fetch_assoc($consulta)) {
        $nomedocliente = $row01['nome_cliente']; //Alimenta com o valor da tabela
    } else {

        $nomedocliente = ""; //Não encontrou nada na tabela LIMPA a variavel

    }

 

Tenho certeza que com isso você ira resolver o seu problema.

Espero ter ajudado.

 

Att.
Felipe Coutinho

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 eduardaarosaa
      Olá, Estou tentando enviar um formulário com 4 arquivos, porém não estou tendo sucesso.
      Estou usando laravel 5.8. Tenho uma view com 5 campos, sendo 4 arquivos e 1 texto. Através das rotas caminho o form para o controller. 
       
       


    • By manoaj
      Boa tarde pessoal!
      Criei um sistema simples pra web utilizando PHP no backand.
      Mas agora antes do lançamento do sistema surgiu a necessidade de um app de consulta a esse sistema com funções básicas da plataforma Web, ou seja nem todas as funcionalidades serão implementadas no app agora no início.
      Qual a minha melhor alternativa no desenvolvimento híbrido hj em questão de agilidade no desenvolvimento considerando que minha plataforma web e o banco de dados mysql já estão prontos???
    • By adolfo-moro
      Tenho um sistema feito em C# em Windows Form, gostaria de saber se tem algum jeito Do sistema abrir o navegador padrão do sistema Operacional, direcionar para meu site onde terá uma tela de login, a pessoa efetua o login e quando o mesmo for validado, o navegador fechar e voltar para o sistema com o valor do cookie gerado pelo site ou com um código do login, para efetuar posteriores operações por webservice.
      Não seria utilizando o WebBrowser
    • By samuel.huarachi
      Como o sistema da Yellow funciona?
      Como uma requisição no celular, destrava um patinete?

      Tem algum artigo na internet falando disso?
    • By geivisonsales
      Tenho um site sobre conteudos de entretenimento, e todos os posts tem uma imagem de fundo do tmdb, tem alguma maneira de otimizar o carregamento dessas imagens por url? ou alguma outra maneira?
×

Important Information

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