Zmienne
Najpotrzebniejszą rzeczą w programowaniu jest zmienna. Zmienna jest to pamięć przydzielana przez system do przechowywania jakiejś wartości. Wartość ta jest przechowywana w pamięci ram aż do zakończenia działania programu lub zrestartowania komputera.
W PHP zmienne deklarujemy dynamicznie, tzn. nie musimy przed każdym programem/skryptem w którym występuje zmienna deklarować jej nazwy i typu wartości. Dzięki temu bardzo łatwo zmienia się typ zmiennej. Można też tworzyć zmienne o zmiennej nazwie, czyli o nazwie równej wartości innej zmiennej, co może się czasami przydać. Wadą takiego rozwiązania jest mała szybkość przetwarzania. Oto przykład deklaracji zmiennych:
<?PHP
$i = 0;
$lan = "lancuch";
$tab[0] = 3;
?> |
Pewnie sam zauważyłeś, że ZAWSZE przed nazwą zmiennej występuję znak dolara - "$". Nazwy zmiennych mogą być kombinacją znaków, cyfr i znaków podkreślenia nie przekraczającą 32 znaków. Może zaczynać się od znaku podkreślenia lub znaku, nigdy (!) liczby. Tak więc, gdy tworzymy zmienną o nazwie równej wartości innej zmiennej, to wartość tej drugiej zmiennej musi być typu łańcuchowego i nie może zaczynać się od cyfry. Na przykład:
<?PHP
$n = "zmienna";
$$n = 0;
// dobrze
$j = "4zm";
$$j = 5;
// źle
?> |
Do obsługi zmiennych służą następujące funkcje:
string gettype($zmienna)
Zwraca typ danej zmiennej. Możliwe wartości to: integer, double, string, array, object lub unknown type.
bool is_int($zmienna)
Sprawdza czy zmienna jest typu integer. Zwraca true jeżeli jest, w innym przypadku false.
bool is_integer($zmienna)
Działa tak samo jak funkcja is_int().
bool is_long($zmienna)
Działa tak samo jak funkcja is_int().
bool is_double($zmienna).
Sprawdza, czy zmienna jest liczbą zmiennoprzecinkową. Zwraca true jeżeli jest, w innym przypadku false.
bool is_float($zmienna)
Działa tak samo jak funkcja is_double().
bool is_real($zmienna)
Działa tak samo jak funkcja is_double().
bool is_string($zmienna)
Sprawdza, czy zmienna jest łańcuchem znaków. Zwraca true jeżeli jest, w innym przypadku false.
bool is_bool($zmienna)
Sprawdza, czy zmienna jest zmienną logiczną. Zwraca true jeżeli jest, w innym przypadku false.
bool is_array($zmienna)
Sprawdza, czy zmienna jest tablicą. Zwraca true jeżeli jest, w innym przypadku false.
bool is_object($zmienna)
Sprawdza, czy zmienna jest obiektem. Zwraca true jeżeli jest, w innym przypadku false.
bool empty($zmienna)
Sprawdza, czy zmienna jest zainicjowana i czy ma wartość różną od zera. Jeśli tak to zwraca wartość false, w innym wypadku true.
bool isset($zmienna)
Sprawdza, czy zmienna istnieje. Jeżeli tak zwraca wartość true, w innym wypadku false.
unset($zmienna)
Usuwa zmienną z pamięci.
Czas zająć się poszczególnymi rodzajami zmiennych. Oto ich lista:
- liczbowe
- łańcuchowe
- logiczne
- tablicowe
- zewnętrzne
- środowiskowe
Zmienne liczbowe
W PHP rozróżniamy następujące rodzaje zmiennych liczbowych:
- całkowite (ang. integer)
- rzeczywiste (ang. real)
Przykłady deklaracji zmiennych:
<?PHP
$z1 = -10; // z1 jest liczbą całkowitą
$z2 = 1.10 // z2 jest liczbą rzeczywistą
?>
Wszystkie te typy łatwo się konweruje do innych typów. Służa do tego następujące sformułowania, które należy wpisać przed wartością w przypisywaniu wartości zmiennej:
(integer) - zmienna jest liczbą całkowitą
(real) - zmienna jest liczbą rzeczywistą
(string) - zmienna jest łańcuchem
(array) - zmienna jest tablicą
(object) - zmienna jest obiektem
Oto przykład użycia ich użycia:
<?PHP
$z = (integer) 1.1;
echo $z; ?>
Oczywiście zmienne liczbowe możemy do siebie dodawać, odejmować, mnożyć, dzielić itd. Oto tabela operacji na liczbach:
+ |
dodawanie dwóch liczb |
- |
odejmowanie dwóch liczb |
* |
mnożenie dwóch liczb |
/ |
dzielenie dwóch liczb |
% |
reszta z dzielenia |
+= |
do zmiennej dodaj liczbę |
-= |
od zmiennej odejmij liczbę |
*= |
pomnóż zmienną przez liczbę |
/= |
podziel zmienną przez liczbę |
%= |
reszta z dzielenia zmiennej przez liczbę |
Ostatnie pięć można zapisać w następujący sposób:
$a += $b <=> $a = $a + $b
$a -= $b <=> $a = $a - $b
$a *= $b <=> $a = $a * $b
$a /= $b <=> $a = $a / $b
$a %= $b <=> $a = $a % $b
Oto przykłady użycia operacji na liczbach:
<?PHP
$a = 190;
$b = 100;
$c = $a + $b;
$d = $a - $b;
$e = $a * $b;
$f = $a / $b;
$g = $a % $b;
echo "$a = $a<br>
$b = $b<br>
$c = $a + $b = $c<br>
$d = $a - $b = $d<br>
$e = $a * $b = $e<br>
$f = $a / $b = $f<br>
$g = $a % $b = $g<br>";
$c += $d;
$d -= $e;
$e *= $f;
$f /= $g;
$g %= $c;
echo "$c += $d = $c<br>
$d -= $e = $d<br>
$e *= $f = $e<br>
$f /= $g = $f<br>
$g %= $c = $g<br>";
?>
Do obsługi zmiennych tego typu służą następujące funkcje:
double doubleval($zmienna)
Zamienia typ zmiennej na double.
int intval($zmienna)
Zamienia typ zmiennej na integer.
Zmienne łańcuchowe
Do przechowywania napisów służą zmienne łańcuchowe. Można je zadeklarować w następujący sposób:
$lan1 = "to jest łańcuch pierwszy";
$lan2 = 'a to jest łańcuch drugi';
Obie te deklaracje są poprawne, ponieważ łańcuchy w PHP możemy zapisywać zarówno w cudzysłowach jak i w apostrofach. Do poszczególnych znaków w łańcuchu mamy dostęp poprzez ich indeks, tzn. przez numer literki liczony od 0. Np. w pierwszym łańcuchu literka "o" ma indeks 1, ponieważ jest druga w łańcuchu. Dostęp taki jest wywołany tym, że typ string jest zadeklarowany w interpreterze jako tablica znaków, a tablice w PHP zaczynają się od indeksu 0.
W PHP możliwe są tylko dwie operacje na stringach: przypisanie i dodawanie. Przypisanie poznałeś już w przykładzie u góry, a oto przykład dodawania:
$lan1 = $lan.$lan2;
$lan1 .= $lan2;
Powyższe wyrażenia są sobie równe, ponieważ tak jak w przypadku zwykłego dodawania, tak i tutaj podczas dodawania do jednego łańcucha do drugiego można użyć $l1 .= $l2, zamiast $l1 = $l1.$l2. Użycie kropki przy dodawaniu stringów zamiast + jest spowodowane potrzebą łatwej konwersji między różnymi typami, w tym między typem integer i string. Dzięki temu pisząc:
$wyn = 10+"2 butelki";
echo $wyn;
Do obsługi łańcuchów na pewno przydadzą ci się poniższe funkcje:
int strlen($lan) |
zwraca długość łańcucha (indeks ostatniej litery jest równy strlen($lan)-1) |
string substr($lan,$p,$k) |
zwraca kawałek łańcucha, odciętego od znaku o indeksie równym $p; jeżeli zmienna $k nie ma wartości, to do końca łańcucha, jeżeli ma wartość dodatnią to aż do litery o $k większym indeksie od początku, jeżeli ma wartość ujemną to oznacza ilość liter od końca łańcucha |
int strpos($lan1,$lan2) |
wyszukuje w pierwszym łańcuchu pierwszego wystąpienia drugiego łańcucha i zwraca jego indeks, a jeżeli to się nie uda zwraca wartość false |
Jeżeli chcesz znać więcej funkcji obsługujących łańcuchy to wejdź na stronę PHP.net do działu dokumentacja.
W PHP ważne są też znaki specjalne. Oto ich lista:
n |
znak zakończenia linii |
r |
przesunięcie karetki na początek lini (nr oznacza przesunięcie karetki na początek nowej linii) |
$ |
wstawia znak dolara "$" |
|
wstawia znak slasha "" |
" |
wstawia cudzysłów " |
t |
wstawia znak tabulacji |
Nową linię można stworzyć także w podany poniżej sposób:
$lan1 = "to jest pierwsza linia
a to druga";
Zmienne logiczne
Zmienne logiczne w PHP mogą mieć tylko dwie wartości: true albo false. True jest zamienne z liczbami całkowitymi różnymi od zera, a false z zerem. Oto przykład deklaracji zmiennej logicznej:
$log = true;
$zmienna = false;
Zmienne logiczne powstały dopiero w wersji 4.0 języka PHP, dlatego na niektórych serwerach podana deklaracja może nie działać.
Zmienne takie wykorzystywane są coraz rzadziej aczkolwiek są one potrzebne.
Zmienne tablicowe
Chyba najbardziej przydatnym rodzajem zmiennych są tablice. Nie będę tutaj wyjaśniał co to takiego tablica, bo przyjąłem za podstawę studiowania tego kursu chociażby małą wiedzę programistyczną. W każdym razie w PHP można używać dwóch rodzajów zmiennych tablicowych:
- tablice indeksowane liczbowo
- tablice indeksowane asocjacyjnie (łańcuchami)
Pierwszą z tablic deklaruje się podając wartość któregoś z jej elementów, np.:
$tab[1] = 14;
$tab_2[4] = 15;
Jednak powyżej zadeklarowane tablice nie są poprawne. Prawidłowe tablice powinny mieć zadeklarowaną wartość każdego elementu od 0 do końca tablicy. Tak więc poprawnie stworzona tablica wygląda tak:
$tab[0] = 3;
$tab[1] = 51;
$tab[2] = 543;
$tab[3] = 654;
Istnieje funkcja która tworzy tablicę z podanych po przecinkach poszczególnych wartości. Nazywa się array(). Oto przykład jej użycia:
$tab = array(3,51,543,654);
Drugi typ tablic zamiast liczbowego indeksu ma łańcuch. Można dzięki temu łatwo zapamiętać indeks do danego elementu. Tablice asocjacyjne przydają się do programowania bazodanowego. Oto przykład użycia takiej tablicy:
$tab['indeks słowny'] = 3;
$tab['drugi indeks'] = 51;
$tab['trzeci indeks'] = 543;
$tab['czwarty indeks'] = 654
Tak samo jak w przypadku indeksów liczbowych tak i w asocjacyjnych można użyć funkcji array(). Będzie to jednak wyglądało trochę inaczej:
$tab = array('indeks słowny'=>3,'drugi indeks'=>51);
Jak narazie jednak radzę skupić się na programowaniu z tablicami liczbowymi.
Przedstawię teraz kilka przydatnych funkcji używanych przy programowaniu na tablicach liczbowych. Pierwsza to list(), którą używa się do zapisywania w zmiennych zapisanych po przecinku poszczególnych elementów tablicy. Oto przykład jej użycia:
list($el1,$el2) = $tab;
Jest to jedyna funkcja, którą zapisuje się przed znakiem "=". Drugą funkcją operującą na tablicach jest count(). Zwraca ona ilość elementów tablicy. Należy jednak zauważyć, że ostatni element tablicy będzie miał indeks count($tablica)-1, a nie count($tablica), ponieważ tablicę w PHP zaczynają się od 0. Oto przykład użycia tej funkcji:
$tab[0] = "element 1";
$tab[1] = "element 2";
$tab[2] = "element 3";
echo count($tab);
Powyższy skrypt wyświetli w przeglądarce 3. Używanie funkcji count() najczęściej potrzebne jest przy pętlach, które operują na wszystkich elementach tablicy, ale o pętlach będzie w dalszej części kursu.
Do dzielenia łańcucha na tablicę według określonych znaków (np. spacji) służy funkcja explode(). Pierwszym argumentem funkcji jest separator, który oddziela poszczególne elementy tablicy, a drugim sam łańcuch. Do elementów zwróconej tablicy nie należą separatory! Oto przykład użycia tej funkcji:
$lan = "To#jest#tekst#który#zostanie#podzielony#według#separatorów";
$tab = explode("#",$lan);
echo $tab[0]." ".$tab[4]." ".$tab[7];
Funkcją odwrotną do powyższej, tj. zamieniającej tablicę na łańcuch oddzielając poszczególne elementy separatorami jest implode(). Oto przykład użycia tej funkcji:
$lan = "To#jest#tekst#który#zostanie#podzielony#według#separatorów";
$tab = explode("#",$lan);
$lan = implode(" ",$tab);
echo $lan;
Zmienne zewnętrzne
Zmienne zewnętrzne to takie, które deklarowane są na innej stronie. Mogą to być zmienne przesyłane przez formularz, ciasteczka (cookie) albo zmienne sesyjne. W tym rozdziale zajmę się zmiennymi typu POST, GET i Cookie.
POST i GET to metody przesyłania zmiennych z formularza do skryptu. Na pewno widziałeś już nie raz użycie formularzy. Aby dowiedzieć się, jak się je tworzy wejdź do kursu HTML'a. Każdy element formularza ma atrybut name. Służy on do przechowywania nazwy zmiennej, której wartość będzie ustalana przez formularz. Pierwsza metoda przesyłania zmiennych (POST) służy do przekazywania dużych wartości lub wielu zmiennych nie widocznych w przeglądarce. Jest to metoda bezpieczniejsza, dlatego często używana przy skryptach autoryzacji. Druga metoda pozwala na przekazywanie zmiennych i ich wartości w pasku adresu, przez co mają ograniczoną wielkość i są widoczne dla użytkownika. Maksymalna ilość znaków przekazywanych tą metodą (razem z nazwami zmiennych!) to 1024. Tej metody można też użyć bez udziału formularzy. Można dzięki temu tworzyć linki do skryptów, przekazując im przez to wartości zmiennych. Oto przykład użycia metody GET:
<a href="skrypt.php?zmienna=3&zmienna2=to+jest+druga+zmienna">Strona</a>
W powyższym przykładzie do skryptu prześlemy dwie zmienne: jedną liczbową i jedną łańcuchową. Do oddzielenia tych zmiennych służy &, a zamiast spacji należy wpisywać +. Metodą GET i POST nie można przesyłać obiektów! Żeby przesłać tablicę należy wpisywać jako nazwę zmiennej nazwa[]. Oto przykład skryptu używającego formularzy i metody POST:
<?PHP
if (!isset($krok)) {
echo "<form method="post" action="2_5_1.php">
<input type="hidden" name="krok" value="1">
Imię: <input type="text" name="imie"><br>
Nazwisko: <input type="text" name="nazwisko"><br>
Wiek: <input type="text" name="wiek"><br>
Opis:<br>
<textarea cols="40" rows="6" name="opis"></textarea><br>
<input type="submit" value=" OK "><input type="reset" value=" Czystka ">
</form>";
} elseif($krok==1) {
echo "Twoje imię: $imie<br>
Twoje nazwisko: $nazwisko<br>
Twój wiek: $wiek<br>
Twój opis:<br> $opis";
}
?>
W pierwszej linii tego skryptu sprawdzamy czy istnieje zmienna $krok, która decyduje o tym czy ma być wyświetlony formularz, albo czy mają być przetworzone zmienne. Jeżeli $krok nie istnieje to wyświetla sie formularz, którego nie bedę opisywał. W innym wypadku wyświetlają się dane które zapisałeś w formularzu. O instrukcjach if() i elseif() w dalszej części kursu, w rozdziale o instrukcjach. W podany powyżej sposób, tylko z większą liczbą zapytań działają wszystkie formularze na tej stronie.
A teraz przykład użycia metody GET:
<?PHP
if (!isset($id)) {
echo "<a href="2_5_2.php?id=1">Link do strony wyświetlającej 1</a><br>
<a href="2_5_2.php?id=2">Link do strony wyświetlającej 2</a><br>
<a href="2_5_2.php?id=3">Link do strony wyświetlającej 3</a>";
} else echo $id;
?>
W pierwszej linii skryptu sprawdzamy czy istnieje zmienna $id, jeżeli tak to wyświetla się lista linków do skryptu o innych wartościach $id, w innym wypadku wyświetla się wartość zmiennej.
Kolejną metodą przesyłania zmiennych do skryptu jest Cookie. Jest to zwyczajne ciasteczko, takie samo jakie można utworzyć w JavaScripcie. Używając ciastek należy pamiętać o tym, aby je utworzyć przed wyświetleniem jakiegokolwiek znaku! W innym wypadku wyświetli się błąd interpretera. Do tworzenia ciastek służy funkcja setcookie(). Oto jej parametry:
nazwa |
nazwa ciastka |
wartość |
wartość ciastka |
czas usunięcia |
znacznik czasu kiedy ciastko ma być usunięte |
ścieżka |
ścieżka na której ma być używane ciastko |
domena |
domena na której ma być używane ciastko |
bezpieczne |
czy połączenie ma być bezpieczne (0 - nie, 1 - tak) |
Oto przykład użycia ciasteczek:
setcookie("ciastko","3",time()+3600,"","",1); /*tworzymy ciastko o wartości 3, które będzie istnieć godzinę i będzie wykorzystywało bezpieczne połączenie*/
setcookie("tab[indeks]",$value); /*tworzymy ciastko typu tablicowego asocjacyjnego*/
setcookie("ciastko"); /*kasujemy ciastko*/
Cookie jest traktowane jak każda inna zmienna, czyli możemy używać nań funkcje isset(). Używanie ciastek jest przydatne przy tworzeniu profilu użytkownika na stronie. W ten sposób możemy ustalić np. kolor tła, tekstu itd. na stronie, według upodobań użytkownika.
Zmienne środowiskowe
Zmienne środowiskowe to takie zmienne, których wartość jest ustalana przez serwer wykonujący skrypt. Przechowują one takie informacje jak adres ip klienta, nazwę przeglądarki i systemu itd. Wszystkie zmienne środowiskowe dostępne są poprzez użycie funkcji getenv(). Oto spis nazw zmiennych:
SERVER_SOFTWARE |
nazwa oprogramowania serwera WWW |
SERVER_NAME |
nazwa hosta serwera - domena |
GATEWAY_INTERFACE |
wersja specyfikacji CGI na serwerze |
SERVER_PROTOCOL |
nazwa protokołu i jego wersja, używanego przy realizacji żądania |
SERVER_PORT |
numer portu, na którym zostało odebrane żądanie |
REQUEST_METHOD |
metoda HTTP, przy której użyciu zostało wywołane żądanie |
PATH_INFO |
dodatkowe informacje na temat ścieżki |
PATH_TRANSLATED |
przekształcona wersja zmiennej PATH_INFO |
SCRIPT_NAME |
wirtualna ścieżka dostępu do uruchamianego skryptu |
QUERY_STRING |
informacje z adresu URL po znaku ? |
REMOTE_HOST |
nazwa hosta klienta, który zgłosił żądanie |
REMOTE_ADDR |
adres ip klienta, który zgłosił żądanie |
AUTH_TYPE |
metoda autoryzacji użytej do sprawdzenia tożsamości użytkownika |
REMOTE_USER |
nazwa użytkownika o potwierdzonej tożsamości |
REMOTE_IDENT |
nazwa użytkownika zgłaszającego żądanie, w postaci przekazanej przez przeglądarkę |
CONTENT_TYPE |
typ przesyłanych danych |
CONTENT_LENGTH |
długość dołączonych informacji przesłanych przez klienta |
HTTP_ACCEPT |
typ MIME akceptowany przez klienta |
HTTP_USER_AGENT |
nazwa przeglądarki |
HTTP_REFERER |
adres strony zawierającej odwołanie do aktualnie zadanej strony |
$PHP_AUTH_USER |
zawiera nazwę użytkownika używaną podczas autoryzacji na serwerze Apache |
$PHP_AUTH_PW |
zawiera hasło użytkownika używane podczas autoryzacji na serwerze Apache |
$PHP_AUTH_TYPE |
metoda autoryzacji używanej na serwerze Apache |
$PHP_SELF |
ścieżka dostępu do aktualnie wykonywanego skryptu |
Powyższe zmienne przydają się np. przy tworzeniu statystyk odwiedzin strony. Przykład skryptu wyświetlającego adres IP klienta:
echo getenv("REMOTE_ADDR");
Stałe
W PHP bardzo rzadko używamy stałych, ale zawsze się jest lepiej nauczyć więcej niż mniej, tak więc: do roboty. Do definiowania stałych służy funkcja define(). Oto przykład jej użycia:
define("stala","wartość");
Mam nadzieje, że zrozumiałeś/aś jakie są dwa parametry tej funkcji. Jeżeli nie to objaśniam: pierwszy to nazwa stałej, a druga to jej wartość. I teraz rzecz najważniejsza: nazwę stałej w skrypcie podajemy bez (!) znaku dolara ($). Oto przykład użycia stałej na stronie:
<?PHP
define("stala",13);
echo stala;
?> |
Stałe najczęściej używane są, gdy mamy w kilku miejscach tą samą wartość, którą w trakcie tworzenia programu chcemy zmieniać. Właściwie stałych nie będziesz w ogóle używał programując, bo można je zastąpić zmiennymi.
Instrukcje
W programowaniu istnieją dwa typy instrukcji: instrukcje warunkowe i iteracyjne (inaczej pętle). Głównie na nich opiera się programowanie większych aplikacji.
Instrukcje warunkowe
Instrukcje warunkowe to takie, które decydują o tym, czy dana część skryptu ma być wykonana, czy nie. Przypuśćmy, że na przykład aby obliczyć podatek VAT na jakiś towar musisz znak jego rodzaj i znając go możesz ocenić czy VAT jest równy 0%, 7% czy też 22%. Musisz się wtedy zapytać programu jaki jest tym i przyporządkować mu daną stawkę VAT. A teraz już o samych instrukcjach warunkowych.
Pierwszą instrukcją warunkową jest operator trójskładnikowy. Służy on do konstruowania prostych warunków, składających się z jednej operacji. Przykład użycia ten instrukcji:
$liczba = 1 > 3 ? 1 : 3;
Powyższy przykład nada zmiennej $liczba wartość 3.
Drugą instrukcją warunkową i chyba najczęściej używaną jest if(). Jeżeli zapytanie logiczne znajdujące się w nawiasie jest prawdziwe (wartość równa jest TRUE) to wykonywana jest jedna instrukcja lub kilka instrukcji umieszczonych w nawiasach klamrowych ({ }) oznaczających początek i koniec operacji związanych z zapytaniem. W konstruowaniu zapytań przydatne są następujące znaki:
== |
sprawdza czy dwie liczby, łańcuchy itd. są sobie równe |
!= |
sprawdza czy dwie liczby, łańcuchy itd. są od siebie różne |
> |
sprawdza czy liczba [łańcuch itd.] po lewej stronie jest większa od prawej |
< |
sprawdza czy liczba [łańcuch itd.] po lewej stronie jest mniejsza od prawej |
>= |
sprawdza czy liczba [łańcuch itd.] po lewej stronie jest większa bądź równa prawej |
<= |
sprawdza czy liczba [łańcuch itd.] po lewej stronie jest mniejsza bądź równa prawej |
! |
przeczenie (czy wyrażanie nie spełnia zapytania) |
&& |
"i" logiczne (przy większej liczbie zapytań) |
|| |
"lub" logiczne (przy większej liczbie zapytań) |
Oto przykład prostego zapytania:
$tekst = "tekst";
$liczba = 1;
$liczba2 = 2;
if ($tekst=="tekst"&&($liczba==2||$liczba2==2)) echo "Tak!"; |
Powyższy skrypt wyświetli "Tak!".
Kolejną instrukcją warunkową jest else, używana w zapytaniach razem z if (). Załóżmy, że zapytanie zwraca wartość FALSE. Wtedy nasz skrypt powinien np. wyświetlić napis "Nie!".
$tekst = "tekst";
$liczba = 1;
$liczba2 = 2;
if ($tekst=="tekst"&&($liczba==2||$liczba2==2)) { echo "Tak!"; }
else echo "Nie!"; |
Jak pewnie zauważyłeś używając else trzeba używać nawiasów klamrowych nawet przy jednej operacji. Oczywiście, aby skrypt wykonał więcej operacji po instrukcji else należy użyć nawiasów klamrowych.
Ostatnią instrukcją z konstruujących zapytania if() jest elseif(). Służy ona do sprawdzenia, czy gdy poprzednie zapytanie zwróciło FALSE, to czy to zapisane w nawiasach zwraca TRUE. Oto przykład:
$l1 = 1;
if ($l1<0) { echo "$l1 jest mniejsze od zera!"; }
elseif ($l1>0) { echo "$l1 jest większe od zera!"; }
else echo "$l1 jest równe zeru!"; |
Oczywiście konstruując zapytania w elseif() można używać takich samych znaków co przy if ().
Kolejnym rodzajem instrukcji warunkowych jest konstrukcja switch (). Oto jej budowa:
switch (wyrażenie) {
case wartość: instrukcja1;
instrukcja2;
instrukcjan;
break;
case inna_wartość: instrukcja1;
instrukcja2;
instrukcjan;
break;
default: instrukcja_domyślna;
}
Switch sprawdza czy wyrażenie jest równe podanym po instrukcji case wartościom. Jeżeli jest, to wykonuje podane operacje aż do instrukcji break. Jeżeli nie to wykonuje default. Istnienie intrukcji default jest opcjonalne. Taka konstrukcja jest potrzebna gdy sprawdzamy czy jakieś wyrażenie jest równe któremuś z podanych wartości, np. przy sprawdzaniu stawki podatku VAT.
Instrukcje iteracyjne
Są to inaczej po prostu pętle i służą do wielokrotnego powtarzania operacji. Pierwszym rodzajem pętli jest for (). Wewnątrz nawiasów posiada 3 argumenty: początkową wartość, warunek który musi spełniać i instrukcje która zawsze się powtarza, najczęściej inkrementacje (dodawanie do zmiennej 1) bądź też dekrementację (odejmowanie od zmiennej 1). Wszytkie te argumenty oddziela się średnikami! Oto przykład pętli:
for ($i=1;$i<=40;$i++) echo "To jest przykład użycia pętli for()";
Oczywiście używając nawiasów klamrowych w pętli można wykonać więcej niż jedną opercję.
Kolejnym rodzajem instrukcji iteracyjnej jest while (). Jest to pętla wykonywana do czasu, aż wyrażenie w nawiasie nie będzie równe TRUE. Ważne jest tutaj to, że pętla ta sprawdza to przed wykonaniem pętli, co może spowodować, że instrukcje zawarte w pętli nigdy nie zostaną wykonane! Oto przykład wykorzystania tej pętli:
$i = false;
$k = 0;
while (!$i) {
++$k;
echo "Oto pętla while()";
if ($k==3) $i = true;
} |
Ostatnią z pętli jest do while (). Różni się ona tym od while (), że sprawdza wyrażenie w nawiasie dopiero po wykonaniu operacji, przez co zostanie wykonana przynajmniej raz. Oto przykład użycia tej pętli:
$i = false;
$k = 0;
do {
++$k;
echo "Oto pętla do while()";
if ($k==3) $i = true;
} while (!$i); |
Należy zwrócić w tej pętli uwagę, że po while () musi (!) być średnik.
Istnieją jeszcze dwie instrukcje operujące na pętlach. Są to, używana w switch (), instrukcja break i, nowa, continue. Pierwsza służy do przerwania pętli, a druga do pominięcia następnych operacji i przejścia od razu do następnej iteracji pętli.
No i na koniec tego rozdziału jeszcze dwie instrukcje sterujące skryptem. Są to die() i exit, które kończą działania skryptu. Często używa ich się, gdy skrypt może pokazywać błędy, a nie chce się wyświetlać brzydkich komunikatów parsera, tylko własnych. Instrukcje te używane są między innymi w klasach obsługujących bazy danych.
Funkcje
Funkcje są to nazwane fragmenty kodu używane do tworzenia kolejnych fragmentów. Funkcje w PHP mogą zwracać jedną wartość lub żadnej. Jeżeli nie zwraca wartości to można ją nazwać procedurą. Oto najprostsza deklaracja funkcji w PHP i jej wywołanie:
function prosta_funkcja() {
echo "Oto prosta funkcja!";
}
prosta_funkcja(); |
Naogół funkcje stosuje się, jeżeli używa się pewnego fragmentu kodu kilka razy w skrypcie. Stosowanie ich polepsza łatwość rozumienia kodu i jego widoczność.
Pierwszym pojęciem potrzebnym przy wykorzystywaniu funkcji jest parametr, inaczej nazywany też argumentem. Jest to wartość przekazywana do funkcji. Parametrów w funkcji może być bardzo dużo, a wszystkie muszą być oddzielone od siebie przecinkami. Oto przykład wykorzystania parametrów:
function wyswietl($co, $komu) {
switch ($komu) {
case "mi": echo "$co jest adresowane do użytkownika!";
break;
case "mu": echo "$co jest adresowane do kogoś innego";
break;
}
}
wyswietl("Uczysz się PHP","mi"); |
W PHP możliwe jest ustalanie domyślnych wartości parametrów. Używa się tego w sposób następujący (w przykładzie korzystam z nagłówka wyżej napisanej funkcji):
function wyswietl($co = "Tekst",$komu = "mu")
Do zwracania wartości wyliczonych w funkcji służy instrukcja return. Zwracana może być zmienna dowolnego typu. Oto przykład użycia instrukcji return:
function dodaj($co,$doczego) {
$suma = $co+$doczego;
return $suma;
}
echo dodaj(3,4); |
Można używać także innego sposobu przekazywania wyniku działania funkcji. Służą do tego zmienne referencyjne. Są to parametry, które zawsze (!) muszą być zmiennymi. Aby używać referencji trzeba przed każdą nazwą zmiennej referencyjnej (przed $) napisać znak ampersand (&). Oto przykład użycia referencji:
function referencja(&$i,&$j) {
$i=3;
$j=5;
}
$l = 2;
$k = 3;
referencja($l,$k);
echo "$l jest równe: $l
$k jest równe: $k"; |
Używając funkcji należy zwrócić szczególną uwagę na zasięg zmiennych. Istnieje podział zmiennych ze względu właśnie na ich zasięg na:
- lokalne
- globalne
- superglobalne (używane w sesjach)
Zmienne lokalne to te utworzone w funkcjach. Natomiast jeżeli chcemy udostępnić zmienną funkcji nie używając referencji musimy ustalić, że jest ona globalną. Oto przykład używania zmiennych globalnych:
function rob($co) {
global $i;
echo "$i: $co
";
++$i;
}
$i=0;
while ($i<10) rob("PHP"); |
Oczywiście zmiennych globalnych może być bardzo dużo, to zależy tylko i wyłącznie od programisty. Jednak programując w PHP staraj się ograniczać ich ilość do minimum, aby tworzyć bardziej ogólne funkcje, które mogą się przydać nie tylko tobie, ale także innym programistom.
Ostatnim tematem dotyczącym funkcji jest rekurencja. Jest to wywołanie tej samej funkcji w niej samej. Rekurencja potrzebuje jednak ogromnych ilości pamięci, dlatego staraj się ograniczać jej używanie. Tworząc rekurencję musisz uważać, aby nie zapętliła się ona w nieskończoność. Oto przykład rekurencji:
function rekurencja($i = 10) {
if ($i!=1) {
return $i*rekurencja($i-1);
}
else return $i;
}
echo rekurencja(); |
Powyższy skrypt oblicza 10!. Można go zamienić pętlą, która w mniejszym stopniu zapcha pamięć serwera:
function silnia($i = 10) {
$s = 1;
for ($i=1;$i<=10;$i++)
$s *= $i;
return $s;
}
echo silnia(); |
Mówiąc o funkcjach należy też wspomnieć o instrukcjach include() i require(). Obydwie wstawiają kod z pliku o nazwie podanej w parametrze (jeżeli jest to kod PHP to musi on być zapisany w pliku między <?PHP i ?>), ale include() jest zależna on instrukcji warunkowych i pętli, natomiast require zawsze wstawia kod tylko raz (ani mniej, ani więcej!). Tworząc większe aplikacje bardzo często będziesz używał tych instrukcji, gdyż wiele skryptów potrzebuje tych samych funkcji operujących na danych itd.
Sesje
Sesje potrzebne są do przekazywania zmiennych z jednej strony do drugiej, ale tylko dla jednego użytkownika. Przykładowo, jeżeli chcemy stworzyć skrypt autoryzacji (zawierający login i hasło), dzięki któremu na stronie będziemy mieli dostęp do większej ilości materiałów itd. to powinniśmy użyć zmiennych sesyjnych, które będą przesyłane do kolejnych stron. Zmienne sesyjne przechowywane są po stronie serwera, więc jakiekolwiek przejście do strony niesesyjnej (nie zawierającej odwołania do sesji bądź też nie rejestrujące żadnej zmiennej) kończyć się będzie utratą informacji zawartych w zmiennych.
Podstawową funkcją do tworzenia sesji jest session_start(). Służy ona do otwarcia sesji, czyli udostępnieniu skryptowi wszystkich zmiennych zarejestrowanych w sesji. Do rejestracji zmiennych służy funkcja session_register(). Jej parametrami jest nazwa zmiennej ujęta w cudzysłowach. Niestety zarejestrowane na poprzedniej stronie zmienne sesyjne nie są od razu rejestrowane na aktualnej, co znaczy że w każdym skrypcie obsługującym sesje musimy rejestrować zmienne sesyjne.
Ostatnią funkcją potrzebną ci do używania sesji jest session_unregister(), która służy do usuwania zmiennych sesyjnych. Jej parametrem jest zmienna, którą ma usunąć. Więcej o funkcjach obsługi sesji znajdziesz w manualu PHP. A teraz przykład użycia sesji. Poniższy skrypt pokazuje, ile razy odwiedziłeś już tą stronę (oczywiście zlicza tylko odświerzenia strony!).
<?PHP
session_start();
if (!isset($il)) $il = 0;
session_register("il");
++$il;
echo $il;
?> |
Jako zmienną sesyjną rejestrować można zmienne dowolnego typu, tak więc oprócz liczb także łańcuchy, tablice i obiekty (o ile zdefiniowana jest klasa obsługująca obiekt).
A teraz jakiś bardziej przydatny skrypt - autoryzacja. Będzie to jeden plik ze skryptem obsługującym wszystkie potrzebne operacje. W naszym przykładzie będzie można dodać do licznika jeden, zmienić linijkę tekstu. Oto kod:
<?PHP
class usery {
var $login;
var $haslo;
var $licznik = 0;
var $napis = "To jest napis";
}
session_start();
if (!isset($krok)) {
session_unregister("user");
echo 'Oto skrypt autoryzacji. Potrzebne informacje:<br>
Login: user<br>
Hasło: haslo<br>
<form method="post" action="7_2.php">
<input type="hidden" name="krok" value="1">
Login: <input type="text" name="login"><br>
Hasło: <input type="password" name="haslo"><br>
<input type="submit" value=" OK ">
</form>';
} elseif($krok=="1") {
if (!isset($user)) {
$user = new usery();
$user->login = $login;
$user->haslo = $haslo;
}
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
echo '<a href="7_2.php?krok=2">Dodaj do licznika!</a><br>
Aktualny stan licznika: '.$user->licznik.'<br>
<a href="7_2.php?krok=3">Zobacz napis i go zmien!</a><br>
<a href="7_2.php?krok=4">Wyloguj się!</a><br>';
}
} elseif($krok=="2") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
++$user->licznik;
echo '<meta http-equiv="refresh" content="0; URL=7_2.php?krok=1">';
}
} elseif($krok=="3") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
echo $user->napis;
echo '<br><a href="7_2.php?krok=1">Powrót na główną stronę</a>';
echo '<p><form method="post" action="7_2.php">
<input type="hidden" name="krok" value="5">
<input type="text" name="napis"><br>
<input type="submit" value=" OK ">
</form>';
}
} elseif($krok=="4") {
session_unregister("user");
} elseif($krok=="5") {
session_register("user");
if ($user->login=="user"&&$user->haslo=="haslo") {
$user->napis=$napis;
echo '<meta http-equiv="refresh" content="0; URL=7_2.php?krok=1">';
}
}
?> |
To chyba wszystko na temat zmiennych sesyjnych. Więcej informacji na temat sesji znajdziesz w manualu PHP.
Operacje na plikach
W PHP, tak jak w każdym porządnym języku programowania, mamy dostęp do funkcji operujących na plikach. Mam nadzieję, że rozumiesz potrzebę używania przez skrypty plików. Jeżeli nie to podam przykład:
Potrzebna ci aplikacja, która będzie miała zmienną konfigurację, ustalaną przez użytkownika. Oczywiście, mógłbyś sobie olać konsumenta i zmusić go do samodzielnej zmiany danych w pliku (bo gdzieś informacje trzymać trzeba), ale to mijałoby się z ideą dynamicznego programowania stron. Dlatego sam musisz napisać skrypt zmieniający zawartość takiego pliku.
Podstawową funkcją służącą do obługi plików jest fopen(), która otwiera połączenie z plikiem. Zwraca ona FALSE, jeżeli nie można otworzyć pliku bądź liczbę całkowitą, jeżeli otwarcie się powiedzie. Oto schemat tej funkcji:
int fopen(String $nazwa_pliku, String $tryb [, int $uzyj_include_path]);
Pierwszym z argumentów jest nazwa pliku. Jeżeli na początku tej nazwy znajduje się łańcuch "http://", to otwierane jest połączenie HTTP, a funkcja zwraca odwołanie do samego ciała otrzymanej strony, tzn. bez dostępu do nagłówków. Oczywiście otrzymana strona dostępna jest tylko do odczytu.
Jeżeli na początku nazwy znajduje się łańcuch "ftp://" to wywoływane jest połączenie FTP. W tym trybie możliwe jest zapisywanie albo odczytywanie, jednak te czynności nie mogą być wykonywane razem, tj. żeby móc zapisać do pliku jakąś wartość trzeba otworzyć połączenie, a żeby potem coś z niego odczytać trzeba otworzyć kolejne połączenie.
Jeżeli nazwa pliku nie zawiera żadnego z powyższych początków to otwierany jest plik z lokalnego dysku. Ścieżka do pliku może być względna lub bezwzględna. Względna to taka, która zawiera adres pliku poczynając od danego katalogu, w którym znajduje się skrypt (np. "plik.txt"), natomiast bezwględna to taka, która zawiera adres pliku poczynając od katalogu głównego (np. Windowsowy - "c:katalogplik.txt" ['' bo to znak specjalny], lub UNIXowy - "/home/user/plik.txt").
Drugim argumentem funkcji jest tryb otwarcia pliku, czyli informacja o tym co mamy zamiar z tym plikiem robić. Oto rodzaje trybów:
r |
tryb odczytu, otwierany jest wcześniej utworzony plik |
r+ |
tryb odczytu z możliwością zapisu, otwierany jest wcześniej utworzony plik |
w |
tryb zapisu, otwierany jest nowy, pusty plik |
w+ |
tryb zapisu z możliwością odczytu, otwierany jest nowy, pusty plik |
a |
tryb zapisu, jeżeli plik nie istnieje to jest on tworzony, w przeciwnym wypadku otwiera plik, a wskaźnik odczytu ustawiony jest na jego końcu |
a+ |
tryb zapisu z możliwością odczytu, podobne właściwości co a |
Dodatkowo w systemie Windows możliwe jest dodanie po literze oznaczającej tryb znak 'b', który informuje interpreter, że dany plik jest binarny. UNIX pomija powyższe oznaczenie.
Ostatnim argumentem jest $uzyj_include_path. Jest on rzadko używany. Informuje interpreter, że pliku ma szukać w katalogach ustalonych wcześniej w pliku konfiguracyjnym. Ma wtedy wartość 1. W przeciwnym wypadku się go pomija.
Należy pamiętać, że w systemach UNIX i jemu pokrewnych istnieją ograniczenia dostępu, które należy zmienić odpowiednio tak, aby możliwy był zapis bądź odczyt, inaczej wywołanie pliku skończy się błędem.
Drugą funkcją zajmującą się plikami jest fclose(). Zamyka ona połączenie z plikiem. Argumentem tej funkcji jest wskaźnik do pliku, uzyskany z funkcji fopen().
Następna funkcja, fgetc(), umożliwia pobranie z pliku jednego znaku. Jeżeli natrafi na koniec pliku, zwraca wartość FALSE, w przeciwnym wypadku ten jeden znak. Argumentem tej funkcji jest wskaźnik do pliku.
fgets(), której argumentem jest wskaźnik do pliku oraz maksymalna długość linii, pozwala na pobranie całej linii z pliku. Zwraca wartość FALSE jeżeli natrafi na koniec pliku, w przeciwnym wypadku zwraca linię. Wykorzystanie tych dwóch funkcji powoduje przesunięcie się wewnętrznego wskaźnika karetki, w pierwszym wypadku o jeden znak, w drugim o długość całej linii (razem ze znakami n i r).
Kolejną funkcją zbierającą dane z pliku jest fread(). Jej argumentami są wskaźnik do pliku i ilość znaków. Pobiera ona z pliku daną ilość znaków, oczywiście poczynając od aktualnego miejsca karetki.
Funkcje zbierające już poznałeś, czas więc na zapisujące! Pierwszą funkcją zapisującą jest fwrite(). Jej argumentami są wskaźnik pliku oraz łańcuch znaków, które mają się znaleźć w pliku. Funkcja ta zapisuje dany łańcuch do pliku zaczynając od aktualnego położenia karetki.
Następną funkcją zapisującą jest fputs(). Posiada takie same argumenty jak fwrite(), a różni się tylko tym, że na końcu łańcucha dopisuje znak końca linii, dzięki czemu następny zapis zostanie wywołany w nowej linii.
W PHP istnieje także funkcja, która ustawia karetkę w odpowiednim miejscu. Jest nią fseek(), a jej argumentami są wskaźnik do pliku oraz liczba, oznaczająca, ile znaków od początku ma znajdować się karetka.
Funkcja feof() sprawdza czy karetka nie znajduje się na końcu pliku. Jeżeli tak zwraca wartość TRUE, w przeciwnym wypadku FALSE. Jej argumentem jest wskaźnik do pliku.
Kolejną funkcją obsługującą pliki jest file_exists(). Jej argumentem jest adres pliku. Sprawdza, czy plik o podanej nazwie istnieje. Jeżeli tak zwraca wartość TRUE, w innym wypadku FALSE. Warto zawsze przed wywołaniem funkcji fopen() sprawdzić czy dany plik instnieje.
A teraz na zakończenie rozdziału krótki przykład pokazujący jak cały odczytać plik:
<?PHP
if (file_exists("przyklad.txt")) {
$p = fopen("przyklad.txt","r");
echo 'Zawartość pliku:<br>';
while (!feof($p)) {
$linia = fgets($p,1000);
echo $linia."<br>";
}
} else echo 'Brak pliku!';
?> |
Istnieje alternatywne rozwiązanie problemu, który rozwiązywał powyższy przykład. Można to zrobić krócej za pomocą funkcji file(). Oto przykład:
<?PHP
if (file_exists("przyklad.txt")) {
echo 'Zawartość pliku:<br>';
$msg = implode(file("przyklad.txt"),"<br>n");
echo $msg;
} else echo 'Brak pliku!';
?>
Operacje na MySQL
Najważniejszą zaletą dynamicznego programowania stron WWW jest możliwość łatwej zmianie zawartości witryny. Przy małych serwisach, zawierających kilka tekstów, przechowywanie poszczególnych stron w dokumentach HTML nie stanowi problemu. Jednak gdy tylko materiałów jest wiecęj pojawia się problem - jak ułatwić sobie robotę w administracji stroną. Rozwiązanie jest proste: przenieść wszystkie informacje w jakieś miejsce i utworzyć skrypty odpowiedzialne za odczyt. Najlepszym rodzajem tego "miejsca" jest baza danych.
Baza danych to dane podzielone na poszczególne tabele, a te podzielone są na kolumny i wiersze. Analogią w życiu codziennym jest dziennik uczniów w szkole. Kolumny odpowiedzialne są za podział danych ze względu na typ informacji w nich zawartych, wiersze za podział tych informacji względem jakiejś osoby, przedmiotu itp., natomiast tabele za typ danych zawartych w niej informacji. Na przykład tabela odzwierciedlająca dziennik wyglądała by tak:
Lp. |
Nazwisko |
Imię |
Ocena1 |
Ocena2 |
Zachowanie |
1. |
Pancernik |
Alfred |
1 |
2 |
dobre |
2. |
Koprofil |
Władysław |
5 |
4 |
naganne |
W takiej bazie danych znajduje się mnóstwo tabel, w zależności od użytkownika.
Postanowiłem omówić tylko jeden rodzaj bazy danych - MySQL, ponieważ gdybym chciał z osobna opisywać każdą bazę, to zajęłoby to dużo miejsca. Tak więc na wstępie zakładam, że używasz bazy MySQL, a jeżeli nie, to w manualu PHP odnajdziesz odpowiednie funkcje obsługujące bazy danych.
MySQL to system baz danych. Możliwe jest utworzenie w nim kont użytkowników, które będą miały ustaloną liczbę możliwych baz do stworzenia itp. No dobra, koniec teorii, teraz praktyka, czyli obsługa w PHP.
Aby móc korzystać z bazy danych musisz, oczywiście oprócz zainstalowania jej i uruchomienia, się z nią połączyć. Służy do tego funkcja mysql_connect(), która zwraca wskaźnik połączenia. Argumentami tej funkcji jest adres do bazy, nazwa użytkownika i hasło. Wszystkie te argumenty są opcjonalne, czyli można je pominąć, oczywiście jeżeli odpowiada to zabezpieczeniom bazy.
Po ustanowieniu połączenia do konta systemu baz należy wybrać bazę. Do tej czynności służy funkcja mysql_select_db(), której argumentami są nazwa bazy danych i opcjonalnie wskaźnik połączenia. Możesz łączyć się tylko z dostępnymi bazami. W celu utworzenia nowej musisz wysłać do systemu baz danych polecenie "CREATE DATABASE nazwa".
Do wysyłania poleceń służy mysql_query(). Argumentami tej funkcji są łańcuch z poleceniem oraz opcjonalny wskaźnik połączenia. Jeżeli polecenie ma zwracać jakąś wartość (np. SELECT), to mysql_query() zwraca wskaźnik do wyników. Wskaźnik ten wykorzystywany jest przez kolejne omówione w tym rozdziale funkcje.
Pierwszą funkcją do obługi wyników jest mysql_fetch_row(). Zwraca ona zwykłą tablicę, której poszczególne elementy to uporządkowane kolumny tabeli. Tablica ta jest odwzorowaniem jednego wiersza w tabeli. Argumentem tej funkcji jest wskaźnik do wyników.
Drugą funkcją obsługującą wyniki jest mysql_fetch_array(). Zwraca ona tablicę asocjacyjną, której poszczególne indeksy odpowiadają nazwą kolumn w tabeli. Oczywiście zwracany jest tylko jeden wiersz w tabeli. Potrzebuje tego samego argumentu co mysql_fetch_row().
Ostatnią funkcją zwracającą wyniki jest mysql_fetch_object(). Zwraca on obiekt, którego poszczególne pola są nazwami kolumn w tabeli. Posiada takie same właściwości co dwie wcześniejsze funkcje.
Ważna przy pobieraniu informacji jest informacja, że po odczytaniu jednego wiersza z tabeli wskaźnik danych przenosi się do następnego wiersza. Jeżeli wskaźnik ten natrafi na koniec wyników zwracana jest, przez trzy powyższe funkcje, wartość FALSE.
PHP pozwala na sprawdzenie ile wierszy zostało zwróconych przez polecenie. Służy do tego funkcja mysql_num_rows(), której argumentem jest wskaźnik do wyników. Jeżeli polecenie nie zwróciło żadnego wiersza funkcja zwraca wartość 0.
Aby przenieść się do danego wiersza wyników trzeba użyć funkcji mysql_data_seek(). Jej argumentami są wskąźnik do wyników i numer wiersza liczony od 0 (tak jak każda tablica w PHP)!
Jeżeli polecenie zawiera błąd można go odczytać. Służy do tego funkcja mysql_error(), która zwraca łańcuch jeżeli istnieje błąd. Łańcuch ten zawiera szczegółowe informacje o błędzie.
Gdy już wykonamy poszczególne czynności możemy zamknąć połączenie funkcją mysql_close().
A na koniec przykład odczytu informacji z tabeli o strukturze:
id int
nazwisko varchar(40)
imie varchar(40)
ocena int
<?PHP
$pol = mysql_connect();
mysql_select_db("baza");
$wyn = mysql_query("SELECT * FROM users");
if (mysql_num_rows($wyn)>0) {
echo '<table cellpadding="1" border="1" cellspacing="0">';
while ($tab = mysql_fetch_array($wyn))
echo '<tr><td>'.$tab['id'].'</td><td>'.$tab['nazwisko'].'</td><td>'.$tab['imie'].'</td><td>'.$tab['ocena'].'</td></tr>';
echo '</table>';
}
mysql_close($pol);
?> |
Jeżeli chcesz poznać więcej funkcji obsługujących MySQL użyj manuala PHP.
Na tym rozdziale kończy się mój kurs PHP. Starałem się w nim przekazać całą teoretyczną wiedzę na temat tego języka, mam nadzieję, że mi się to udało. Pamiętaj: to że poznałeś teorię nie oznacza, że znasz się na programowaniu w PHP. Na opanowanie tego języka, by móc w nim programować z łatwością i nie zaglądając do manuala, potrzebujesz kilku miesięcy praktyki. Ćwiczyć możesz tworząc projekty aplikacji np. ksiąg gości czy sond, tak na początek, potem możesz zająć się forum. Ja się tak uczyłem i wiem, że jest to skuteczne. Powodzenia!