Цикл while в FPDF

У меня возникли проблемы с тем, чтобы SQL-запрос работал внутри fpdf, возможно ли это?

в настоящее время у меня есть

session_start();
require('fpdf.php');    
class PDF extends FPDF
{
    function Header()
        {
            include('config.php');
            $client_check = $db->prepare("SELECT * FROM clients WHERE client_fullname = '".$_SESSION['client_details']."'");
            $client_check->execute();
            while ($row = $client_check->fetch(PDO::FETCH_ASSOC))
            {
                $client_firstname    = $row ['client_firstname'];
                $client_lastname     = $row ['client_lastname'];
                $client_address      = $row ['client_address'];
                $client_jobaddress   = $row ['client_jobaddress'];
                $client_homephone    = $row ['client_homephone'];

                $this->SetFont('Arial', 'B', 12);
                $this->Cell(10,0,'Ph(H):',0,0,'C');
                $this->Cell(20,0,''.$client_homephone.'', 0,0,'C');
                $this->Line(30,61,100,61);
                $this->Cell(210,0,'Job No:',0,0,'C');
                $this->Cell(-120,0,'Model:',0,0,'C');
                $this->Line(110,61,200,61);
            }
        }
    }
// Instanciation of inherited class
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
$pdf->SetFont('Times','',10);
$pdf->Output();

Все работало хорошо, прежде чем я добавил цикл while. Теперь он просто выдает мне пустой PDF. Как я могу это исправить?


person Community    schedule 12.03.2013    source источник
comment
Не могли бы вы сказать мне, каковы ваши фактические требования, чтобы я мог предложить вам лучший способ.   -  person Praveen kalal    schedule 12.03.2013
comment
@Praveenkalal Мне нужно сделать вызов SQL, чтобы получить данные из базы данных и добавить их в PDF.   -  person    schedule 12.03.2013
comment
пожалуйста, сначала проверьте, правильно ли работает цикл, а затем, во-вторых, динамически меняйте положение, иначе он будет каждый раз перезаписывать текст.   -  person Praveen kalal    schedule 12.03.2013
comment
Все, что вы пытаетесь сделать, возможно с FPDF. Вам нужно проверить свою петлю.   -  person Samy    schedule 12.03.2013
comment
вы проверяете, правильно ли выполнен запрос рядом с $client_check->execute??   -  person funtime    schedule 13.03.2013


Ответы (2)


Боюсь, вы не можете этого сделать

Это связано с тем, что ваша функция заголовка запускается каждый раз, когда добавляется новая страница (что делается автоматически, если страница переполняется) в pdf

Вместо этого вы можете сделать так

  1. Создайте конструктор для класса PDF, который вызывает функцию, скажем, Fill_details
  2. Переместите цикл while в функцию Fill_details
  3. Функции верхнего и нижнего колонтитула должны содержать только ту часть кода, которая является общей для всех страниц, например, границы страницы, авторские права нижнего колонтитула и т. д.
person funtime    schedule 18.03.2013

person    schedule
comment
Спасибо за ответ, но функции mysql_ * не следует использовать. См. stackoverflow.com /вопросы/12859942/ - person ; 14.03.2013