www.math.uni.lodz.pl/ radmat
Do dynamicznego generowania pliku PDF wykorzystamy klasę FPDF. Załóżmy, że mamy formularz składający się z jednolinijkowego pola tekstowego, z którego będziemy pobierać np. imię osoby i to imię będziemy chcieli wyświetlić w pliku PDF. Plik PHP pobierający tę informację i generujący wydruk może wyglądać następująco:
<?php require("fpdf/fpdf.php"); $imie=$_post[ imie ]; class PDF extends FPDF $pdf=new PDF(); $pdf->open(); $pdf->addpage(); $pdf->addfont( arial,, arialpl.php ); $pdf->setfont( arial, B,16); $pdf->write(20, Twoje imię: ); $pdf->ln(15); $pdf->write(20,$imie); ob_end_clean(); $pdf->output();?>
Ćwiczenie 1 Proszę napisać stronę internetową kurs online, która będzie umożliwiała rozwiązanie testu i w przypadku jego zaliczenia wygenerowanie imiennego pliku PDF potwierdzającego zaliczenie testu. Na pierwszej stronie proszę umieścić formularz, z którego zapiszą Państwo do bazy danych imię, nazwisko i miejsce pracy / instytucję osoby rozwiązującej test. Po podaniu tych informacji proszę wyświetlić test składający się z pięciu pytań. Do każdego pytania proszę napisać po trzy odpowiedzi (tylko jedna poprawna dla każdego pytania). Odpowiedzi proszę pobierać z pól jednokrotnego wyboru. Przy każdej odpowiedzi proszę zliczać liczbę punktów. Po ukończeniu testu liczbę zdobytych punktów proszę zapisywać w bazie danych (oczywiście dla osoby rozwiązującej test!). Jeśli osoba rozwiązująca test uzyska minimum 80%, to wówczas należy wygenerować plik PDF, będący certyfikatem jego ukończenia. W dynamicznie generowanym pliku proszę wypisać dane osoby, która zdała test oraz procent uzyskanych punktów.
Uwaga! Poniższy przykład pokazuje logikę działania aplikacji dla jednego pytania. Państwa zadanie polega na dopisaniu kodu, który umożliwi wykonanie ćwiczenia zgodnego z powyższym opisem.
Plik index.html <html> <form action="test.php"> Podaj swoje dane:<br><br> Podaj swoje imię: <input type="text" name="imie"> <br><br>podaj swoje nazwisko: <input type="text" name="nazwisko"> <br><br>podaj nazwę instytucji: <input type="text" name="instytucja"> <br><br><input type="submit" value="zarejestruj i przejdź do testu"> </form> </html>
Plik test.php <?php $imie=$_post["imie"]; $nazwisko=$_post["nazwisko"]; $instytucja=$_post["instytucja"]; error_reporting(0); $polaczenie=mysql_connect("localhost","root","") or die("w tej chwili nie można się połączyć z bazą"); mysql_query("set NAMES utf8 "); mysql_select_db("test",$polaczenie); $sql="insert INTO osoba (imie, nazwisko, instytucja) VALUES ( $imie, $nazwisko, $instytucja )"; mysql_query($sql); mysql_close($polaczenie);
echo "Rozwiąż test<br><br>"; echo "<form action= wyniki.php method= post >"; echo "1. Jaki znacznik definiuje wiersz w tabeli HTML?<br>"; echo "<input type= radio name= pytanie1 value= odp1 id= odp1 >"; echo "TD<br>"; echo "<input type= radio name= pytanie1 value= odp2 id= odp2 >"; echo "TR<br>"; echo "<input type= radio name= pytanie1 value= odp3 id= odp3 >"; echo "BR<br>"; echo "<input type= submit value= Zobacz wyniki >"; echo "</form>"; mysql_close($polaczenie);?>
Plik wyniki.php <?php require("fpdf/fpdf.php"); $odp=$_post["pytanie1"]; $punkty=0; if($odp=="odp2") $punkty=$punkty+1; else $punkty=0;
if($punkty==1) error_reporting(0); $polaczenie=mysql_connect("localhost","root","") or die("w tej chwili nie można się połączyć z bazą"); mysql_query("set NAMES utf8 "); mysql_select_db("test",$polaczenie); $sql="select MAX(id) AS id FROM osoba"; $wynik_id=mysql_query($sql); $linia=mysql_fetch_assoc($wynik_id); $id=$linia[ id ]; $sql="update osoba SET punkty=$punkty WHERE id=$id"; mysql_query($sql);
$sql="select imie, nazwisko, instytucja, punkty FROM osoba ORDER BY ID DESC LIMIT 1"; $wynik=mysql_query($sql); $linia=mysql_fetch_assoc($wynik); $imie=$linia[ imie ]; $nazwisko=$linia[ nazwisko ]; $punkty=$linia[ punkty ]; $procent=$punkty*100; mysql_close($polaczenie);
class PDF extends FPDF function Header() $this->image( logo.png,15,35,30); $this->setfont( arial, B,20); $this->cell(200,50, Certyfikat ukończenia testu,0,0, C ); function Footer() $this->sety(-50); $this->setfont( arial,,10); $this->cell(1); $this->cell(0,0, Certyfikat nadała firma RM,0,0, C );
$pdf=new PDF(); $pdf->open(); $pdf->addpage(); $pdf->addfont( arial,, arialpl.php ); $pdf->setfont( arial, B,16); $pdf->ln(30); $pdf->write(20, Niniejszym zaświadcza się, że Pani / Pan ); $pdf->ln(15); $pdf->write(20,$imie..$nazwisko); $pdf->ln(15); $pdf->write(20, ukończył(a) test z wynikiem ); $pdf->ln(15); $pdf->write(20,$procent. %. ); ob_end_clean(); $pdf->output();
else echo "Niestety nie ukończyłeś testu.";?>
Baner zależny od pory dnia <?PHP function wybierzbaner() $godzina=date("g"); if($godzina>=12 && $godzina<13) return("banner1.gif"); else if($godzina>=13 && $godzina<14) return("banner2.gif"); $str="<img src= ".wybierzbaner()." >"; echo($str);?>