tcpdf i działanie z bazą danych

0

Witam !
Piszę stronę na której jest możliwość wygenerowania sobie faktur za poprzednie bądź kolejne lata.
Problem polega na tym, że tworzę tabelę i w nią chciałbym wstawić dane z bazy danych.
Po wygenerowaniu pdf generuje mi się cała tabela ale bez wyników zapytania sql. Szukałem trochę informacji, ale niestety nie znalazłem czegoś co mogłoby mi pomóc. Przedstawiam kod:

Plik, który tworzy pdf:

 <?php
// Include the main TCPDF library (search for installation path).
require_once('tcpdf/config/lang/pol.php');
require_once('tcpdf/tcpdf.php');

// create new PDF document
$pdf = new TCPDF(L, PDF_UNIT, PDF_PAGE_FORMAT, true, ' UTF-8', false);

// set document information
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetAuthor('DZWONEK');
$pdf->SetTitle('FAKTURA VAT');
$pdf->SetSubject('FAKTURA VAT');
$pdf->SetKeywords('faktura,vat');

// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
$pdf->SetMargins(0, 0, 0);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

// set image scale factor
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

$pdf->SetFont('dejavusans ', 10);

$pdf->AddPage('P','A4');


$content = file_get_contents("faktura_data.php");//strona którą mam zapisać do PDFa


$pdf->writeHTML($content,false, false, false, false, 'L');


// ---------------------------------------------------------

//Close and output PDF document
 ob_end_clean();
$pdf->Output('faktura.pdf', 'I');

 

Plik, który wykonuje zapytanie i tworzy tabele:

  <?php

require ('./connect.php');

lacz_db();

$rok=$_GET['rok'];
$zapytanie = mysql_query("SELECT * FROM wymagane where rok =".$rok." and numer_KLIENTA=".$_SESSION['online']);
while ($row = mysql_fetch_array($zapytanie)) {
   


?>
    <table cellpadding="20">    
        <tr>
            <td>
                <table align="left" >
                <tr><td>FAKTURA VAT NR : <?php echo $row['numer_KLIENTA']."/".$row['miesiac']."/".$row['rok']; ?> </td> </tr>
                <tr><td>Data wystawienia:</td> </tr>
                <tr><td>Miejsce wystawienia </td> </tr>
                </table>
            </td>
            <td>ORYGINAŁ</td>  
        </tr>  
        <tr align="left" valign="middle">
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>SPRZEDAWCA:</td></tr>
                    <tr><td>DANE SPRZEDAWCY </td></tr>
                </table>
            </td>
        
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>NABYWCA</td></tr>
                    <tr><td>DANE NABYWCY </td></tr>
                </table>
            </td>
        </tr>
    </table>
       <font size="10">
    <table border="1">
     
        <tr align="left">
            <td width="140">Wyszczególnienie</td>
            <td align="center" width="50">Ilość</td>
            <td align="center" width="50">jm</td>
            <td align="center" width="100">Cena jedn.</td>
            <td align="center">Wartość jedn.</td>
            <td align="center" width="50">VAT</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
        <tr align="left">
            <td width="140">Dostęp do Internetu</td>
            <td align="center">1</td>
            <td align="center" width="50">szt.</td>
            <td align="center" width="100"><?php echo $row['ile'] ?></td>
            <td align="center">Wartość </td>
            <td align="center" width="50">23%</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
       
    </table>
         </font> 
    <table>
        <tr>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>WYSTAWIŁ: ktoś</td></tr>
                    <tr><td>Zapłacono: dużo</td></tr>
                </table>
                
            </td>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>Razem do zapłaty:</td></tr>
                    <tr><td>Słownie:</td></tr>
                </table>
                
            </td>
            
        </tr>
</table>
<?php
}
?> 
</body>
</html>
 

Próbowałem robić cały zapis na bibliotece fpdf ale też nie udawało się ;/

0

A wykonuje się chociaż zapytanie?? masz ustawione

session_start();
1

@dzwonek: nie możesz użyć file_get_contents - zgodnie z tym co mówi nazwa funkcji - WCZYTUJESZ ZAWARTOŚĆ pliku, a nie go wykonujesz.
W dodatku tamten plik wywala zwrot bezpośrednio na echo.

Zrób sobie taką funkcję, żeby zwracała ten kod HTML przez return, potem będzie już z górki.

0
reinman napisał(a):

A wykonuje się chociaż zapytanie?? masz ustawione

session_start();

tak mam tylko ja nie wrzuciłem całego kodu ;) Na poczatku wczytuje menu, które ma session_start() ;

dzek69 napisał(a):

@dzwonek: nie możesz użyć file_get_contents - zgodnie z tym co mówi nazwa funkcji - WCZYTUJESZ ZAWARTOŚĆ pliku, a nie go wykonujesz.
W dodatku tamten plik wywala zwrot bezpośrednio na echo.

Zrób sobie taką funkcję, żeby zwracała ten kod HTML przez return, potem będzie już z górki.

ok przerobię i zobaczę jak działa ;)
Dzięki za dotychczasowe odpowiedzi ;)

0

hm... napisałem coś takiego :

function faktura(){
$rok=$_GET['rok'];
$zapytanie = mysql_query("SELECT * FROM wymagane where rok =".$rok." and numer_MSI=".$_SESSION['online']);
while ($row = mysql_fetch_array($zapytanie)) {
 
return '
    <table cellpadding="20">    
        <tr>
            <td>
                <table margin_top="10px" align="left" >
                <tr><td>FAKTURA VAT NR : '. $row['numer_MSI'].'/'.$row['miesiac'].'/'.$row['rok']. '</td> </tr>
                <tr><td>Data wystawienia:</td> </tr>
                <tr><td>Miejsce wystawienia </td> </tr>
                </table>
            </td>
            <td>ORYGINAŁ</td>  
        </tr>  
        <tr align="left" valign="middle">
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>SPRZEDAWCA:</td></tr>
                    <tr><td>DANE SPRZEDAWCY </td></tr>
                </table>
            </td>
        
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>NABYWCA</td></tr>
                    <tr><td>DANE NABYWCY </td></tr>
                </table>
            </td>
        </tr>
    </table>
       <font size="10">
    <table border="1">
     
        <tr align="left">
            <td width="140">Wyszczególnienie</td>
            <td align="center" width="50">Ilość</td>
            <td align="center" width="50">jm</td>
            <td align="center" width="100">Cena jedn.</td>
            <td align="center">Wartość jedn.</td>
            <td align="center" width="50">VAT</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
        <tr align="left">
            <td width="140">Dostęp do Internetu</td>
            <td align="center">1</td>
            <td align="center" width="50">szt.</td>
            <td align="center" width="100">'. $row['ile'].'</td>
            <td align="center">Wartość </td>
            <td align="center" width="50">23%</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
       
    </table>
         </font> 
    <table>
        <tr>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>WYSTAWIŁ: ktoś</td></tr>
                    <tr><td>Zapłacono: dużo</td></tr>
                </table>
                
            </td>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>Razem do zapłaty:</td></tr>
                    <tr><td>Słownie:</td></tr>
                </table>
                
            </td>
            
        </tr>
</table> 


';

    }
  }

//print faktura();
?> 

po wykonaniu print faktura() strona generuje tabelę wraz z danymi z bazy danych. Ale po wykonaniu tego:

 

    
$content = file_get_contents("faktura_data.php");//strona którą mam zapisać do PDFa


$pdf->writeHTML($content,false, false, false, false, 'L');


// ---------------------------------------------------------

//Close and output PDF document
 ob_end_clean();
$pdf->Output('faktura.pdf', 'I');

generuje się pusty pdf z informacją, że ten pdf może wyświetlać się źle i trzeba otworzyć go w innym programie.

1

czy ta funkcja jest jedynym elementem pliku faktura_data.php?
jeżzeli tak to w pliku "właściwym" zrób

include 'faktura_data.php';
$pdf->writeHTML(faktura(),false, false, false, false, 'L');
0

Dzięki wielkie działa ;) działa tak jak chciałem :)

0

hm.. a czy mógłbym jeszcze prosić o podpowiedź jak zrobić, żeby dla roku np 2013 generowało się kilka faktur ( wszystkie wiersze w bazie danych) bo w podanym przypadku generuje się tylko jedna ;/

0

chcesz dodać kolejne strony do pdf?

0

tak tylko tak żeby te strony były automatycznie dodawane jeżeli jest kolejna strona.

0

aa, bo ty masz return w while.

zrób sobie tak:

$to_return = '';
while (warunek) {
  $to_return .= "costamcostam"; // .= dodaje tekst do stringa
}
return $to_return;
0

hm.. nie za bardzo kumam to co napisałeś.
Czy to miałby wyglądać tak :

$to_return '
    <table cellpadding="20">    
        <tr>
            <td>
                <table margin_top="10px" align="left" >
                <tr><td>FAKTURA VAT NR : '. $row['numer_MSI'].'/'.$row['miesiac'].'/'.$row['rok']. '</td> </tr>
                <tr><td>Data wystawienia:</td> </tr>
                <tr><td>Miejsce wystawienia </td> </tr>
                </table>
            </td>
            <td>ORYGINAŁ</td>  
        </tr>  
        <tr align="left" valign="middle">
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>SPRZEDAWCA:</td></tr>
                    <tr><td>DANE SPRZEDAWCY </td></tr>
                </table>
            </td>
 
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>NABYWCA</td></tr>
                    <tr><td>DANE NABYWCY </td></tr>
                </table>
            </td>
        </tr>
    </table>
       <font size="10">
    <table border="1">
 
        <tr align="left">
            <td width="140">Wyszczególnienie</td>
            <td align="center" width="50">Ilość</td>
            <td align="center" width="50">jm</td>
            <td align="center" width="100">Cena jedn.</td>
            <td align="center">Wartość jedn.</td>
            <td align="center" width="50">VAT</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
        <tr align="left">
            <td width="140">Dostęp do Internetu</td>
            <td align="center">1</td>
            <td align="center" width="50">szt.</td>
            <td align="center" width="100">'. $row['ile'].'</td>
            <td align="center">Wartość </td>
            <td align="center" width="50">23%</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
 
    </table>
         </font> 
    <table>
        <tr>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>WYSTAWIŁ: ktoś</td></tr>
                    <tr><td>Zapłacono: dużo</td></tr>
                </table>
 
            </td>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>Razem do zapłaty:</td></tr>
                    <tr><td>Słownie:</td></tr>
                </table>
 
            </td>
 
        </tr>
</table> 

while ($row = mysql_fetch_array($zapytanie)) {

$to_return='';

}

return $to_return;
  

tylko co miałby być w while ?

0

ehhh, nigdy nie ogarnę ludzi, którzy mają problemy ze składnią, a biorą się za pisanie całych aplikacji, szczególnie używających baz danych, a potem miliony dziur, błędów itd.

ale w sumie źle Ci podałem, bo zapomniałem o tworzeniu nowych stron w pdf, bo zwóciłoby to jeden wielki ciąg. zrobimy to inaczej, tym razem gotowiec, bo szkoda tłumaczyć, mam nadzieję, że sam wyciągniesz wnioski

function faktura(){
$rok=$_GET['rok'];
$zapytanie = mysql_query("SELECT * FROM wymagane where rok =".$rok." and numer_MSI=".$_SESSION['online']);
$to_return = array();
while ($row = mysql_fetch_array($zapytanie)) {
 
$to_return[] = '
    <table cellpadding="20">    
        <tr>
            <td>
                <table margin_top="10px" align="left" >
                <tr><td>FAKTURA VAT NR : '. $row['numer_MSI'].'/'.$row['miesiac'].'/'.$row['rok']. '</td> </tr>
                <tr><td>Data wystawienia:</td> </tr>
                <tr><td>Miejsce wystawienia </td> </tr>
                </table>
            </td>
            <td>ORYGINAŁ</td>  
        </tr>  
        <tr align="left" valign="middle">
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>SPRZEDAWCA:</td></tr>
                    <tr><td>DANE SPRZEDAWCY </td></tr>
                </table>
            </td>
 
            <td>
                <table border="1" cellpadding="10">
                    <tr align="center" valign="bottom"><td>NABYWCA</td></tr>
                    <tr><td>DANE NABYWCY </td></tr>
                </table>
            </td>
        </tr>
    </table>
       <font size="10">
    <table border="1">
 
        <tr align="left">
            <td width="140">Wyszczególnienie</td>
            <td align="center" width="50">Ilość</td>
            <td align="center" width="50">jm</td>
            <td align="center" width="100">Cena jedn.</td>
            <td align="center">Wartość jedn.</td>
            <td align="center" width="50">VAT</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
        <tr align="left">
            <td width="140">Dostęp do Internetu</td>
            <td align="center">1</td>
            <td align="center" width="50">szt.</td>
            <td align="center" width="100">'. $row['ile'].'</td>
            <td align="center">Wartość </td>
            <td align="center" width="50">23%</td>
            <td align="center" width="100">Kwota VAT</td>
            <td align="center" width="100">Wartość Brutto</td>
        </tr>
 
    </table>
         </font> 
    <table>
        <tr>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>WYSTAWIŁ: ktoś</td></tr>
                    <tr><td>Zapłacono: dużo</td></tr>
                </table>
 
            </td>
            <td>
                <table cellspacing="10" cellpadding="10">
                    <tr><td>Razem do zapłaty:</td></tr>
                    <tr><td>Słownie:</td></tr>
                </table>
 
            </td>
 
        </tr>
</table> ';
 
    }
return $to_return;
  }
?> 

a potem zamiast:

$pdf->writeHTML(faktura(),false, false, false, false, 'L');

wstaw:

$faktury = faktura();

$cnt = count($faktury);
$i=0;
foreach ($faktury as $faktura) {
  $i++;
  $pdf->writeHTML($faktura,false, false, false, false, 'L');
  if ($i<$cnt) {
    $pdf->AddPage();
  }
}
$pdf->lastPage();

nie wiem co oznaczają poszczególne parametry writeHTML, nie chce mi się szukać, ale mam nadzieję, że nie zepsują całości

1 użytkowników online, w tym zalogowanych: 0, gości: 1