Adampt Posted August 5, 2024 at 07:23 AM Report Share #633378 Posted August 5, 2024 at 07:23 AM <?php // Require composer autoload require '../pdf/fpdf.php'; $db = new PDO('mysql:host=localhost;dbname=******', 'root', ''); class myPDF extends FPDF { public function header() { $ano = $_POST['ano']; $this->Image('../fimg/image.png', 10, 6, 50); $this->SetFont('arial', 'B', 14); $this->Cell(260, 5, 'RESTRIÇÕES ALIMENTARES', 0, 0, 'C'); $this->Ln(); $this->SetFont('arial', '', 12); $this->Cell(260, 10, 'Ano: ' . $ano, 0, 0, 'C'); $this->Ln(30); } public function footer() { $this->SetY(-15); $this->SetFont('arial', '', 8); $this->Cell(0, 10, 'Página ' . $this->PageNo() . '/{nb}', 0, 0, 'C'); } public function headerTable() { $this->SetFont('arial', 'B', 14); $this->cell(10); $this->cell(260, 10, 'LISTAGEM', 1, 0, 'C'); $this->Ln(); $this->cell(10); $this->SetFont('arial', 'B', 12); //$this->Cell(100, 7, 'Grupo', 1, 0, 'C'); $this->Cell(70, 7, 'País', 1, 0, 'C'); $this->Cell(100, 7, 'Nome', 1, 0, 'C'); $this->Cell(90, 7, 'Restrição', 1, 0, 'C'); $this->Ln(); } public function viewtable($db) { $ano = $_POST['ano']; $this->SetFont('times', '', 9); $stmt = $db->query("SELECT tbl_grupos.*, tbl_inscricoes.*, tbl_elementos_grupos.* FROM tbl_grupos LEFT JOIN tbl_inscricoes ON tbl_grupos.idgrupo = tbl_inscricoes.idgrupo LEFT JOIN tbl_elementos_grupos ON tbl_grupos.idgrupo = tbl_elementos_grupos.idgrupo WHERE tbl_inscricoes.anoinscricao = $ano AND tbl_inscricoes.validado = 1 AND tbl_elementos_grupos.restricoesgel!='Nenhuma' OR tbl_elementos_grupos.restricoesoutrogel!='' GROUP BY tbl_elementos_grupos.nomegel ORDER BY tbl_elementos_grupos.idgrupo ASC"); while ($data = $stmt->fetch(PDO::FETCH_OBJ)) { $this->SetFont('arial', '', 9); $this->cell(10); //$this->cell(100, 7, base64_decode($data->gnome), 1, 0, 'J'); $this->Cell(70, 7, base64_decode($data->gpais), 1, 0, 'C'); $this->Cell(100, 7, base64_decode($data->nomegel), 1, 0, 'C'); $this->Cell(90, 7, $data->restricoesgel . ', ' . $data->restricoesoutrogel, 1, 0, 'C'); $this->Ln(); } } } $pdf = new myPDF(); $pdf->AliasNbPages(); $pdf->AddPage('L', 'A4', 0); $pdf->headerTable(); $pdf->viewtable($db); $pdf->Ln(15); $pdf->Output(); ?> <script src="../js/sweetalert.js"></script> Bom dia. Tenho o código acima para gerar um relatório baseado em 3 tabelas. Preciso que o relatório me apresente apenas os dados relativos a restrições alimentares para os grupos que estejam inscritos e aprovados para participar nas atividades em um determinado ano. Com o código acima, são-me apresentados os dados de todos os elementos que tenham restrições allimentares independentemente do ano para que tenham sido aprovados. Poderiam ajudar-me com esta situação? Já tentei de diversas formas mas não funciona corretamente. Link to comment Share on other sites More sharing options...
M6 Posted August 5, 2024 at 01:52 PM Report Share #633381 Posted August 5, 2024 at 01:52 PM A tua questão nada tem a ver com PDF mas sim com a obtenção de dados que vão popular o relatório. Se não te está a dar o resultado pretendido, revê a tua query. Começa por garantir que os filtros e os joins estão corrretos. Quando tiveres a query a devolver os resultados que pretendes, integra-a no código que vai gerar o relatório. 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Adampt Posted August 5, 2024 at 01:58 PM Author Report Share #633382 Posted August 5, 2024 at 01:58 PM M6 obrigado pela resposta. O problema é mesmo que não consigo obter os dados pretendidos com os filtros aplicados. Penso que o problema estará algures por aqui WHERE tbl_inscricoes.anoinscricao = $ano AND tbl_inscricoes.validado = 1 AND tbl_elementos_grupos.restricoesgel!='Nenhuma' OR tbl_elementos_grupos.restricoesoutrogel!='' Link to comment Share on other sites More sharing options...
Solution M6 Posted August 6, 2024 at 08:43 AM Solution Report Share #633385 Posted August 6, 2024 at 08:43 AM O problema só pode estar ou na clausula where ou nos joins. Presumo que seja na clausula where. Tens ai um OR no meio dos ANDs, se não usares parêntesis a escolha das condições pode não ser a que estás à espera. A and B and C or D , sem conhecer o sistema, diria que o que queres é A and B and (C or D) 10 REM Generation 48K! 20 INPUT "URL:", A$ 30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50 40 PRINT "404 Not Found" 50 PRINT "./M6 @ Portugal a Programar." Link to comment Share on other sites More sharing options...
Adampt Posted August 6, 2024 at 03:47 PM Author Report Share #633389 Posted August 6, 2024 at 03:47 PM (edited) M6 era mesmo isso. Faltava os ( ) na cláusula OR. Muito obrigado. Edited August 6, 2024 at 03:48 PM by Adampt Falta de texto Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now