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 fideles
      Pessoal, tudo bem?
       
      Tenho uma pagina onde as pessoas me enviam NF para faturamento.
       
      Me perguntaram, é possível que essa pagina funcione por exemplo, somente os 15 primeiros dias do mês e os últimos 15 dias, elas permaneça fechada ou direcione para outra pagina mostrando "Período de envio fechado" (exibir a mensagem é tranquilo).
       
      Alguém imagina algo? Não consegui, sendo sincero mesmo.
       
    • By asacap1000
      Salve Galera!!! estou com um projeto onde preciso disponibilizar na intranet documentos que estão em um servidor.
      Estes documentos estão salvos em diversas pastas dividido por dias meses e anos etc etc.
      Não quero que list todos os documentos porém ele seria pesquisado.
      Exemplo: NF 123456
      No arquivo salvaram assim "cliente NF 123456.pdf", tentei utilzar o glob porém ele não retorna nada nem deu erro.
      Por ser em outro servidor não seu se ele consegue ler já pesquisei mas não encontrei nada sobre isso.
       
      Saberiam me ajudar com este caso:
       
      Na intranet ele terá uma busca normal de relatórios ao listar essas informações ele diponibiliza um link com o numero da NF a qual eu chamaria essa página para realizar a busca no servidor e assim abrir o arquivo no navegador..
    • By k9studio
      Olá Pessoal,
       
      Tenho um campo em uma tabela que grava os dados neste formato a baixo:
      {""user_id":"1","user_token":"5181e24c8a7e60304156e08595f48ad6"}
       
      como faço para chamar esses dados no php separados...
       
      fico grato se alguém puder ajudar..
    • By adrianno
      Olá, estou com a seguinte dúvida com uso do JWT , trabalho com PHP a um tempo e estou migrando alguns projetos para formato API REST,  mas também começando a trabalhar com JS,REACT, NODE etc e a dúvida basicamente se aplica independente da linguagem uma vez  que o formato JWT é padrão.
      Vamos lá,   imagine que ao fazer um login bem sucedido o usário receba um token JWT  padrão, e no payload  coloquei o ID: "ff0eb2864feb22354747f8c85d42ccb5" e EMAIL :  "email@teste.com" do usuário junto com outras info padrão de um JWT,   mas qual pe a forma mais correta de validar este token?  usando métodos de verificar a assinatura, ok,   desmontando e montando novamente o token passado para comparar, OK  mas como eu verifico a integridade do usuário, imagine que eu de alguma forma um usuário malicioso obtenha o token de outro usuário, se ele enviar este token em uma requisição, ele seria aceito, mesmo sem ter que fazer o login de usuário, uma vez  que a rota em questão vai verificar o token e o mesmo teoricamente vai funcionar e este teria acesso a API em nome de outro usuário. Quais são as formas corretas de se trabalhar com JWT?
    • By leandro123456789
      <div id="direito">
             
             <?php 
                      
                 $link = filter_input(INPUT_GET, 'link');
                 
                 $pag[1] = "../admin/home.php";
                 $pag[2] = "../admin/classes/Lista.php";
                 
              
              
                 if(!empty($link)){
                     
                     if(file_exists($pag[$link]))
                        
                      {
                         include $pag[$link];
                      
                      }
                        
                      else
                      { 
                         
                          include "home.php";
                      
                      }
                     
                 }else{
                     include "home.php";
                 }
              
              ?>
             
          </div>
       
       
      Estou tentando colocar a paginação do meu banco em $ pag [2] na minha página: ../admin/classes/Lista.php tem o seguinte código de paginação:

      <? php
          
          include_once ("../ admin / classes / ClassConexao.php");
          
          
          // verifique a página atual se informado no URL, caso contrário, ela será atribuída como 1ª página
          $ pagina = (isset ($ _ GET ['link = 2']))? $ _GET ['link = 2']: 1;
       
          // seleciona todos os itens da tabela
          $ cmd = "selecione * da categoria";
          $ produtos = mysqli_query ($ conn, $ cmd);
          
          // conta o total de itens
          $ total = mysqli_num_rows ($ produtos);
       
          // seta o número de itens por página, neste caso, 2 itens
          $ registros = 2;
       
          // calcula o número de páginas arredondando o resultado
          $ numPaginas = teto ($ total / $ registros);
       
          // variável para calcular o início da visualização com base na página atual
          $ inicio = ($ registros * $ pagina) - $ registros;
       
          // seleciona itens por página
          $ cmd = "selecione * da categoria limite $ inicio, $ registros";
          $ produtos = mysqli_query ($ conn, $ cmd);
          $ total = mysqli_num_rows ($ produtos);
           
          // exibe produtos selecionados
          while ($ produto = mysqli_fetch_array ($ produtos)) {
              echo $ produto ['id_categoria']. "-";
              echo $ produto ['categoria']. "-";
              echo $ produto ['ativo_categoria']. "<br />";
          }

      // Não sei como consertar esta parte para mostrar a paginação nesse $ pag [2] = "../admin/classes/Lista.php";
           
          // exibe paginação
          para ($ i = 1; $ i <$ numPaginas + 1; $ i ++) {
              
             echo "<a href='?pagina=$i'>". $ i. "</a>";
          }
                  
      ?>
      Meu menu fica assim:

      <div id = "sessao"> Categoria </div>
         <ul>
             
            
             <li> <a href="index.php?link=3"> Cadastro </a> </li>
             <li> <a href="index.php?link=2"> Listar / Editar </a> </li>
         
        </ul>
×

Important Information

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