Ir ao conteúdo
  • Cadastre-se

PHP Cm fazer o botao HTML quando clicado baixe em pdf uma consulta MySQL no php?


Posts recomendados

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);
    }
}

?>
Link para o comentário
Compartilhar em outros sites

  • Moderador

@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.

 

 

Link para o comentário
Compartilhar em outros sites

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...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!