miromalc 1 Denunciar post Postado Agosto 22, 2009 Bom dia pessoal, estou tentando aprender como gerar um arquivo .pdf com o PHP+Mysql mas estou encontrando dificuldades, gostaria se possível da ajuda de vocês. Segui esse tutorial: Clique aqui Mas está gerando esse erro: Warning: require_once(../c:/xammp/htdocs/Novo Site/fpdf/fpdf.php) [function.require-once]: failed to open stream: Invalid argument in C:\xampp\htdocs\Novo Site\fpdf\pdf.php on line 42 Fatal error: require_once() [function.require]: Failed opening required '../c:/xammp/htdocs/Novo Site/fpdf/fpdf.php' (include_path='.;C:\xampp\php\pear\') in C:\xampp\htdocs\Novo Site\fpdf\pdf.php on line 42 Segue o código para que se possível analizassem e como corrigir o erro. Pagina pdf.php <? //CONFIGURAÇÕES DO BD MYSQL $servidor = "localhost"; $usuario = "root"; $senha = ""; $bd = "produtos"; //TÍTULO DO RELATÓRIO $titulo = "Colunistas do iMasters"; //LOGO QUE SERÁ COLOCADO NO RELATÓRIO $imagem = "mecanica_novo.png"; //ENDEREÇO DA BIBLIOTECA FPDF $end_fpdf = "c:/xammp/htdocs/Site/fpdf"; //NUMERO DE RESULTADOS POR PÁGINA $por_pagina = 13; //ENDEREÇO ONDE SERÁ GERADO O PDF $end_final = "artigo_php.pdf"; //TIPO DO PDF GERADO //F-> SALVA NO ENDEREÇO ESPECIFICADO NA VAR END_FINAL $tipo_pdf = "F"; //CONECTA COM O MYSQL $conn = mysql_connect($servidor, $usuario, $senha); $db = mysql_select_db($bd, $conn); $sql = mysql_query("SELECT A.ID, A.NOME, A.ASSUNTO FROM colunistas A", $conn); $row = mysql_num_rows($sql); //VERIFICA SE RETORNOU ALGUMA LINHA if(!$row) { echo "Não retornou nenhum registro"; die; } //CALCULA QUANTAS PÁGINAS VÃO SER NECESSÁRIAS $paginas = ceil($row/$por_pagina); //PREPARA PARA GERAR O PDF define("FPDF_FONTPATH", "$end_fpdf/font/"); require_once("../$end_fpdf/fpdf.php"); $pdf = new FPDF(); //INICIALIZA AS VARIÁVEIS $linha_atual = 0; $inicio = 0; //PÁGINAS for($x=1; $x<=$paginas; $x++) { //VERIFICA $inicio = $linha_atual; $fim = $linha_atual + $por_pagina; if($fim > $row) $fim = $row; $pdf->Open(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 10); $pdf->Image($imagem, 0, 8); $pdf->Ln(2); $pdf->Cell(185, 8, "Página $x de $paginas", 0, 0, 'R'); //QUEBRA DE LINHA $pdf->Ln(20); //MONTA O CABEÇALHO $pdf->Cell(15, 8, "", 1, 0, 'C'); $pdf->Cell(85, 8, "COLUNISTA", 1, 0, 'L'); $pdf->Cell(85, 8, "ASSUNTO", 1, 1, 'L'); //EXIBE OS REGISTROS for($i=$inicio; $i<$fim; $i++) { $pdf->Cell(15, 8, mysql_result($sql, $i, "ID"), 1, 0, 'C'); $pdf->Cell(85, 8, mysql_result($sql, $i, "NOME"), 1, 0, 'L'); $pdf->Cell(85, 8, mysql_result($sql, $i, "ASSUNTO"), 1, 1, 'L'); $linha_atual++; }//FECHA FOR(REGISTROS - i) }//FECHA FOR(PAGINAS - x) //SAIDA DO PDF $pdf->Output("$end_final", "$tipo_pdf"); ?> Agradeço a ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
eibon 2 Denunciar post Postado Agosto 22, 2009 Por que usou o .. (voltar 1 nivel na estrutura de diretórios) se usou um caminho completo? Retire-o...(a barra também -.-). Ficando: require_once "$end_fpdf/fpdf.php"; Não encorajo esse tipo de prática... Compartilhar este post Link para o post Compartilhar em outros sites
miromalc 1 Denunciar post Postado Agosto 22, 2009 Por que usou o .. (voltar 1 nivel na estrutura de diretórios) se usou um caminho completo? Retire-o...(a barra também -.-). Ficando: require_once "$end_fpdf/fpdf.php"; Não encorajo esse tipo de prática... Consegui resolver eibon, o erro que você citou foi descuido e ja havia retirado, mesmo assim obrigado. eliminei os caminhos completos que você referiu e resolveu o problema, segue o código para se alguem tiver dúvida. <? //CONFIGURAÇÕES DO BD MYSQL $servidor = "localhost"; $usuario = "root"; $senha = ""; $bd = "produtos"; //mudei o BD //TÍTULO DO RELATÓRIO $titulo = "Colunistas do iMasters"; //LOGO QUE SERÁ COLOCADO NO RELATÓRIO $imagem = "logo_imasters.jpg"; //ENDEREÇO DA BIBLIOTECA FPDF $end_fpdf = "fpdf"; //deixei direto a pasta que fica na raiz do site //NUMERO DE RESULTADOS POR PÁGINA $por_pagina = 13; //ENDEREÇO ONDE SERÁ GERADO O PDF $end_final = "artigo_php.pdf"; // Gera o arquivo na raiz do site //TIPO DO PDF GERADO //F-> SALVA NO ENDEREÇO ESPECIFICADO NA VAR END_FINAL $tipo_pdf = "F"; //CONECTA COM O MYSQL $conn = mysql_connect($servidor, $usuario, $senha); $db = mysql_select_db($bd, $conn); $sql = mysql_query("SELECT A.ID, A.NOME, A.ASSUNTO FROM colunistas A", $conn); $row = mysql_num_rows($sql); //VERIFICA SE RETORNOU ALGUMA LINHA if(!$row) { echo "Não retornou nenhum registro"; die; } //CALCULA QUANTAS PÁGINAS VÃO SER NECESSÁRIAS $paginas = ceil($row/$por_pagina); //PREPARA PARA GERAR O PDF define("FPDF_FONTPATH", "$end_fpdf/font/"); //require("$end_fpdf/fpdf.php"); // Aqui ficou como estava require_once("$end_fpdf/fpdf.php"); $pdf = new FPDF(); //INICIALIZA AS VARIÁVEIS $linha_atual = 0; $inicio = 0; //PÁGINAS for($x=1; $x<=$paginas; $x++) { //VERIFICA $inicio = $linha_atual; $fim = $linha_atual + $por_pagina; if($fim > $row) $fim = $row; $pdf->Open(); $pdf->AddPage(); $pdf->SetFont("Arial", "B", 10); $pdf->Image($imagem, 0, 8); $pdf->Ln(2); $pdf->Cell(185, 8, "Página $x de $paginas", 0, 0, 'R'); //QUEBRA DE LINHA $pdf->Ln(20); //MONTA O CABEÇALHO $pdf->Cell(15, 8, "", 1, 0, 'C'); $pdf->Cell(85, 8, "COLUNISTA", 1, 0, 'L'); $pdf->Cell(85, 8, "ASSUNTO", 1, 1, 'L'); //EXIBE OS REGISTROS for($i=$inicio; $i<$fim; $i++) { $pdf->Cell(15, 8, mysql_result($sql, $i, "ID"), 1, 0, 'C'); $pdf->Cell(85, 8, mysql_result($sql, $i, "NOME"), 1, 0, 'L'); $pdf->Cell(85, 8, mysql_result($sql, $i, "ASSUNTO"), 1, 1, 'L'); $linha_atual++; }//FECHA FOR(REGISTROS - i) }//FECHA FOR(PAGINAS - x) //SAIDA DO PDF $pdf->Output("$end_final", "$tipo_pdf"); ?> Compartilhar este post Link para o post Compartilhar em outros sites
miromalc 1 Denunciar post Postado Agosto 22, 2009 Surgiu outra dúvida: Minha tabela possui 5 campos e ao gerar o arquivo .pdf as 2 colunas excedentes ao tutorial ven na linha de baixo (3 colunas na primeira linha e 2 na linha seguinte) Gostaria se possível da orientação de vocês de como implementar o código pois já quebrei a cabeça e não consegui. Outra dúvida, como fazer para em vez de salvar o arquivo diretamente na máquina ele abrisse na tela com a opção para que o usuário salve se desejar. Agradeço mais uma vez a ajuda. Compartilhar este post Link para o post Compartilhar em outros sites