Ir ao conteúdo

Posts recomendados

Postado

Esse é um programa que faz consultas específicas no banco de dados, eu não inclui aqui o arquivo que realiza a conexão aqui em cima. Como podem ver, ele tem algumas opções como Indústria e Saúde, que se selecionadas, mostram os resultados dessas 2 bases, e também posso selecionar individualmente, e pra isso, no segundo arquivo fiz várias verificações. Preciso que após a consulta, quando clicarmos no botão Baixar dados, que ele baixe em pdf a tabela gerada pelas consultas selecionadas. Sei que será necessário utilizar o Dompdf. Como faço esse botão baixar as tabelas das consultas quando clicado?
ps: ele só aparece depois de realizar as consultas.

Arquivo index.PHP
<?php 

include 'config.php'; #Arquivo que cria a conexão ao banco de dados.
include 'select.php'; #Arquivo que realiza as consultas no banco de dados.
include 'download.php';

?>

<!DOCTYPE html> <!-- Trecho HTML do código -->
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Consulta de permissões SAP</title>
    <link rel="stylesheet" href="style.css">
    <link rel="icon" href="./assets/ico.png">
</head>
<body>
    <header>
        <div class="border">
            <img class="logo" src="./assets/logo.png" alt="Logo">
        </div>
    </header>
    <form action="" method="POST">
        <div class="god">
            <h1 class="titulo">Consulta de permissões tela do SAP</h1>
            <div class="dados">
                <div class="opções">
                    <div class="base">
                        <div class="industria">
                            <label for="vi">Indústria</label>
                            <input type="checkbox" name="vi" id="vi" value="v_i" checked>
                        </div>
                        <div class="saude">
                            <label for="vs">Saúde</label>
                            <input type="checkbox" name="vs" id="vs" value="v_s" checked>
                        </div>
                    </div>
                    <select name="st" id="metodSelecao" onchange="search()">
                        <option value="" selected hidden>Selec. o metódo de pesquisa</option>
                        <option value="codigo">Código</option>
                        <option value="modulo">Módulo</option>
                        <option value="tela">Tela</option>
                        <option value="aut_efetiva">Autorização efetiva</option>
                        <option value="funcao">Função</option>
                    </select>
                    <select name="select" id="Consulta" style="display: none;">
                        <option value="" selected hidden>Selec. o código</option>
                        <?php while($result_codigo = mysqli_fetch_array($search_codigo)) { ?>
                        <option value="<?php print_r($result_codigo["Código"]); ?>"><?php print_r($result_codigo["Código"]); ?></option>
                        <?php } ?>
                    </select>
                    <select name="select2" id="Consulta2" style="display: none;">
                        <option value="" selected hidden>Selec. a tela</option>
                        <?php while($result_tela = mysqli_fetch_array($search_tela)) { ?>
                        <option value="<?php print_r($result_tela["Tela"]); ?>"><?php print_r($result_tela["Tela"]); ?></option>
                        <?php } ?>
                    </select>
                    <select name="select3" id="Consulta3" style="display: none;">
                        <option value="" selected hidden>Selec. o módulo</option>
                        <?php while($result_modulo = mysqli_fetch_array($search_modulo)) { ?>
                        <option value="<?php print_r($result_modulo["Módulo"]); ?>"><?php print_r($result_modulo["Módulo"]); ?></option>
                        <?php } ?>
                    </select>
                    <select name="select4" id="Consulta4" style="display: none;">
                        <option value="" selected hidden>Selec. a autorização efetiva</option>
                        <?php while($result_aut_efetiva = mysqli_fetch_array($search_aut_efetiva)) { ?>
                        <option value="<?php print_r($result_aut_efetiva["Autorização_efetiva"]); ?>"><?php print_r($result_aut_efetiva["Autorização_efetiva"]); ?></option>
                        <?php } ?>
                    </select>
                    <select name="select5" id="Consulta5" style="display: none;">
                        <option value="" selected hidden>Selec. a função</option>
                        <?php while($result_funcao = mysqli_fetch_array($search_funcao)) { ?>
                        <option value="<?php print_r($result_funcao["Função"]); ?>"><?php print_r($result_funcao["Função"]); ?></option>
                        <?php } ?>
                    </select>
                    <input type="submit" name="send" class="send" value="Consultar" id="send" onclick="showDownload()">
                    <?php if(isset($junction)) { ?> 
                        <button type="submit" name="download" class="send" id="download">Baixar dados</button> <--! AQUI QUE QUERO QUE QUANDO CLICADO, ELE A TABELA E CONVERTA EM PDF-->
                    <?php } ?>
                </div>
                <div class="tabela">
                    <table>
                        <tr>
                            <th>Código</th>
                            <th>Módulo</th>
                            <th>Tela</th>
                            <th>Autorização efetiva</th>
                            <th>Base</th>
                            <th>Função</th>
                        </tr>
                        <?php if(isset($junction)) { ?>
                        <?php while($result = mysqli_fetch_array($junction)) { ?>
                            <tr>
                                <td><?php print_r($result["Código"]); ?></td>
                                <td><?php print_r($result["Módulo"]); ?></td>
                                <td><?php print_r($result["Tela"]); ?></td>
                                <td id="efetiva"><?php print_r($result["Autorização_efetiva"]); ?></td>
                                <td><?php print_r($result["Base"]); ?></td>
                                <td><?php print_r($result["Função"]); ?></td>
                            </tr>
                            <?php }?>
                            <?php } ?>
                    </table>
                </div>
            </div>
        </div>
    </form> 
    <script src="script.js"></script>
</body>
</html>
Arquivo select.php
<?php

$conexao = mysqli_connect($hostname, $username, $password, $db);
$select_codigo = "SELECT DISTINCT Código FROM tabela;"; ##Faz a pesquisa no banco de dados para encontrar todos os nomes, para assim, adicionar na seleção dos códigos/nomes.
$search_codigo = mysqli_query($conexao, $select_codigo);

$select_tela = "SELECT DISTINCT Tela FROM tabela;"; ##Faz a pesquisa no banco de dados para encontrar todas as telas, para assim, adicionar na seleção das telas.
$search_tela = mysqli_query($conexao, $select_tela);

$select_modulo = "SELECT DISTINCT Módulo FROM tabela;"; ##Faz a pesquisa no banco de dados para encontrar todos os módulos, para assim, adicionar na seleção dos módulos.
$search_modulo = mysqli_query($conexao, $select_modulo);

$select_aut_efetiva = "SELECT DISTINCT Autorização_efetiva FROM tabela;"; ##Faz a pesquisa no banco de dados para encontrar todas as autorizações efetivas, para assim, adicionar na seleção das autorizações.
$search_aut_efetiva = mysqli_query($conexao, $select_aut_efetiva);

$select_funcao = "SELECT DISTINCT Função FROM tabela;"; ##Faz a pesquisa no banco de dados para encontrar todas as funções, para assim, adicionar na seleção das funções.
$search_funcao=mysqli_query($conexao, $select_funcao);


if(isset($_POST["send"])) {
    session_start();
    $select = $_POST["select"];
    $select2 = $_POST["select2"];
    $select3 = $_POST["select3"];
    $select4 = $_POST["select4"];
    $select5 = $_POST["select5"];


    //SELECT PARA CÓDIGO ($SELECT)
    if(isset($_POST["vi"]) && !isset($_POST["vs"]) && $select2=="" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pelo CÓDIGO.
        $requestFromDb = "SELECT * FROM tabela WHERE Código = '$select' AND Base='Indústria';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && !isset($_POST["vi"]) && $select2 == "" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se a opção Saúde foi selecionada, funciona apenas no método de pesquisa pelo CÓDIGO.
        $requestFromDb = "SELECT * FROM tabela WHERE Código = '$select' AND Base='Saúde';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && isset($_POST["vi"]) && $select2 == "" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se ambas opções foram selecionadas, funciona apenas no método de pesquisa pelo CÓDIGO.
        $requestFromDb = "SELECT * FROM tabela WHERE Código='$select' AND (Base='Indústria' OR Base='Saúde');";
        $junction = mysqli_query($conexao, $requestFromDb);
    }

    
    //SELECT PARA TELA ($SELECT 2)
    if(isset($_POST["vi"]) && !isset($_POST["vs"]) && $select == "" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela TELA.
        $requestFromDb = "SELECT * FROM tabela WHERE Tela = '$select2' AND Base='Indústria';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && !isset($_POST["vi"]) && $select == "" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se a opção Saúde foi selecionada, funciona apenas no método de pesquisa pela TELA.
        $requestFromDb = "SELECT * FROM tabela WHERE Tela = '$select2' AND Base='Saúde';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vi"]) && isset($_POST["vs"]) && $select == "" && $select3=="" && $select4=="" && $select5==""){ ##Verifica se ambas opções foram selecionadas, funciona apenas no método de pesquisa pela TELA.
        $requestFromDb = "SELECT * FROM tabela WHERE Tela = '$select2';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }


    //SELECT PARA MÓDULO ($SELECT 3)
    if(isset($_POST["vi"]) && !isset($_POST["vs"]) && $select == "" && $select2=="" && $select4=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pelo MÓDULO.
        $requestFromDb = "SELECT * FROM tabela WHERE Módulo = '$select3' AND Base='Indústria';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && !isset($_POST["vi"]) && $select == "" && $select2=="" && $select4=="" && $select5==""){ ##Verifica se a opção Saúde foi selecionada, funciona apenas no método de pesquisa pelo MÓDULO.
        $requestFromDb = "SELECT * FROM tabela WHERE Módulo = '$select3' AND Base='Saúde';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vi"]) && isset($_POST["vs"]) && $select == "" && $select2=="" && $select4=="" && $select5==""){ ##Verifica se ambas opções foram selecionadas, funciona apenas no método de pesquisa pelo MÓDULO.
        $requestFromDb = "SELECT * FROM tabela WHERE Módulo = '$select3';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }


    //SELECT PARA AUTORIZAÇÃO EFETIVA ($SELECT 4)
    if(isset($_POST["vi"]) && !isset($_POST["vs"]) && $select == "" && $select2=="" && $select3=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela AUTORIZAÇÃO EFETIVA.
        $requestFromDb = "SELECT * FROM tabela WHERE Autorização_efetiva = '$select4' AND Base='Indústria';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && !isset($_POST["vi"]) && $select == "" && $select2=="" && $select3=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela AUTORIZAÇÃO EFETIVA.
        $requestFromDb = "SELECT * FROM tabela WHERE Autorização_efetiva = '$select4' AND Base='Saúde';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vi"]) && isset($_POST["vs"]) && $select == "" && $select2=="" && $select3=="" && $select5==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela AUTORIZAÇÃO EFETIVA.
        $requestFromDb = "SELECT * FROM tabela WHERE Autorização_efetiva = '$select4';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }


    //SELECT PARA FUNÇÃO ($SELECT 5)
    if(isset($_POST["vi"]) && !isset($_POST["vs"]) && $select == "" && $select2=="" && $select3=="" && $select4==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela FUNÇÃO.
        $requestFromDb = "SELECT * FROM tabela WHERE Função = '$select5' AND Base='Indústria';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vs"]) && !isset($_POST["vi"]) && $select == "" && $select2=="" && $select3=="" && $select4==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela FUNÇÃO.
        $requestFromDb = "SELECT * FROM tabela WHERE Função = '$select5' AND Base='Saúde';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
    if(isset($_POST["vi"]) && isset($_POST["vs"]) && $select == "" && $select2=="" && $select3=="" && $select4==""){ ##Verifica se a opção Indústria foi selecionada, funciona apenas no método de pesquisa pela FUNÇÃO.
        $requestFromDb = "SELECT * FROM tabela WHERE Função = '$select5';";
        $junction = mysqli_query($conexao, $requestFromDb);
    }
}

?>
  • Moderador
Postado

@Endmmans Você pode usar a biblioteca Fpdf para php.    Com isso, você cria o pdf com a estrutura da tabela... e então depois criar um botão para forçar o download do arquivo.

  • Moderador
Postado

@Endmmans Tem N maneiras de fazer...  eu particularmente gosto de usar a biblioteca Fpdf.   Você precisa baixar a biblioteca por este link. v1.85 (2022-11-10)

E então colocar no diretório do seus códigos..  

E então  incorporar o arquivo, no seu php....

 

A partir daí, você faz uma instância da classe e monta a estrutura.  Nele você pode fazer as suas consultas.. e etc..  montar a tabela e colocar as variáveis nos lugares. NO final você terá uma tabela salva em pdf.

 

Aqui nesse exeplo que eu utilizei,  eu não crio uma tabela, apenas escrevo o resultado da consulta do banco de dados... No caso você vai precisar montar a estrutura da tabela... e dentro do while colocar a estrutura que se repetirá.. no caso os dados da tabela.

 

<?php
session_start();

//incorpora a classe
require('fpdf16/fpdf.php');

//cria uma nova classe extendida da classe original
class PDF extends FPDF{
	
	//cabeçalho da pagina
	function Header(){
		$dataCriacao = date("d/m/Y");
		//insere imagem do fusca
		$this->Image('img/logoJE.jpg', 18, 8, 18); // posiçao X e Y respectivamente  depois o tamanho
		
		//tipo da fonte
		$this->SetFont('Arial', 'B', 11);
		
		//move para a direita
		$this->Cell(80);
		$this->Cell(30,0, 'GENESIS Indústria de Embalagens Ltda.' , 0, 0, 'C');
		$this->Ln(7);
		//titulo
		$this->Cell(188,0, 'GeFin - Gerência Financeira' , 0, 0, 'C'); //não tem borda o primeiro zero segundo espera umcomando
		
		//Nova linha
		$this->Ln(7);
		
		//Redefine o tamanho da fonte
		$this->SetFontSize(10);
		$this->Cell(0,-2, 'Relatório de Produtos', 0, 0, 'C');
		$this->SetFontSize(7);
		$this->Cell(-25,1, "Gerado em $dataCriacao", 0, 0, 'R');
		$this->Ln();
		
		//Redefine o tamanho da fonte
		$this->SetFontSize(10);
		
		$this->Ln(2);
		$this->SetFontSize(9);
		$this->Cell(30, 8, 'Cód.', 2, 0); // o segundo zero quer dizer que ele vai começar do lado
		$this->Cell(52, 8, 'Produto', 0, 0);
		$this->Cell(60, 8, 'Preço', 0, 0);		
		$this->Cell(24, 8, 'Data Registro', 0, 1);
		
		//Faz uma linha
		$this->Cell(170, 0, '', 'T');
		$this->Ln();
	}
	
		//rodape da pagina
		function Footer(){
			// Posiciona a 1.5 cm da margem inferior da pagina
			$this->SetY(-15);
			$this->Cell(170, 0, '', 'T');
			$this->Ln();
			//Arial, Itálico, 8px
			$this->SetFont('Arial', 'I', 8);
			$this->Cell(170,10, 'Página: '.$this->PageNo(). '/{nb}', 0, 0, 'C');
	}
}

        //cria a instância da classe 
	    $pdf = new PDF('P', 'mm', 'A4');
		$pdf->AliasNbPages();
		$pdf->AddPage();
		$pdf->SetFont('Arial', '', 8);
		
        //inclui a conexão com o banco de dados 
		include 'includes/conexao.php';
		

        //pega as datas que foram passadas para a sessão 
		$data_inicio =  $_SESSION["dataInicial"];
 	 	$data_fim    = 	$_SESSION["dataFinal"];
		

        //consulta na tabela de produtos a data de registro  
		$sql = "SELECT * FROM produto WHERE dataRegistro between '$data_inicio' AND '$data_fim' order by nomeProduto";
		$dados = mysql_query($sql);
		

       //cria o loop de dados 
		while($linha = mysql_fetch_array($dados)){
			$idProduto    = $linha["idProduto"];
			$nomeProduto  = $linha["nomeProduto"];
			$precoProduto = $linha["precoProduto"];
			$dataRegistro = $linha['dataRegistro'];
			
			//divide a data por partes a partir do separador " - "
			$partesData = explode("-", $dataRegistro);
			$Dia = $partesData[2];
			$Mes = $partesData[1];
			$Ano = $partesData[0];

// Deixa a data no formato Brasileiro          
$dataNormal= $Dia . "/" . $Mes . "/". $Ano;
			
			// 'R'ight => alinha à direita
			//Aqui é os dados do banco de dados que foram armazenados na variável
			$pdf->Cell(6, 8, $idProduto, 0, 0, 'R');
			$pdf->Cell(22, 8, '', 0, 0);				
			$pdf->Cell(56, 8, $nomeProduto, 0, 0);
			$pdf->Cell(62, 8, $precoProduto, 0, 0);
			$pdf->Cell(40, 8, $dataNormal, 0, 1);
			$pdf->Ln(-4);
		}
		
        //cria o pdf
		$pdf->Output();

 

Você pode nomear esse arquivo como relatorio.php   Daí você pode criar um link apontando ele... ou criar um link onde você chama um outro arquivo php, que chama este... enfim.. é só um exemplo. 

 

Você pode fazer como o colega ali  mencionou também, converter o resultado da consulta em um JSON, e então usar o javascript...  porém.. eu não gosto deste método, pois se o usuário desativar o suporte ao javascript no navegador, o recurso não  vai funcionar... mas fazendo pelo php pelo lado do servidor, vai.

 

Lembrando, esse código é apenas um exemplo.  Use ele só para entender... e implementar o seu próprio.

 

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...