Narzędzia użytkownika

Narzędzia witryny


pl:paw:lab_paw_php_4

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Poprzednia rewizja po obu stronach Poprzednia wersja
Nowa wersja
Poprzednia wersja
pl:paw:lab_paw_php_4 [2021/03/19 15:57]
wojnicki [Ćwiczenie 4: Generacja dokumentów PDF]
pl:paw:lab_paw_php_4 [2022/01/11 15:17] (aktualna)
wojnicki [Ćwiczenie 3: Klasy i obiekty, generacja dokumentów PDF]
Linia 3: Linia 3:
 ===== Ćwiczenie 1: Dostęp do zewnętrznych danych ===== ===== Ćwiczenie 1: Dostęp do zewnętrznych danych =====
  
-Przetestuj działanie poniższych programów. Widzisz różnicę? +Przetestuj działanie poniższych programów. Widzisz różnicę? Zwróć uwagę na napis na środku. 
-<code php>+<code php wp.php>
 <?php <?php
-  $c=curl_init('http://www.google.pl');+  $c=curl_init('https://www.wikipedia.org');
   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
   $dane=curl_exec($c);   $dane=curl_exec($c);
Linia 15: Linia 15:
 </code> </code>
  
-<code php>+<code php wp2.php>
 <?php <?php
-  $c=curl_init('http://www.google.pl');+  $c=curl_init('https://www.wikipedia.org');
   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);   curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
   $dane=curl_exec($c);   $dane=curl_exec($c);
   curl_close($c);   curl_close($c);
  
-  echo str_replace('Google','AGH',$dane);+  echo str_replace('Wikipedia','Encyklopedia AGH',$dane);
 ?> ?>
 </code> </code>
Linia 57: Linia 57:
 W PHP obsługę komunikacji z Wikipedią można zaprogramować w poniższy sposób. W PHP obsługę komunikacji z Wikipedią można zaprogramować w poniższy sposób.
  
-<code php>+<code php wp3.php>
 $c=curl_init('https://pl.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=Makaron'); $c=curl_init('https://pl.wikipedia.org/w/api.php?format=json&action=query&prop=extracts&exintro=&explaintext=&titles=Makaron');
 curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);
Linia 68: Linia 68:
 } }
 </code> </code>
 +
 +Uwaga, jeżeli w haśle wystąpią znaki diakrytyczne należy użyć funkcji: ''urlencode()'' przed wysłaniem zapytania do Wikipedii.
  
 Więcej informacji o przetwarzaniu JSON można znaleźć pod adresem: http://www.php.net/manual/en/ref.json.php  Więcej informacji o przetwarzaniu JSON można znaleźć pod adresem: http://www.php.net/manual/en/ref.json.php 
Linia 87: Linia 89:
  
  
-Do przesyłania danych wykorzystaj biblioteke CURL: +Do przesyłania danych wykorzystaj biblioteke CURL (Uwaga: jeżeli dostęp do CouchDB jest chroniony, we wszystkich poniższych adresach HTTP trzeba dodać informacje o nazwie użytkownika i haśle tj.: http://... -> http://login:haslo@... )
-<code php>+<code php curl.php>
 <?php <?php
   $c=curl_init('http://awing.kis.agh.edu.pl:5984');   $c=curl_init('http://awing.kis.agh.edu.pl:5984');
Linia 130: Linia 132:
  
 Do przesyłania danych można również wykorzystać ''fopen'', jednak aktualnie funkcja ta jest niedostępna na serwerach: borg, charon i student. Do przesyłania danych można również wykorzystać ''fopen'', jednak aktualnie funkcja ta jest niedostępna na serwerach: borg, charon i student.
-<code php>+<code php curlcouch.php>
 $h=fopen("http://awing.ia.agh.edu.pl:5984/_all_dbs", "r"); $h=fopen("http://awing.ia.agh.edu.pl:5984/_all_dbs", "r");
 if ($h) { if ($h) {
Linia 145: Linia 147:
 ==== Informacje dodatkowe: Dostęp do bazy CouchDB ==== ==== Informacje dodatkowe: Dostęp do bazy CouchDB ====
  
-Przetestuj działanie skryptu couchshell.php: <code php>+Przetestuj działanie skryptu couchshell.php: <code php couchshell.php>
  
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
Linia 223: Linia 225:
  
  
-===== Ćwiczenie 3: Klasy i obiekty =====+===== Ćwiczenie 3: Klasy i obiekty, generacja dokumentów PDF ===== 
 + 
 +Dostarczona jest struktura danych (np. pochodząca z odczytu z bazy danych) przechowująca informacje o flocie samochodów: 
 + 
 +<code php dane.php> 
 +// dane: marka samochodu, kolor, nr rej., przebieg, stan techniczny 
 +$dane = array( 
 +  array('VW Passat','srebrny', 'DW5789', 98000, 'dobry'), 
 +  array('Syrena','żółty', 'WA4389', 60000, 'zły'), 
 +  array('Ford Focus','czarny', 'KR1243', 21000, 'dobry'), 
 +  array('Honda Civic','zielony', 'KR9834', 8000, 'dobry'
 +); 
 +</code> 
 + 
 +Celem ćwiczenia jest napisanie programu w PHP generującego dokument PDF, który pokaże powyższe dane w postaci {{ :pl:paw:tabela.pdf |tabelarycznej}}. 
 + 
 +Do wykonania ćwiczenia użyj popularnej biblioteki TCPDF https://tcpdf.org/, tam też znajdziesz wiele przykładów jej użycia (Uwaga: dokumentacja klasy: https://tcpdf.org/docs/srcdoc/tc-lib-pdf/classes-Com-Tecnick-Pdf-Tcpdf/ alternatywnie można zaglądnąć do pliku ''tcpdf.php''). 
 +Biblioteka jest w całości napisana w PHP. 
 +Aktualną wersję możesz pobrać z: https://github.com/tecnickcom/TCPDF/archive/6.3.5.zip 
 +Archiwum rozpakuj w katalogu, z Twoimi skryptami PHP (zwróć uwagę na odpowiednie prawa dostępu). 
 + 
 +Przykład użycia biblioteki znajdziesz poniżej. 
 + 
 +<code php pdf1.php> 
 +require_once('TCPDF-6.3.5/tcpdf_import.php'); 
 + 
 +$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); // $orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8' 
 +$pdf->SetFont('dejavusans', '', 10);                     // użyj czcionki DejavuSans, domyślne czcionki PDF nie uwzględniają polskich znaków 
 +$pdf->setPrintHeader(false);                             // wyłącz nagłówki stron 
 +$pdf->setPrintFooter(false);                             // wyłącz stopki stron 
 +$pdf->setMargins(10,10,10,10);                           // ustaw marginesy 
 + 
 +$pdf->addPage();                                         // dodaj stronę 
 +$pdf->setXY(80,80);                                      // ustaw kursor na pozycji 80x80mm 
 +$pdf->Write(0, 'Przykładowy napis na stronie.');         // dodaj napis 
 +$pdf->Output()                                           // wygeneruj dokument PDF na standardowym wyjściu 
 +</code> 
 + 
 +Do sporządzenia tabelki możesz użyć metody ''writeHTML()'', która generuje treść na podstawie składni HTML. 
 +Z w/w danych wygeneruj tabelkę w HTML, którą przypisz do zmiennej np. ''$html='<table><thead>.....</thead><tbody>...</tbody></head>' ''. Możesz użyć poniższego kodu. Więcej przykładów znajdziesz pod adresem: https://tcpdf.org/examples/example_006/ 
 +<code php pdf2.php> 
 +require_once('TCPDF-6.3.5/tcpdf_import.php'); 
 + 
 +$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); 
 +$pdf->SetFont('dejavusans', '', 10); // domyślne czcionki PDF nie uwzględniają polskich znaków 
 +$pdf->setPrintHeader(false); 
 +$pdf->setPrintFooter(false); 
 +$pdf->setMargins(10,10,10,10); 
 + 
 +$html='<table>'; 
 + 
 +/*  
 +   Tutaj powinien być kod generujący zawartość zmiennej $html 
 +   Warto użyć pętli foreach. 
 +   ... 
 +*/ 
 + 
 +$html.='</table>'; 
 + 
 +$pdf->addPage(); 
 +$pdf->writeHTML($html); 
 +$pdf->Output(); 
 +</code>  
 + 
 +===== Ćwiczenie 4: Klasy i obiekty =====
  
 Napisz klasę ''Logowanie'' umożliwiającą obsługę danych do logowania tj. dodawanie par login-hasło, weryfikację hasła, usuwanie par login-hasło. W/w informacje powinny być przechowywane w bazie danych z wykorzystaniem PDO. Napisz klasę ''Logowanie'' umożliwiającą obsługę danych do logowania tj. dodawanie par login-hasło, weryfikację hasła, usuwanie par login-hasło. W/w informacje powinny być przechowywane w bazie danych z wykorzystaniem PDO.
Linia 233: Linia 299:
  
 Do przetestowania działania klasy możesz użyć poniższego kodu. Do przetestowania działania klasy możesz użyć poniższego kodu.
-<code php>+<code php ltest.php>
 <?php <?php
   $logowanie = new Logowanie();   $logowanie = new Logowanie();
Linia 251: Linia 317:
 Dostęp do bazy danych PostgreSQL na charonie albo borgu można zrealizować w poniższy sposób. Dostęp do bazy danych PostgreSQL na charonie albo borgu można zrealizować w poniższy sposób.
  
-<code php>+<code php pgsql1.php>
 <?php <?php
 $dbh = new PDO('pgsql:host=localhost;dbname=nazwa_bazy_danych', 'nazwa_uzytkownika_bazy', 'haslo_uzytkownika_bazy'); $dbh = new PDO('pgsql:host=localhost;dbname=nazwa_bazy_danych', 'nazwa_uzytkownika_bazy', 'haslo_uzytkownika_bazy');
Linia 262: Linia 328:
  
 W przypadku korzystania z tego samego serwera dla skrytpow PHP i bazy danych, do PostgreSQL można podłączyć się nie używając hasła w następujący sposób. W przypadku korzystania z tego samego serwera dla skrytpow PHP i bazy danych, do PostgreSQL można podłączyć się nie używając hasła w następujący sposób.
-<code php>+<code php pgsql2.php>
 <?php <?php
 $dbh = new PDO('pgsql:dbname=nazwa_uzytkownika_bazy'); $dbh = new PDO('pgsql:dbname=nazwa_uzytkownika_bazy');
Linia 276: Linia 342:
 Dostęp do bazy danych MySQL na serwerze mysql.agh.edu.pl (hsło dostępowe mozna uzyskac przez panel AGH: https://panel.agh.edu.pl/ ) można zrealizować w poniższy sposób. Dostęp do bazy danych MySQL na serwerze mysql.agh.edu.pl (hsło dostępowe mozna uzyskac przez panel AGH: https://panel.agh.edu.pl/ ) można zrealizować w poniższy sposób.
  
-<code php>+<code php mysql1.php>
 <?php <?php
 $dbh = new PDO('mysql:host=mysql.agh.edu.pl;dbname=nazwa_bazy_danych','nazwa_uzytkownika_bazy', $dbh = new PDO('mysql:host=mysql.agh.edu.pl;dbname=nazwa_bazy_danych','nazwa_uzytkownika_bazy',
Linia 287: Linia 353:
 </code> </code>
  
-===== Ćwiczenie 4: Generacja dokumentów PDF ===== 
- 
-Dostarczona jest struktura danych (np. pochodząca z odczytu z bazy danych) przechowująca informacje o flocie samochodów: 
- 
-<code php> 
-// dane: marka samochodu, kolor, nr rej., przebieg, stan techniczny 
-$dane = array( 
-  array('VW Passat','srebrny', 'DW5789', 98000, 'dobry'), 
-  array('Syrena','żółty', 'WA4389', 60000, 'zły'), 
-  array('Ford Focus','czarny', 'KR1243', 21000, 'dobry'), 
-  array('Honda Civic','zielony', 'KR9834', 8000, 'dobry') 
-); 
-</code> 
- 
-Celem ćwiczenia jest napisanie programu w PHP generującego dokument PDF, który pokaże powyższe dane w postaci {{ :pl:paw:tabela.pdf |tabelarycznej}}. 
- 
-Do wykonania ćwiczenia użyj popularnej biblioteki TCPDF https://tcpdf.org/, tam też znajdziesz wiele przykładów jej użycia. 
-Biblioteka jest w całości napisana w PHP. 
-Aktualną wersję możesz pobrać z: https://github.com/tecnickcom/TCPDF/archive/6.3.5.zip 
-Archiwum rozpakuj w katalogu, z Twoimi skryptami PHP (uwaga musisz nadac odpowiednie prawa dostępu do rozpakowanych katalogów i plików PHP). 
- 
-Przykład użycia biblioteki znajdziesz poniżej. 
- 
-<code php> 
-require_once('TCPDF-6.3.5/tcpdf_import.php'); 
- 
-$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); // $orientation='P', $unit='mm', $format='A4', $unicode=true, $encoding='UTF-8' 
-$pdf->SetFont('dejavusans', '', 10);                     // użyj czcionki DejavuSans, domyślne czcionki PDF nie uwzględniają polskich znaków 
-$pdf->setPrintHeader(false);                             // wyłącz nagłówki stron 
-$pdf->setPrintFooter(false);                             // wyłącz stopki stron 
-$pdf->setMargins(10,10,10,10);                           // ustaw marginesy 
- 
-$pdf->addPage();                                         // dodaj stronę 
-$pdf->setXY(80,80);                                      // ustaw kursor na pozycji 80x80mm 
-$pdf->Write(0, 'Przykładowy napis na stronie.');         // dodaj napis 
-$pdf->Output()                                           // wygeneruj dokument PDF na standardowym wyjściu 
-</code> 
- 
-Do sporządzenia tabelki możesz użyć metody ''writeHTML()'', która generuje treść na podstawie składni HTML. 
-Z w/w danych wygeneruj tabelkę w HTML, którą przypisz do zmiennej np. <code php>$html='<table><thead>.....</thead><tbody>...</tbody></head>' </code> i uzyj poniższego kodu: 
-<code php> 
-require_once('TCPDF-6.3.5/tcpdf_import.php'); 
- 
-$pdf = new TCPDF('P', 'mm', 'A4', true, 'UTF-8', false); 
-$pdf->SetFont('dejavusans', '', 10); // domyślne czcionki PDF nie uwzględniają polskich znaków 
-$pdf->setPrintHeader(false); 
-$pdf->setPrintFooter(false); 
-$pdf->setMargins(10,10,10,10); 
- 
-$html=.... 
- 
-foreach  
-$pdf->addPage(); 
-$pdf->writeHTML($html); 
-$pdf->Output(); 
-</code>  
pl/paw/lab_paw_php_4.1616165843.txt.gz · ostatnio zmienione: 2021/03/19 15:57 przez wojnicki