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 thgsousa3122
      <?php $url = 'www.site.com'; $dadosSite = file_get_contents($url); echo $dadosSite; ?> <script type="text/javascript"> window.onload = function(){ var x = document.getElementsByClassName("fraction")[0].innerHTML= "100"; } </script> Glr tenho esse codigo, eu queria alterar o conteudo que tem como classe "fraction", porem ele nao da resposta, alguem tem alguma sujestão?
    • By brunoogm
      Pessoal, vou iniciar um desenvolvimento mobile usando Xamarin
      e gostaria de saber se alguém conhece alguma maneira
      ou tenha algum doc. de como utilizar PHP e MySql (e se necessário Json)
      para realizar um CRUD e a partir daí eu poder me entender com a plataforma...
       
      Desde já obrigado.
       
       
    • By drx
      Olá pessoal!
       
      Me tirem uma dúvida. Já desenvolvo com vb6 já faz algum tempo. E também venho incrementando o conhecimento para desenvolver para web com php e por aí vai.
      A pergunta que não quer calar: Com o VS.NET eu desenvolvo para desktop e web ?
      Por que a pergunta? Porque quero investir tempo em um IDE que me atenda as duas coisas.
      Aguardo
    • By eduardaarosaa
      Eu estou fazendo um sistema com multipolos uploads de aquivos.
       
      Aqui ele está movendo o arquivo para pasta upload: 
       $upload = $request->image[$i]->storeAs('upload', $nameFile);
      Ao dar var_dump nesta variável ela retorna: 
       
       string(38) "upload/172118201908225d5ef93e4d803.png" string(38) "upload/172118201908225d5ef93e4f9b2.png" string(38) "upload/172118201908225d5ef93e50899.png" string(38) "upload/172118201908225d5ef93e51b72.png"
       
      São os 4 arquivos que deram upload, porém está em string e eu queria usar em array para separar em variáveis e adicionar no banco. 
       
      Use o explode assim: 
      $array = explode(",", $upload);
      Então ele retornou vários arrays com o mesmo indice: 
       
      array(1) { [0]=> string(38) "upload/172322201908225d5ef9ba3cf15.png" } array(1) { [0]=> string(38) "upload/172322201908225d5ef9ba3edab.png" } array(1) { [0]=> string(38) "upload/172322201908225d5ef9ba3fbcc.png" } array(1) { [0]=> string(38) "upload/172322201908225d5ef9ba4163a.png" }
       
      Como faço para poder separar esses arrays? Ou mudar os índices? Se alguém souber .. 
      Obrigada!!!
       
    • By gabrielslessa
      Olá amigos, estou com uma dúvida, não estou conseguindo gravar os dados contidos numa sessão no bd mysql com conexão PDO. Tenho uma sessão onde estão todos os produtos do carrinho de compras em php, como faço para gravar esses itens separadamente no bd? Obrigado desde já!
       
      código onde está gravando no bd (primeiro grava os dados do post e depois grava os dados da sessao:
       
      //gravando no bd $this->db->insert('as_pedidos', array( "user_id" => $userId, "ped_rua" => $ped_rua, "ped_numero" => $ped_numero, "ped_cep" => $ped_cep, "ped_bairro" => $ped_bairro, "ped_vtotal" => $ped_vtotal, "ped_frete" => $ped_frete, "ped_distance" => $ped_distance, "ped_forma_pg" => $forma_pagProtect, "ped_comentario" => obsProtect, "ped_vtroco" => $trocoProtect, "ped_acresc_cred" => $acresc_credProtect, "ped_op_cred" => $opProtect, "ped_hora" => date('Y-m-d H:i:s') )); $ped_id = $this->db->lastInsertId(); foreach($_SESSION["products"] as $dado => $value) : NÃO ESTOU CONSEGUINDO A PARTIR DAQUI.... //gravando no bd $this->db->insert('as_ped_itens', array( "id_prod" => $product['id'], "qtd" => $product['product_qty'], "nome_prod" => $product['nome'], "valor" => $product['preco'], "id_ped" => $ped_id )); endforeach;  
       
       
      Código onde grava os dados na sessão ($_SESSION["products"]):
       
      setlocale(LC_MONETARY,"pt_BR"); # add products in cart if(isset($_POST["id"])) { foreach($_POST as $key => $value) : $product[$key] = filter_var($value, FILTER_SANITIZE_STRING); endforeach; $id = preg_replace( '/[^0-9]/is', '', $product['id'] ); $product_qty = preg_replace( '/[^0-9]/is', '', $_POST["product_qty"] ); $statement = app('db')->prepare("SELECT as_produtos.nome, as_produtos.preco, as_produtos.acresc FROM as_produtos WHERE id = :id LIMIT 1"); $statement->bindParam(':id', $id, PDO::PARAM_INT); $statement->execute(); foreach($statement as $dados_produto) : $product["product_name"] = $dados_produto["nome"]; $product["product_price"] = $dados_produto["preco"]; $product["product_acresc"] = $dados_produto["acresc"]; if(isset($product["product_name"])){ if(isset($_SESSION["products"][$id])) { $_SESSION["products"][$id]["product_qty"] = $_SESSION["products"][$id]["product_qty"] + $_POST["product_qty"]; } else { $_SESSION["products"][$id] = $product; } } else { $_SESSION["products"][$id] = $product; } endforeach; //exibindo o total de itens $total_product = array_sum(array_column($_SESSION['products'], 'product_qty')); //exibindo o total de produtos //$total_product = count($_SESSION["products"]); die(json_encode(array('products'=>$total_product))); }  
       
×

Important Information

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