php dynamiczne generowanie stron www sz6kxbdwsriowxxcabrzfaelukntqlmbk57rytq SZ6KXBDWSRIOWXXCABRZFAELUKNTQLMBK57RYTQ

background image

Magazyn Linux & Unix nr 10/99

1–1

PHP – dynamiczne generowanie

stron WWW

Piotr Bolek

W artykule jest opisany język PHP – jedno z narzędzi umożliwiających realizację
interaktywnych stron internetowych. Podana jest ogólna charakterystyka tego
narzędzia oraz kilka prostych przykładów ilustrujących możliwości jakie daje PHP
twórcom serwisów WWW.

1

Charakterystyka PHP

PHP jest językiem skryptowym, który jest przeznaczony do dynamicznego generowa-
nia stron HTML. Język ten jest zanurzony w HTML-u, więc w przeciwieństwie do CGI
przy korzystaniu z PHP nie ma potrzeby pisania oddzielnych skryptów generujących
cały HTML-owy kod strony. Aby skorzystać z PHP piszemy zwykłą stronę w języku
HTML i umieszczamy w niej polecenia, które będą wykonane przez interpreter PHP.
Jest więc to nieco podobne do działania skryptów w języku Javascript z tym, że
polecenia wykonywane są po stronie serwera WWW (przez specjalny moduł), a nie
przez przeglądarkę internetową. Używając PHP mamy podobnie jak w przypadku
CGI dostęp do wszelkich informacji i danych związanych z żądaniem HTTP, a więc
do wartości wpisanych przez użytkownika pól formularzy, nagłówków HTTP, danych
typu cookie.

PHP jest językiem wzorowanym na znanych i powszechnie używanych językach
takich jak Java, Perl i C. Dlatego używanie PHP nie powinno być problemem nawet
dla niezbyt wprawnych programistów. Zaletą PHP jest możliwość używania wielu
bibliotek, które można dołączyć do interpretera PHP. Przede wszystkim z PHP można
łatwo korzystać z zasobów z różnych baz danych – od najprostszych – płaskich plików
dbm i dBase, do prawdziwych systemów bazodanowych zarówno bezpłatnych jak
i komercyjnych: msql, MySQL, Postgres, Sybase, Informix, Oracle. Dzięki możliwości
używania interfejsu ODBC możliwe jest nawet sięganie do baz danych działających
w systemach Windows. W przypadku używania PHP do integracji baz danych
z system WWW zapytania są realizowane w języku SQL.

Używając PHP mamy dostęp do informacji graficznych pojawiających się na stronach
WWW. Jako minimum można uzyskać informacje o rozmiarach umieszczanych
na stronach WWW plików graficznych (np. pobieranych z baz danych). Po
skompilowaniu PHP z interfejsem do biblioteki GD mamy możliwość dynamicznego
generowania lub modyfikowania plików GIF.

Dzięki możliwości konsolidacji PHP z bibliotekami ClibPDF oraz PDFlib, możliwe jest
także dynamiczne generowanie dokumentów PDF, bez konieczności przechodzenia
przez język Postscript i z pominięciem procesu destylacji. Pozwala to efektywnie
generować na żądanie dobrej jakości dokumenty nadające się do druku – mogą to

background image

PHP – dynamiczne generowanie stron WWW

1–2

Magazyn Linux & Unix nr 10/99

być rachunki lub faktury, raporty z baz danych – np. rozkłady jazdy, zajęć lub
terminarze, nadające się do druku wykresy itp.

PHP jest dystrybuowane ze szczegółową dokumentacją w formacie HTML. W sieci
można także znaleźć tę dokumentację w innych formatach np. PDF.

2

Instalacja i konfiguracja

Aktualną wersję PHP można znaleźć na stronach WWW poświęconych temu
narzędziu: http://www.php.net. W czasie pisania tego artykułu najświeższą
dostępną wersją była 3.0.12. Dostępne są już także pakiety beta PHP w wersji 4.
Nowa wersja jest oparta o interpreter o nazwie Zend i jak piszą autorzy jest znacznie
wydajniejsza od swoich poprzedników. Przykłady prezentowane w tym artykule były
testowane z interpreterami PHP w wersjach 3.0.12 i 4.0b2 (wersja beta) z serwerem
WWW Apache v. 1.3.9.

Szybki sposób instalacji PHP jako modułu serwera Apache opisany jest na początku
pliku INSTALL w pakiecie dystrybucyjnym PHP. Ułatwieniem może być skorzystanie
ze skryptu setup znajdującego się w głównym katalogu źródłowym PHP. Skrypt
ten zadaje pytania na temat pożądanej konfiguracji i na koniec wywołuje właściwy
skrypt konfiguracyjny configure. Najlepszym rozwiązaniem (głównie ze względu
na wydajność) jest skompilowanie PHP jako modułu serwera WWW, możliwe jest
jednak także używanie PHP za pośrednictwem interfejsu CGI.

Po instalacji możliwe jest konfigurowanie interpretera PHP za pośrednictwem pliku
konfiguracyjnego php3.ini, którego domyślnym katalogiem jest /usr/local/lib/.
Modyfikując zawartość tego pliku można spowodować np., ładowanie „bibliotek”
z kodem PHP (np. definicjami używanych na wszystkich stronach funkcji) przed
interpretowaniem zawartości strony WWW. Można także określać sposób
prezentacji informacji o błędach na przetwarzanych stronach. Pełny opis poleceń
konfiguracyjnych można znaleźć w dokumentacji.

3

Kod PHP w plikach HTML

Istnieją cztery sposoby umieszczania kodu PHP w plikach HTML:

1.

<? echo ("Najprostszy, jako ,,SGML processing instruction’’\n"); ?>

2.

<?php echo("Jawne wskazanie języka\n"); ?>

3.

<script language="php">

echo ("Jako zawartość elementu ,,script’’");

</script>

background image

PHP – dynamiczne generowanie stron WWW

Magazyn Linux & Unix nr 10/99

1–3

4.

<% echo ("Sposób opcjonalny (ASP-style)"); %>

Drugi i trzeci sposób są dostępne zawsze. Pierwszy i czwarty muszą być
jawnie włączone, w momencie kompilacji, albo przez odpowiedni zapis w pliku
konfiguracyjnym. Ostatni sposób jest dostępny począwszy od wersji 3.0.4.

Kolejne instrukcje kodu PHP są rozdzielane średnikami podobnie jak w C czy
w perlu. Etykieta zamykająca blok kodu PHP (”?>”) także oznacza koniec instrukcji,
więc ostatnia instrukcja w bloku nie musi być zakończona średnikiem, nawet jeśli nie
jest to ostatni blok PHP w pliku.

Komentarze w kodzie PHP można tworzyć tak samo jak w języku C++ i w shellu
(perlu) czyli jako komentarze blokowe (/* ... */) albo komentarze wierszowe (na
prawo od // lub #). Komentarze blokowe nie mogą być zagnieżdżane.

4

Typy danych i zmienne

W PHP dostępne są wszystkie typowe typy danych:

liczby całkowite,

liczby zmiennoprzecinkowe,

ciągi znaków,

tablice, które są właściwie z założenia tablicami asocjacyjnymi, ale mogą być
używane jako zwykłe tablice czy listy,

obiekty.

Zmienne są oznaczane podobnie jak w perlu – zawsze zaczynają się od znaku $
(uwaga użytkownicy perla – także tablice używane w kontekście listowym). Podobnie
jak w innych językach skryptowych zmienne nie muszą być deklarowane, a ich typ
może zmieniać się dynamicznie w zależności od kontekstu:

<?php
$b[] = $a~= 10;

# liczba całkowita:

10

$b[] = $a~.= "abc";

# ciąg znaków:

"10abc"

$b[] = $a~+= .1;

# liczba rzeczywista:

10.1

$b[] = $a~-= "4 słonie"; # liczba rzeczywista:

6.1

$b[] = $a~.= "Bzz";

# ciąg znaków:

"6.1Bzz"

$b[] = $a~+= "12 miesięcy"; # liczba całkowita:

18

?>

<table border=1 width=300 cellpadding=2>

<tr><th>Indeks<th>Wartość<th>Typ

<?php
while (list($key, $val) = each($b)) {

echo "<tr><td> $key <td> $val <td>" . gettype($val);

}
?>
</table>

background image

PHP – dynamiczne generowanie stron WWW

1–4

Magazyn Linux & Unix nr 10/99

W powyższym przykładzie modyfikujemy zmienną $a, a jej kolejne wartości
zapamiętujemy w tablicy $b (przypisanie do tablicy, bez podania indeksu powoduje
dodawanie elementu na koniec tablicy z automatycznym zwiększeniem indeksu).
W komentarzu zaznaczony jest typ, jaki aktualnie ma zmienna oraz jej wartość.
Na koniec w pętli while wypisywane są kolejne zapamiętane wartości oraz ich
typ. Wynik jest następujący (oczywiście jest to fragment zawartości strony WWW
prezentowanej w przeglądarce Netscape):

Na tym prostym przykładzie możemy zobaczyć także, jak łatwo jest łączyć efekt
działania interpretera PHP z elementami strony HTML-owej. Zawartość tablicy $b
umieszczamy tutaj w tabeli, której nagłówek jest zapisany jako fragment zwykłego
kodu HTML-owego, a zawartość (kolejne wiersze i kolumny) jest wygenerowana
dynamicznie.

5

Dostęp do danych „zewnętrznych”

Jako zmienne PHP dostępne są także wartości pochodzące spoza interpretera, takie
jak wartości wpisane w pola formularzy, wartości zapamiętane jako cookie oraz
wartości otrzymane w wyniku kliknięcia w pole formularzowe typu image. Wszystkie
wymienione dane są automatycznie umieszczane jako wartości zmiennych PHP.
W przypadku formularzy możliwe jest automatyczne wpisywanie danych do tablic,
co może być wygodne przy późniejszym przetwarzaniu danych. Oto przykład:

<form action="array.php3" method="post">
<table><tr><td>

Imię: <td> <input type="text" name="dane[imie]">

<td rowspan=3>

Języki: <br>

<select multiple name="jezyki[]">

<option value="pl">Polski
<option value="ru">Rosyjski
<option value="en">Angielski
<option value="fr">Francuski
<option value="ge">Niemiecki

</select>

<tr><td>

Nazwisko: <td> <input type="text" name="dane[nazwisko]">

<tr><td>

E-mail: <td> <input type="text" name="dane[email]">

background image

PHP – dynamiczne generowanie stron WWW

Magazyn Linux & Unix nr 10/99

1–5

<tr><td>
</table>

<input type="submit">

</form>

Powyższy fragment strony jest definicją prostego formularza. Są w nim zdefiniowane
trzy pola tekstowe i jedno pole wyboru, z możliwością zaznaczenia wielu wartości.
Wszystkie wartości wprowadzone lub wybrane przez użytkownika są zapamiętywane
w dwóch tabelach: dane – zapisanie poszczególnych pól do odpowiednich elementów
tablicy asocjacyjnej oraz jezyki – tablica, która jest wykorzystana jako lista
wartości. Przykładowy skrypt przetwarzający dane oraz wynik jego działania jest
przedstawiony poniżej (znającym perla znajomy wyda się zapewne ostatni wiersz
przykładu):

<h1>Dane</h1>
<?php
while (list($key, $val) = each($dane)) {

echo "$key => $val<br>";

}?>

<h1>Języki</h1>
<?php
print(join(", ", $jezyki));?>

6

Przykład – dostęp do bazy

danych

Na koniec przedstawiony będzie prosty przykład zastosowania PHP pokazujący jak
można wykorzystać to narzędzie do realizacji webowego interfejsu do bazy danych.
Przykład jest skrajnie uproszczony, ale pokazuje sposób realizacji dostępu do funkcji

background image

PHP – dynamiczne generowanie stron WWW

1–6

Magazyn Linux & Unix nr 10/99

bazodanowych z poziomu PHP. Nasz przykładowa baza danych to MySQL, w której
mamy jedną prostą tabelę zawierającą cztery pola (id, imie, nazwisko, email).
Pierwsze pole jest kluczem głównym tabeli, który jest automatycznie zwiększany
przy każdej operacji dodania wiersza do tabeli (specyfika MySQL).

Formularz wejściowy jest uproszczoną wersją formularza z poprzedniego przykładu:

<form action="save.php3" method="post">
<table>
<tr><td> Imię: <td> <input type="text" name="dane[imie]">
<tr><td> Nazwisko: <td> <input type="text" name="dane[nazwisko]">
<tr><td> E-mail: <td> <input type="text" name="dane[email]">
</table>
<input type="submit">
</form>

Strona, która jest wywołana po wciśnięciu przycisku Submit może być następująca:

<?php

list($i,$n,$e)=array($dane["imie"], $dane["nazwisko"], $dane["email"]);
$conn=mysql_pconnect("localhost","piotrek");
mysql_db_query("phptest", "insert dane (imie,nazwisko,email)

values (’$i’, ’$n’, ’$e’)", $conn);

if (mysql_affected_rows($conn)==1) {

print "Zapisane dane:<br>Imię: <b>$i</b><br>

Nazwisko: <b>$n</b><br>

E-mail: <b>$e</b><br>";

} else {

print "Były problemy...";

}

?>
<a~href="input.html">Powrót do formularza</a>

W pierwszym wierszu kodu PHP obsługującego formularz, kopiujemy zawartość
danych z formularza, do zmiennych $i, $n i $e – zabiegu tego dokonujemy wyłącznie
w celu uproszczenia zapisu dalszej części kodu. Kolejne dwie instrukcje powodują
połączenie się z serwerem MySQL oraz przekazanie mu zapytania w języku SQL,
powodującego zapisanie nowego wiersza w tabeli. Po sprawdzeniu, że wiersz został
zapisany, na stronie wyświetlone są zapisane dane, albo w razie problemów stosowny
komunikat.

Po wpisaniu kilku wierszy do bazy danych chcielibyśmy oczywiście przejrzeć jej
zawartość. W tym celu możemy wykorzystać kolejny prosty skrypt PHP:

<table width="400" border="1">
<tr><th>Lp.<th>Imię<th>Nazwisko<th>E-mail</tr>
<?php

$conn=mysql_pconnect("localhost","piotrek");
$res=mysql_db_query("phptest","select * from dane order by id");
while($data=mysql_fetch_row($res)) {

print "<tr><td>";

background image

PHP – dynamiczne generowanie stron WWW

Magazyn Linux & Unix nr 10/99

1–7

print join ("<td>", array($data[0],$data[1],$data[2],

"<a~href=’mailto:$data[3]’>$data[3]</a>"));

}

?>
</table>

W tym skrypcie możemy zobaczyć jeden ze sposobów pobierania danych z bazy
danych w PHP. Tutaj kolejne wiersze są wczytywane do tablicy ($data). Podobnie jak
w jednym z poprzednich przykładów dane są prezentowane w tablicy HTML-owej.

Dostęp do innych baz danych z PHP jest bardzo podobny. Dla przykładu poniżej
jest pokazany skrypt pokazujący zawartość tej samej prostej tabeli zapamiętanej
w systemie PostgreSQL.

<table width="400" border="1">
<tr><th>Lp.<th>Imię<th>Nazwisko<th>E-mail</tr>
<?php

$conn=pg_pConnect("", "", "", "", "phptest");

$res=pg_Exec($conn,"select * from dane order by id");
while($i<pg_NumRows($res)) {

$data=pg_fetch_row($res,$i++);
print "<tr><td>";
print join ("<td>", array($data[0],$data[1],$data[2],

"<a~href=’mailto:$data[3]’>$data[3]</a>"));

}
?>
</table>

Różnice są jak widać niemal kosmetyczne. Jak widać nie da się jednak niestety
łatwo zrealizować uniwersalnych skryptów mogących służyć do komunikacji
z różnymi bazami danych, bez konieczności pisania oddzielnego kodu dla każdego
systemu baz danych. W takim przypadku można by spróbować wykorzystać
obiektowe możliwości języka, albo zmienić narzędzie i zrealizować interfejs w perlu
z wykorzystaniem pakietu DBI, ale to są już tematy na zupełnie inne artykuły.


Wyszukiwarka

Podobne podstrony:
php, dynamiczne generowanie stron www
php i mysql tworzenie stron www vademecum profesjonalisty [helion] CONZDUWNFQFYUVVHCKLSSSQE7VYZR7HO
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty
%5bpl+book%5d+fr+przechowywanie+i+wyszukiwanie+danych +z+ksi%b9%bfki+ php+i+mysql +tworzenie+stron+w
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie czwarte phmsv4
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty phms2v
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie trzecie
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty
rozdział tworzenie internetowej?zy?nych z php i mysql tworzenie stron www vademecum profesjonalisty
PHP i MySQL Tworzenie stron WWW VP Wyd3
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty phms2v
PHP i MySQL Tworzenie stron WWW Vademecum profesjonalisty Wydanie trzecie 2
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty phms2v
PHP i MySQL Tworzenie stron WWW Wydanie drugie Vademecum profesjonalisty (r08)
PHP i MySQL Tworzenie stron WWW VP Wyd3

więcej podobnych podstron