Jump to content
alysson122010

Como fazer relatorio

Recommended Posts

Galera estou tentando fazer um relatorio para meu sistema que tem dados inserido.

estou tentando fazer com os select.

mas quando vou colocar data ai coloco exemplo 03/12/2020 a 03/12/2020 mostra outras data e tmb da conflito em outros fitros como convenio as vezes tem o convenio e nao mostra fica bugando.

tem outra forma de fazer que use um select so e consiga por todos esses filtros?

 

Filtros: data_inicio, data_termino, convenio, posto, status(0, 1).

 

   if($convenio){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE convenio = '$convenio' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if($posto){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE posto = '$posto' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(isset($status)){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if($convenio && $posto){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE convenio = '$convenio' AND posto = '$posto' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if($convenio && isset($status)){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE convenio = '$convenio' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if($posto && isset($status)){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE posto = '$posto' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if($convenio && $posto && isset($status)){
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE convenio = '$convenio' AND posto = '$posto' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }

 

 

Share this post


Link to post
Share on other sites

Consegui resolver fiz tipo analise combinatoria não sei é existe uma forma mais facil porem a que conseguir foi essa

 

if(($data_inicio && $data_termino) != '' && $convenio == '' && $posto == '' && $status == ''){
        echo'So data';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");    
    }
    
    if(($data_inicio && $data_termino && $convenio) != '' && $posto == '' && $status == ''){
        echo'data e convenio';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND convenio = '$convenio' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $posto) != '' && $convenio == '' && $status == ''){
        echo'data e posto';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND posto = '$posto' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $status) != '' && $convenio == '' && $posto == ''){
        echo'data e status';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $convenio && $posto) != '' && $status == ''){
        echo'data , convenio e posto';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND convenio = '$convenio' AND posto = '$posto' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $convenio && $status) != '' && $posto == ''){
        echo'data, convenio e status';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND convenio = '$convenio' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $posto && $status) != '' && $convenio == ''){
        echo'data, posto e status';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND posto = '$posto' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }
    if(($data_inicio && $data_termino && $convenio && $posto && $status) != ''){
        echo'data, convenio, posto e status';
        $examesregistrados = mysqli_query($conn, "SELECT * FROM registropacientesexames WHERE DATE( data_registro ) between '$data_inicio' and '$data_termino' AND convenio = '$convenio' AND posto = '$posto' AND status = '$status' AND codigo_exame = '$idexame' ORDER BY codigo_registro DESC");
    }

 

Share this post


Link to post
Share on other sites

Vamos lá!

 

Sendo breve. Sim!, existe forma mais fácil do

que ficar fazendo um "jogo" de combinações...

 

SEGUE EXEMPLO:

<?php
// VARIÁVEIS PARA TESTE
$idexame = 30;
$convenio = 20;
$data_inicio = "2020-10-20";
$data_termino = "2020-11-20";

// VARIÁVEL QUE ARMAZENARÁ O FRAGMENTO SQL DOS FILTROS
$sqlFiltros = "";
// ARRAY COM AS VARIÁVEIS QUE SERÃO VERIFICADAS, E 
// SUAS RESPECTIVAS COLUNAS NO DB
$filtros = [
    // VARIÁVEL   // COLUNA   // OPERADOR
    'convenio' => ['convenio', '='],
    'posto' => ['posto', '='],
    'status' => ['status', '='],
    'data_inicio' => ['DATE(data_registro)', '>='],
    'data_termino' => ['DATE(data_registro)', '<=']
];

// VERIFICA FILTROS
foreach ($filtros as $variavel => $comparativo) {
    if (isset(${$variavel}) && ${$variavel}) {
        $sqlFiltros .= "{$comparativo[0]} {$comparativo[1]} '${$variavel}' AND ";
    }
}

// O IDEXAME É O UNICO QUE PROVAVELMENTE SEMPRE
// VIRÁ COM VALOR EM SEU CÓDIGO
$sql = "
    SELECT
        *
    FROM
        registropacientesexames
    WHERE
        %s
        codigo_exame = '$idexame'
    ORDER BY
        codigo_registro DESC
";

// CONSTROI A SQL FINAL
echo sprintf($sql, $sqlFiltros);

 

RESULTADO:

SELECT
    *
FROM
    registropacientesexames
WHERE
    convenio = '20' AND 
    DATE(data_registro) >= '2020-10-20' AND 
    DATE(data_registro) <= '2020-11-20' AND 
    codigo_exame = '30'
ORDER BY
    codigo_registro DESC

 

Share this post


Link to post
Share on other sites

Olá estou com um problema creio que fiz algo errado pq tava funcionando e agora deu esse erro 

Parse error: syntax error, unexpected '[' in /home2/labclinicaoficia/public_html/novoadmin/scripts/agenda-geral-relatorios.php on line 64

 

Nessa parte:

 

$filtros = [
    // VARIÁVEL   // COLUNA   // OPERADOR
    'convenio' => ['convenio', '='],
    'posto' => ['posto', '='],
    'status' => ['status', '='],
    'data_inicio' => ['DATE(data_registro)', '>='],
    'data_termino' => ['DATE(data_registro)', '<=']
];

 

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 Rizer
      Galera, estamos buscando um profissional para atuar como Desenvolvedor PHP Junior/Pleno na Rizer. Está interessado?
       
      Empresa: Rizer (www.rizer.com.br)
      Vaga: Desenvolvedor PHP Pleno
      Carga horária: 40h semanais (seg a --- / 9h-18h)
      Local de trabalho: Edf. Cosmopolitan, Paralela - Salvador/BA
       
      Buscamos um profissional que não tenha potencial somente para exercer com excelência a posição de Desenvolvedor PHP, mas também para - num futuro próximo - liderar times na sua área de expertise. Para tornar isso possível, iremos imergi-lo no mercado e no mundo de empresas de tecnologia e startups, apresentando ainda mais sobre o funcionamento de empresas como a nossa (não tão tradicionais assim) e sobre as metodologias que utilizamos para atingir nossos resultados.
       
      A Rizer cresce exponencialmente a cada dia e gostamos de fazer todos crescerem junto conosco. Por isso, além de uma excelente política de reconhecimento e promoção (algumas vezes meteórica) de funcionários, possuímos também um programa de Vesting para oferecer quotas da sociedade da empresa para membros do nosso time que se destacam.
       
      Pré-requisitos:
      Conhecimento sólido em PHP (2+ anos de experiência);
      Integração via APIs rest;
      Framework Laravel;
      Banco de dados relacional (mysql);
      Utilização de metodologias ágeis (Scrum);
      Git / gitflow.
      Phpunit;
      Boas práticas e design pattern;;
      CSS, HTML e JavaScript
       
      Interessados deverão preencher o seguinte formulário:
       
      http://bit.ly/rizer1
       
      e fazer o upload do currículo com nome “Desenvolvedor PHP Pleno - SEU NOME”
      Você se considera uma excelente pessoa e um ótimo profissional? Curtiu a vaga? Então vem trabalhar com a gente, vem!
    • By danilo759
      Tenho uma tabelinha de programas para uma rádio... está da seguinte forma.

      titulo
      data (YYYY-MM-DD)
      hora (00:00:00)

      Minha consulta, mas não retorna o programa da hora corrente. O que eu fiz de errado?
      SELECT * FROM programas WHERE data = CURDATE() AND hora = CURTIME() LIMIT 1
    • By Ro_JnR
      Estou tentando a semanas resolver um problema, consumir uma API e verificar se o campo no banco está vazio, se estiver faz insert se não faz update.
      Até aí tudo bem, agora não consigo passar do meu select para o banco, ele da erro.
       
      Segue o código:
       
      <?php

          require_once("db.class.php");
          
          $url = "https://servicodados.ibge.gov.br/api/v1/localidades/distritos";
              $ch = curl_init($url);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
              $resultado = json_decode(curl_exec($ch));
              foreach ($resultado as $cidades) {
                  $nome = $cidades->nome;
                  $stmt = $conn->prepare("SELECT name FROM cidades WHERE name=?");
                  $stmt->bind_Param(':name', $nome);
                  $stmt->execute();
                  $stmt->bind_result($resultSelect);
                  $stmt->fetch();
                  if(!$stmt->execute()){
                      print_r($stmt->errorInfo());
                  }
              } 

      ?>
       
      Código do banco:
       
      $conn = new PDO("mysql:host=localhost;dbname=exercicio", "root", "");
      //"sqlsrv:Database=dbphp7;server=localhost\SQLEXPRESS;ConnectionPooling=0", "sa", "root");
      $stmt = $conn->prepare("SELECT * FROM cidades ORDER BY nome");
      $stmt->execute();
      //fetchALL basicamente faço while do mysqli
      $results = $stmt->fetchALL(PDO::FETCH_ASSOC);
       
      Print do erro:

       
      Tenho um outro exercicio que fiz bem parecido, consumi a API de estados e inseri no banco de dados, esse funcionou normalmente.
      Alguém poderia me dar uma luz, não sei mais o que fazer.
      Era para ser simples rsrsrrs.
    • By asacap1000
      Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam?
      Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE.
      Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer. 
    • By asacap1000
      Galera me foi solicitado a criação de um servidor web, para disponibilizar serviços para os clientes. O que vocês recomendam?
      Tenho um servidor da DELL com windows 2016. Todo o desenvolvimento será em PHP, Javascript e companhia Ltda com conexão aos bancos de dados Mysql, SQL e ORACLE.
      Já temos um servidor que será desativado porém está utilizando uma versão muito antiga de PHP 5.4 e como base de instalação foi utilizado o WampServer. 
×

Important Information

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