Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] [fpdf] Generowanie PDF z zmiennymi
Forum PHP.pl > Forum > Przedszkole
deprezes
Mam gotowy skrypt do tworzenia PDF, ale chcialbym w miejscu $wywiad kolo RAMZES Henryk
pojawila mi sie wartosc pobrana z bazy Mysql.

Nie wiem zadeklarowac po $pdf->Cell(200,200,' zeby zadzialala deklaracja $wywiad.


  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. class PDF extends FPDF
  6. {
  7. //Page header
  8. function Header()
  9. {
  10. //Logo
  11. $this->Image('dyplom.jpg',0,0);
  12. //Arial bold 15
  13. $this->SetFont('Arial','B',15);
  14. //Move to the right
  15. $this->Cell(80);
  16. //Title
  17. $this->Cell(30,10,'',0,0,'c');
  18. //Line break
  19. $this->Ln(20);
  20.  
  21. }
  22.  
  23. //Page footer
  24. function Footer()
  25. {
  26. //Position at 1.5 cm from bottom
  27. $this->SetY(-15);
  28. //Arial italic 8
  29. $this->SetFont('Arial','I',8);
  30. //Page number
  31. $this->Cell(0,10,'',0,1,'C'); 
  32. }
  33. }
  34.  
  35.  
  36.  
  37. $pdf=new PDF();
  38. $pdf->AliasNbPages();
  39. $pdf->AddPage();
  40. $pdf->AddFont('timesbdpl','','timesbdpl.php');
  41. $pdf->SetFont('timesbdpl', '', 24);
  42. $pdf->Cell(200,200,'$wywiad RAMZES Henryk',0,0,'C');
  43. $pdf->Cell(200,210,'.',0,0,'C');
  44. $pdf->Cell(100,120,'',0,1,'C');
  45. $pdf->Cell(190,10,'4',0,1,'C');
  46. $pdf->SetFont('Times','B',24);
  47. $pdf->Cell(190,24,'M-20',0,1,'C');
  48. $pdf->SetFont('Times','B',24);
  49. $pdf->Cell(190,10,'0:29:44',0,1,'C');
  50. $pdf->Output();
  51.  
  52. ?>


Prosze o pomoc.
Cezar708
UŻYWAJ BBCODE!!! Używaj opcji "Raportuj" ! /~strife/

Jeśli masz problem z łączeniem się z bazą danych?

to po prostu zobacz jak to jest rozwiązane na:
(zakładam, że używasz MySQL)

http://www.php.net/manual/en/ref.mysql.php

poniżej na stronie jest pełna lista funkcji do łączenia z bazą danych, najważniejsze to:

mysql_connect;
mysql_query:
mysql_fetch_*
deprezes
>[quote name='Cezar708' date='13.05.2007, 01:58:34 ' post='358379']
>UŻYWAJ BBCODE!!! Używaj opcji "Raportuj" ! /~strife/

guitar.gif Cezar708 jezeli nie jest to zbyt duzy problem mozesz mi zrobic tutoriala dla jednej zmiennej jako przyklad. Zaczalem sie wgryzac w podany przez Ciebie temat, ale szybciej mi bedzie nauczyc sie na przykladzie. Caly kod zagadnienia dalem w pierwszym poscie.
Cezar708
Na przykład:

  1. <?
  2. // za pomoca tej funkcji laczysz sie z baza danych 
  3. function connect2db($host_mysql, $uzytkownik_mysql, $haslo_mysql, $nazwa_bazy_danych_mysql){
  4. $conn = mysql_connect($host_mysql, $uzytkownik_mysql, $haslo_mysql);
  5. if (!$conn) {
  6. error_log( 'Unable to connect to DB: ' . mysql_error() );
  7. return false;
  8. }
  9. // tutaj wybierasz baze, w ktorej masz interesujace Cie dane
  10. if (!mysql_select_db($nazwa_bazy_danych_mysql)) {
  11. error_log( 'blad podczas wyboru bazy danych ' . mysql_error() );
  12. return false;
  13. }
  14. return $conn;
  15. }
  16. // za pomoca tej funkcji pobierasz dane z bazy
  17. function get_name($id_w_bazie_danych){
  18. global $conn;
  19. $sql = 'SELECT imie
  20. FROM  ludzie 
  21. WHERE id_czlowieka = '. $id_w_bazie_danych;
  22. $result = mysql_query($sql);
  23. if (!$result) {
  24. error_log( 'blad w zapytaniu: '.$sql.' ' . mysql_error() ); 
  25. return false;
  26. }
  27. if (mysql_num_rows($result) == 0) {
  28. error_log( 'Brak danych spelniajacych kryterium: id='.$id_w_bazie_danych);
  29. return false;
  30. }
  31. $row = mysql_fetch_assoc($result);
  32. return $row['imie'];
  33. }
  34. ###########################################
  35. // PRZYKLADOWE wywolania funkcji:
  36. $conn=connect2db('localhost', 'root', 'krasnal', 'baza_ludzi');
  37. /*
  38. (...) Twoj pozostały kod
  39. */
  40. // sprawdzasz czy dasz rade pobrac wynik
  41. if ( $conn && $imie = get_name($_GET['id_czlowieka']) ){
  42. $pdf->Cell(200,200,'$wywiad RAMZES $imie',0,0,'C');
  43. } else {
  44. $pdf->Cell(200,200,'$wywiad RAMZES brak danych',0,0,'C');
  45. }
  46. /*
  47. (...) Twoj pozostały kod
  48. */
  49. ?>


Założyłem, że: używasz MySQL

oczywiście to jest przykładowy kod, musisz go dostosować do własnych potrzeb, na przykład w linii 36 musisz podać swoje namiary na bazę danych, a w linii 19 stworzyć własne zapytanie, które wyciągnęłoby interesujące Cię dane.

przestudiuj go i jak go zrozumiesz to po prostu 'opakuj' go w jakąś ładną klasę i używaj.

Oczywiście, jeśli masz problemy z SQL, musisz się go nauczyć:
przydatne mogą okazać się na przykład linki:
Tutorial po polsku
... po angielsku
dokumentacja MySQL

ale najwięcej na temat: na tej ciekawej stronie
deprezes
Cezar708 pierwsze to dziekuje, że byłeś skłonny już poświęcic swój czas, ale mam jeszcze problem z tym odwołaniem się. No nie mogę za choinke tego uruchomic. Przerylem cala siec. Potrzebuje tylko juz teraz wskazowki zeby przyszla wartosc w zmienna i pojawila sie w skrypcie. Prosze o przyklad dla jednej zmiennej. Dalej sobie juz wowczas poradze. Z gory dziekuje. Desperat ;-) hehe

  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. class PDF extends FPDF
  6. {
  7. //Page header
  8. function Header()
  9. {
  10. //Logo
  11. //Arial bold 15
  12. $this->SetFont('Arial','B',15);
  13. //Move to the right
  14. $this->Cell(80);
  15. //Title
  16. $this->Cell(30,10,'',0,0,'c');
  17. //Line break
  18. $this->Ln(20);
  19.  
  20. }
  21.  
  22. //Page footer
  23. function Footer()
  24. {
  25. //Position at 1.5 cm from bottom
  26. $this->SetY(-15);
  27. //Arial italic 8
  28. $this->SetFont('Arial','I',8);
  29. //Page number
  30. $this->Cell(0,10,'',0,1,'C'); 
  31. }
  32. }
  33.  
  34.  
  35.  
  36. $pdf=new PDF();
  37. $pdf->AliasNbPages();
  38. $pdf->AddPage();
  39. $pdf->Cell(200,200,'$zmienna',0,0,'C');
  40. $pdf->Cell(200,210,'.',0,0,'C');
  41. $pdf->Cell(100,120,'',0,1,'C');
  42. $pdf->Cell(190,10,'1',0,1,'C');
  43. $pdf->SetFont('Times','B',24);
  44. $pdf->Cell(190,24,'M-20',0,1,'C');
  45. $pdf->SetFont('Times','B',24);
  46. $pdf->Cell(190,10,'0:29:44',0,1,'C');
  47. $pdf->Output();
  48. ?>


Juz nawet kombinowalem z globalnymi, ale nie moge zaimplentowac zmiennej w $pdf->Cell(200,200,'$zmienna',0,0,'C'); Nadal zamiast wartosci pokazuje sie mi $zmienna sadsmiley02.gif


--
poprawiłem bbcode. na przyszlość proszę o tym pamiętać.
~siemakuba
Kicok
http://pl2.php.net/manual/pl/language.type...g.syntax.single

Cytat
Notatka: W przeciwieństwie do dwóch pozostałych składni, zmienne nie będą zamienione na swoje wartości, kiedy pojawią się pomiędzy pojedynczymi cudzysłowami (apostrofami).
deprezes
Kicok dziękuje, że włączyłeś się w tworzenie rozwiązania.

Taki zapis

  1. <?php
  2. //poprzedzająca czesc kodu
  3. $pdf->Cell(200,200,"$zmienna",0,0,'C');
  4. //dalsza cześc kodu
  5. ?>


Spowoduje błąd Parse error: syntax error, unexpected T_STRING in ...
Kicok
Zmiennych nie trzeba umieszczać w cudzysłowie:
  1. <?php
  2.  
  3. $pdf->Cell( 200, 200, $zmienna, 0, 0, 'C' );
  4.  
  5. ?>


Ale z tego kodu nadal nic nie wynika. Upewnij się, że błąd "syntax error" odwołuje się do tej linii. Może błąd składni masz w innej.
deprezes
Dzięki Michał ;-) za podpowiedź. Takiego banału nie mogłem dostrzec. Ja, uparcie gdzie indziej cisnąłem te cudzysłowia podwójne i stąd brak efektu ;-)

{/ciach}

  1. <?php
  2. ...
  3. $pdf->Cell(200,200,'$zmienna',0,0,'C');
  4. ...
  5. ?>


Tutoriale prezentowane na stronie FPDF zawieraja powyższy zapis. Prawidłowa forma to

  1. <?php
  2. ...
  3. $pdf->Cell(200,200,"$zmienna",0,0,'C');
  4. ...
  5. ?>


Jeżeli chcemy zawrzec zmienna z wartością, a niechcemy $... ;-)

Deklarowanie oczyście powinno wyglądac w postaci

  1. <?php
  2. $zmienna = "Uczestnik";
  3. ?>



Cały kod wygląda tak, np.

  1. <?php
  2. define('FPDF_FONTPATH','font/');
  3. require('fpdf.php');
  4.  
  5. global $zmienna ;
  6.  
  7. $zmienna = "Harcerz";
  8.  
  9.  
  10. class PDF extends FPDF
  11. {
  12. //Page header
  13. function Header()
  14. {
  15. //Logo
  16. $this->Image('dyplom.jpg',0,0);
  17. //Arial bold 15
  18. $this->SetFont('Arial','B',15);
  19. //Move to the right
  20. $this->Cell(80);
  21. //Title
  22. $this->Cell(30,10,'',0,0,'c');
  23. //Line break
  24. $this->Ln(20);
  25.  
  26. }
  27.  
  28. //Page footer
  29. function Footer()
  30. {
  31. //Position at 1.5 cm from bottom
  32. $this->SetY(-15);
  33. //Arial italic 8
  34. $this->SetFont('Arial','I',8);
  35. //Page number
  36. $this->Cell(0,10,'',0,1,'C'); 
  37. }
  38. }
  39.  
  40.  
  41.  
  42. $pdf=new PDF();
  43. $pdf->AliasNbPages();
  44. $pdf->AddPage();
  45. $pdf->AddFont('timesbdpl','','timesbdpl.php');
  46. $pdf->SetFont('timesbdpl', '', 24);
  47. $pdf->Cell(200,200,"$zmienna RAMZES Henryk",0,0,'C');
  48. $pdf->Cell(200,210,'.',0,0,'C');
  49. $pdf->Cell(100,120,'',0,1,'C');
  50. $pdf->Cell(190,10,'1',0,1,'C');
  51. $pdf->SetFont('Times','B',24);
  52. $pdf->Cell(190,24,'M-20',0,1,'C');
  53. $pdf->SetFont('Times','B',24);
  54. $pdf->Cell(190,10,'0:29:44',0,1,'C');
  55. $pdf->Output();
  56.  
  57. ?>
pawel.mazurek
Po kilku latach pozwolę sobie rozszerzyć ten wątek o pewną bardzo istotną kwestię.
A mianowicie o używaniu zmiennych globalnych / sesyjnych przy generowaniu pdfa.
Jak wygląda sprawa z generowaniem pdfa przy pomocy fpdf dla zmiennych globalnych i sesyjnych.
Próbowałem już generować pdf ze zmiennymi sesyjnymi:

  1. $login = $_SESSION['users_login']; //wczesniej mam to zadeklarowane, sprawdzilem strone wczesniej ze tam jest pozadana wartosc
  2. $pdf->Cell(60,10,"$login");


W ten sposób nie działa,

  1. $login=$GLOBALS["zmiennalogin"]; //wczesniej mam to zadeklarowane, sprawdzilem strone wczesniej ze tam jest pozadana wartosc
  2. $pdf->Cell(60,10,"$login");


W ten również, nic, pdf się generuje ale w tym miejscu jest pusto, tak jak powyżej.

  1. $login="testowylogin";
  2. $pdf->Cell(60,10,"$login");


W ten sposób oczywiście działa, generuje się pdf z wyrazem testowylogin.

Czy ktoś z Was spotkał się z takim problemem ?
Proszę o pomoc.


Naprawdę nikt z Was nie spotkał się z takim problemem i nie ma pomysłu co z tym zrobić ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.