INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia...

86
INSTRUKCJE DLA STUDENTÓW TECHNIKI MULTIMEDIALNE TECHNIKI MULTIMEDIALNE Tematyka: 1. Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie RSZBD w PHP Rzeszów 2004 Instytut Techniki Zakład Elektrotechniki i Informatyki UNIWERSYTET RZESZOWSKI

Transcript of INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia...

Page 1: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

INSTRUKCJE DLA STUDENTÓW

TECHNIKI MULTIMEDIALNETECHNIKI MULTIMEDIALNE

Tematyka:

1. Technologia języka skryptowego PHP2. Moduł integrujący PHP4 i MySQL3. Administracja i zarządzanie RSZBD w PHP

Rzeszów 2004

Instytut Techniki Z a k ł a d E l e k t r o t e c h n i k i i I n f o r m a t y k i

U N I W E R S Y T E T R Z E S Z O W S K I

Page 2: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 1

PHPPHP jest językiem skryptowym, wykonywanym po stronie serwera, a pisane w nim skrypty są umieszczane w kodzie HTMLHTML.

Dokumenty zawierające skrypty PHP (pliki zazwyczaj mają rozszerzenierozszerzenie .php.php, .php3.php3, .php4.php4) to pomieszanie kodu HTML i tekstu programu. W rzeczywistości w kodzie HTML tekst programu jest wydzielony znacznikiem z tego kodu (choć może też być odwrotnie: kod HTML-owy może być zawarty w skrypcie PHP!). Początek i koniec programu mogą być oznaczone odpowiednio przez:

<?php<?php ?>?>

<?<? ?>?>

<SCRIPT LANGUAGE=”php”><SCRIPT LANGUAGE=”php”> </SCRIPT></SCRIPT>

Komentarz jest fragmentem kodu pomijanym przez interpreter. Musimy oczywiście odpowiednio

ów opis zaznaczyć:

//// - interpreter pominie wszystko co znajdzie za tymi znakami aż do końca linii

//** i */*/ - oznaczają odpowiednio początek i koniec komentarza obejmującego jedną lub więcej linii

dla kodu HTML komentarz zaznaczamy poprzez użycie znaczników <!<!---- i ---->>.

Ćwiczenie 1.1.

Utwórz w PHP program, który wypisze Twoje imię i nazwisko.

Musimy zapoznać się z funkcją, która pozwala na wypisanie tekstu.

print Najprostsza funkcja wypisująca podaną wartość.

echo Funkcja wypisująca podaną wartość, podobna do print.

printf Funkcja pozwalająca na wypisanie wartości po jej wcześniejszym sformatowaniu. Jest bardzo przydatna, a zapoznamy się z nią w ćwiczeniu 3.5.

Napiszmy teraz program:

//Listing 1-1.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

Page 3: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<TITLE>Moje imi i nazwisko</TITLE>ę

</HEAD>

<BODY>

<?

// Wypisujemy imi i nazwisko, u ywaj c funkcji "print"ę ż ą

print ("Nazywam si Mariusz Dymek");ę

?>

</BODY>

</HTML>

Po umieszczeniu pliku na serwerze (nie jest ważne, czy to obcy serwer w Internecie, gdzie mamy konto, czy też zainstalowany Apache na naszym komputerze) i wpisaniu adresu dokumentu uzyskamy wynik działania pierwszego napisanego skryptu PHP (rysunek 1.1).

Rys. 1.1. Wynik działania pierwszego skryptu PHP

Ćwiczenie 1.2.

Utwórz skrypt, który wypisze Ci informacje o konfiguracji PHP na serwerze.

Wykorzystamy funkcję, która zwraca stronę informacyjną o konfiguracji serwera.

phpinfo Funkcja zwracająca stronę informacyjną o konfiguracji PHP i o bieżącym połączeniu i zmiennych systemowych

Oto skrypt:

Page 4: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

//Listing 1-2.php<?// Wykorzystujemy funkcj "phpinfo" w celu uzyskaniaę// informacji o konfiguracji PHP.phpinfo();?>

W przeglądarce wyświetli się strona z informacjami (rysunek 1.2).

Rys. 1.2. Strona informacyjna wygenerowana za pomocą funkcji phpinfophpinfo.

Funkcja phpinfo phpinfo wyświetla kompletny tekst HTML strony informacyjnej.

W sekcji EnvironmentEnvironment znajduje się lista zmiennych środowiskowych, np.:

- HTTP_HOSTHTTP_HOST, w której jest zapisana jego nazwa;

- REQUEST_URIREQUEST_URI, pamiętająca nazwę skryptu;

- SERVER_ADMINSERVER_ADMIN, z której można odczytać adres e-mail administratora serwera;

- REMOTE_ADDRREMOTE_ADDR, która określa adres IPIP odwiedzającego;

- HTTP_USER_AGENTHTTP_USER_AGENT, z której można wyczytać, z jakiego systemu operacyjnego korzysta i jaką posługuje się przeglądarką.

Zmienne, stałe, operatory.

Nazwy zmiennych mogą składać się z liter, cyfr i znaków podkreślenia, jednak nie mogą zaczynać się od cyfry. W programie poprzedza sieje znakiem dolara ($$). W PHP nie jest wymagane wcześniejsze deklarowanie ich przed użyciem, a więc wcześniejsze określanie jej typu

Page 5: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zmienne w PHP dzielą się na typy, np.:

- łańcuchy znakowe;

- liczby całkowite;

- liczby zmiennopozycyjne.

Ćwiczenie 1.3.

Utwórz zmienne, w których zapamiętasz swoje imię i nazwisko i wypisz je.

Skrypt realizujący to zadanie:

//Listing 1-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Moje imi i nazwisko</TITLE>ę

</HEAD>

<BODY>

<?

// Imi i nazwisko, zapami tujemy w zmiennychę ę

// a nast pnie wypisujemy funkcj print.ę ą

$imie = 'Mariusz';

$nazwisko = "Dymek";

print ("Nazywam si " . $imie . " " . $nazwisko);ę

?>

</BODY>

</HTML>

Ważnym elementem są znaki kropki w instrukcji printprint, pomiędzy poszczególnymi łańcuchami. Znak kropki jest operatorem połączenia dwóch łańcuchów.

Łańcuch tekstowy Łańcuch tekstowy może być zawarty w pojedynczych lub podwójnych cudzysłowach.

" … " W łańcuchach w podwójnych cudzysłowach następuje tak zwana interpolacja zmiennychinterpolacja zmiennych. Oznacza to, że nazwy zmiennych zawartych w takich łańcuchach są zastępowane przez ich

Page 6: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

wartości.

' … ' W łańcuchach w pojedynczych cudzysłowach taka zmiana nie następuje.

Różnice w użyciu podwójnych i pojedynczych cudzysłowów.

$tekst = "Nazywam si $imie $nazwisko";ę

Nazywam się Mariusz Dymek

$tekst = ‘Nazywam si $imie $nazwisko’;ę

Nazywam się $imie $nazwisko

Ćwiczenie 1.4.

Napisz skrypt, który wypisze obwód i pole prostokąta o zadanych bokach.

//Listing 1-4.php

<HTML><HEAD>

<META HTTP-EQUIV="Content-type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Pole i obwód prostok±ta</TITLE>

</HEAD>

<BODY>

<?

// W zmiennych zapami tamy boki prostok±ta, aę

// nast pnie obliczymy pole i obwód kwadratu.ę

$bokA = 5;

$bokB = 7;

print ("Pole prostok±ta o bokach $bokA i $bokB wynosi:".$bokA*$bokB. " a obwód: " . 2*($bokA+$bokB) );

?>

</BODY>

</HTML>

Page 7: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Efekt w przeglądarce widać na rysunku 1.3.

Rys. 1.3. Wyniki obliczeń programu.

Stałymi. nazywamy pewne obiekty, które mają z góry określoną wartość, która nie ulega zmianie podczas wykonywania programu. Jako stałe możesz definiować nie tylko liczby, ale także teksty. Musisz je wtedy zawrzeć w cudzysłowach.

Stałe definiuje się za pomocą funkcji definedefine.

define Definiowanie wartości stałej.

Oto przykład definicji:

define ("STAWKA_PODATKOWA", 0.19)

Funkcja posiada dwa argumenty: nazwę stałejnazwę stałej i jej wartośćwartość.

Ćwiczenie 1.5

Napisz skrypt, który wyświetli wartość podatku od dochodu 5000 zł5000 zł w 2001 roku. Użyj stałych do zapamiętania kwoty wolnej od podatku i stawki procentowej. Podatek należy obliczyć w następujący sposób: od dochodu trzeba odjąć kwotę wolną od podatku i następnie wynik pomnożyć przez stawkę procentową.

//Listing 1-5.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

Page 8: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<TITLE>Podatek od dochodu 5000 PLN w 2001 roku </TITLE>

</HEAD>

<BODY>

<?

define ("KWOTA_DO_ODJECIA", 436.20);

define ("STAWKA_PODATKOWA", 0.19);

// czyli 19%

print ("Podatek od dochodu 5000 PLN w 2001 roku wynosi: ");

printf ("%0.2f", (5000*STAWKA_PODATKOWA - KWOTA_DO_ODJECIA));

print (' PLN');

?>

</BODY>

</HTML>

Rys. 1.4. Wynik działania programu po obliczeniu podatku.

Funkcją printfprintf pozwala na formatowanie wypisywanego tekstu. Funkcja wymaga argumentu, określającego sposób formatowania, po którym wpisuje się informacje do wyświetlenia, oddzielając je przecinkami.

Poniżej znajduje się lista operatorów arytmetycznych i operatorów przypisania.

Operatory arytmetyczne

Operator Opis

+ dodawanie

- odejmowanie

Page 9: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

* mnożenie

/ dzielenie

% reszta z dzielenia

Operatory przypisania

Operator Opis

= liczba stojąca po lewej stronie operatora przyjmuje wartość liczby stojącej po prawej stronie operatora

+= liczba stojąca po lewej stronie operatora przyjmuje wartość będącą sumą jej samej i liczby stojącej po prawej stronie operatora

-= liczba stojąca po lewej stronie operatora przyjmuje wartość będącą różnicą jej samej i liczby stojącej po prawej stronie operatora

*= liczba stojąca po lewej stronie operatora przyjmuje wartość będącą iloczynem jej samej i liczby stojącej po prawej stronie operatora

/= liczba stojąca po lewej stronie operatora przyjmuje wartość będąca ilorazem jej samej i liczby stojącej po prawej stronie operatora

%= liczba stojąca po lewej stronie operatora przyjmuje wartość będąca resztą z dzielenia (modulo) jej samej i liczby stojącej po prawej stronie operatora

.= przypisuje do wyniku (będącego łańcuchem) jego połączenie z łańcuchem (będącym argumentem)

== operator równości

!= operator różności

! operator zaprzeczenia (negacji), stosowany przed argumentem

++ operator zwiększenia o 1 (czyli inkrementacja)

-- operator zmniejszenia o 1 (czyli dekrementacja)

Ćwiczenie 1.6

Napisz skrypt, który wypisze Twoje informacje adresowe, używając operatora .=.= (przypisującego połączenie wyniku z argumentem).

Poszczególne informacje będziemy gromadzić w kolejnych poleceniach skryptu.

//Listing 1-6.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Moje dane</TITLE>

</HEAD>

<BODY>

Page 10: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<?

//Kolejne informacje zostaj zbierane przy u yciu operatora .=ą ż

//(przypisuj cego po czenie wyniku z argumentem).ą łą

$tekst = 'Mariusz';

$tekst .= ' Dymek';

$tekst .= '<BR>';

$tekst .= 'Rzeszów';

$tekst .= '<BR>';

$tekst .= 'tel. (502) 204 123';

print ($tekst);

?>

</BODY>

</HTML>

Poniżej znajduje się wynik działania skryptu:

Rys. 1.5. Wynik działania programu w przeglądarce.

Page 11: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania:

1. Napisz skrypt, żeby wyniki obliczeń z ćwiczenia 1.4 były wyróżnione pogrubieniem.

Efekt w przeglądarce widać na rysunku 1.6.

Rys. 1.6. Wyniki obliczeń zostały wyróżnione pogrubieniem.

2. Posługując się programem z zadania 1.5. napisz program wstawiając w nim drugą instrukcję, wypisującą podatek dla dochodu 10.000 zł.

3. Napisz skrypt, który obliczy pole i obwód okręgu.

Page 12: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 2

Instrukcja warunkowa

Instrukcja warunkowa w PHP ma następującą formę:

if (warunek1) {

blok instrukcji 1

} elseif (warunek2) {

blok instrukcji 2

} elseif (warunek3) {

blok instrukcji 3

...

} else {

blok instrukcji n

}

lub formę uproszczoną:

if (warunek) {

blok instrukcji 1

}

Oto przykład wykorzystania instrukcji warunkowej:

if ($i>0) {

print ('zmienna i jest wi ksza od 0 ' )ę

)

else (

print ('zmienna i jest mniejsza lub równa 0’)

}

Page 13: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Powyższy przykład można nieco rozbudować, w celu odróżnienia wartości zmiennej $i$i równej i mniejszej od zera:

if ($i>0) {

print ('zmienna i jest wi ksza od 0 ')ę

} elseif ($i ==0) {

print (‘zmienna i jest równa 0’)

} else {

print ('zmienna i jest mniejsza lub równa 0’)

}

Ćwiczenie 2.1.

Napisz skrypt, który wypisze większą wartość z dwóch określonych liczb.

//Listing 2-1.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Wi ksza z dwóch liczb</TITLE>ę

</HEAD>

<BODY>

<?

// W instrukcji if sprawdzamy, czy wi ksze jest $a czy $b.ę

$a = 2;

$b = 3;

print ("<B>a</B> ma warto $a<BR>");ść

Page 14: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

print ("<B>b</B> ma warto $b<BR>");ść

if ($a>$b) {

print ("Wi ksz liczb jest a, ma warto $a");ę ą ą ść

} elseif ($a==$b) {

print ("Liczby a i b s sobie równe, obie maj warto $a");ą ą ść

} else {

print ("Wi ksz liczb jest b, ma warto $b");ę ą ą ść

}

?>

</BODY>

</HTML>

Poniżej znajduje się efekt działania skryptu.

Rys. 2.1. Wynik działania skryptu.

Page 15: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 2.2

Wylicz pierwiastki równania kwadratowego o współczynnikach A, B i C.

Aby obliczyć pierwiastki równania kwadratowego najpierw należy wyliczyć deltę:deltę: B2B2--4AC4AC. W zależności od jej znaku, równanie posiada zero, jedno lub dwa rozwiązania.

//Listing 2-2.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Pierwiastki równania kwadratowego</TITLE>

</HEAD>

<BODY>

<?

// Pierwiastki równania kwadratowego obliczamy zgodnie

// ze wzorem.

$a = -1; $b = -2; $c = 1;

print ("a = $a, b = $b, c = $c<BR>"};

$delta = $b*$b-4*$a*$c;

if ($delta < 0) {

print ('Równanie nie ma pierwiastków rzeczywistych');

}

elseif ($delta == 0) {

$xl = -$b/(2 * $a);

print ("Równanie ma jeden pierwiastek rzeczywisty: $xl");

}

else {

Page 16: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$xl = (-$b-sqrt($delta)) / (2*$a);

$x2 = (-$b+sqrt($delta)) / (2*$a);

print ("Równanie ma dwa pierwiastki rzecz.: $xl i $x2");

}

?>

</BODY>

</HTML>

Rys. 2.2. Efekt programu.

Pętla for

W PHP mamy do dyspozycji kilka możliwości „zapętlania", czyli wielokrotnego wykonywania bloku instrukcji. Najprostszą jest pętla forfor , która ma postać:

for (ustalenie_poczatku; warunek_petli; zwi kszenie_licznika)ę

{

blok instrukcji

}

W sekcji pierwszej (ustalenie początkuustalenie początku) nadajemy zmiennej sterującej w pętli wartość początkową. Druga sekcja (warunek pętliwarunek pętli) to wyrażenie określające warunek, przy którego spełnieniu pętla ma być wykonywana. W trzeciej sekcji (zwiększanie licznikazwiększanie licznika) określamy sposób zwiększania zmiennej sterującej przy każdym przebiegu pętli.

Ćwiczenie 2.3

Page 17: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Napisz program, który wypisze liczby od 1 do 10, a następnie od 10 do 1.

//Listing 2-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Odliczamy</TITLE>

</HEAD>

<BODY>

<?

// Wykorzystujemy dwie p tle - "w gór " i "w dó ".ę ę ł

for ($i=1; $i<=10; $i++) {

print ("$i<BR>") ;

}

print ( '<BR>' ) ;

for ($i=10; $i>=1; $i-- ) {

print ("$i<BR>");

}

?>

</BODY>

</HTML>

Page 18: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 2.3. Efekt działania programu.

Pętle while i do...while

Pętla while while ma postać:

while (warunek)

{

blok instrukcji

}

Pętla do ...while do ...while ma postać:

Page 19: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

do {

blok instrukcji

}

while (warunek)

Istotę tych instrukcji dobrze oddaje ich przetłumaczenie na język polski:

1. Dopóki jest spełniony warunek, wykonuj instrukcje.

2. Wykonuj instrukcje, dopóki jest spełniony warunek.

Ćwiczenie 2.4

Napisz program, który znajdzie najmniejszy wspólny podzielnik dwóch liczb: A i B.

//Listing 2-4.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>NWD</TITLE>

</HEAD>

<BODY>

<?

// Najwi kszy wspólny podzielnik liczb a i b znajdziemyę

// stosuj c odmian algorytmu Euklidesa.ą ę

$a = 32; $b = 12;

print ("Najwi kszy wspólny podzielnik liczb $a i $b to: ");ę

while ($a != $b) {

if ($a < $b){

$pora = $a; $a = $b; $b = $pora;

}

Page 20: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$a = $a - $b;

}

print ("$a");

?>

</BODY>

</HTML>

Rys. 2.4. Efekt programu w przeglądarce.

Ćwiczenie 2.5

Napisz program, który sprawdzi, ile kolejnych liczb naturalnych, zaczynających się od 1, daje sumę większą od 100.

Do napisania skryptu wykorzystamy funkcję do..whiledo..while, w której będą sumowane kolejne wyrazy ciągu, aż do uzyskania sumy 100.

//Listing 2-5.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Suma ci gu</TITLE>ą

Page 21: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

</HEAD>

<BODY>

<?

// Szukamy najmniejszego i takiego, e suma liczb odż

// l do i przekracza 100.

$i = 0;

$suma = 0;

do {

$suma += ++$i;

}

while ($suma < 100);

print ("Suma liczb od l do $i daje $suma.");

?>

</BODY>

</HTML>

Rys. 2.5. Efekt programu.

Page 22: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Instrukcja wyboru [switch]

Instrukcja wyboru switchswitch umożliwia rozgałęzienie działania programu w zależności od wartości

wyrażenia. Oto postać tej instrukcji:

switch (wyrazenie){

case wartosc1:dzialanie1;break;

case wartosc2:dzialanie2;break;

...default dzialanie;

}

Wartości wartość1wartość1, wartosc2wartosc2, ... (zwane wyrażeniami wyboru) służą do określenia, które

działanie ma zostać podjęte (to, dla którego warunek odpowiada wartości). W przypadku, gdy nie jest to

spełnione dla żadnej wartości, wykonywane są instrukcje z bloku defaultdefault.

Ćwiczenie 2.6

Napisz program, który wypisze bieżącą datę z miesiącem w języku polskim.

//Listing 2-6.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Data</TITLE>

</HEAD>

<BODY>

<?

// Polska nazwa miesi ca okre lona w funkcji switchą ś

// do uzyskania dnia, miesi ca i roku u ywamy funkcji date.ą ż

$dzien = date("d");

Page 23: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$miesiac = date("m");

$rok = date("Y");

switch ($miesiac) {

case '01': $miesiac = 'stycznia'; break;

case '02': $miesiac = 'lutego'; break;

case '03': $miesiac = 'marca'; break;

case '04': $miesiac = 'kwietnia'; break;

case '05': $miesiac = 'maja'; break;

case '06': $miesiac = 'czerwca'; break;

case '07': $miesiac = 'lipca'; break;

case '08': $miesiac = 'sierpnia'; break;

case '09': $miesiac = 'wrze nia'; break;ś

case '10': $miesiac = 'pa dziernika'; break;ź

case '11': $miesiac = 'listopada'; break;

case '12': $miesiac = 'grudnia'; break;

default: $miesiac = 'niezidentyfikowany'; break;

}

print "$dzien $miesiac $rok";

?>

</BODY>

</HTML>

Page 24: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 2.6. Efekt programu.

Podając format daty można użyć następujących znaków specjalnych:

Znak Opis

D dzień tygodnia w skróconym zapisie tekstowym, na przykład "Fri"

I dzień tygodnia w zapisie tekstowym, na przykład "Monday"

w dzień tygodnia w postaci numerycznej od "0" (Niedziela) do "6" (Sobota)

z dzień w roku od "0" do "365"

d dzień miesiąca w zapisie numerycznym od "01" do "31"

F miesiąc w zapisie tekstowym np.: "January"

M miesiąc w skróconym zapisie tekstowym, na przykład "Jan"

m miesiąc w zapisie numerycznym od "01" do " 12"

t liczba dni w miesiącu od "28" do "31 "

h godzina, format 12-godzinowy od "01" do "12"

H godzina, format 24-godzinowy od "00" do "23"

a "am", czy "pm"

A "AM", czy "PM"

i minuty, od "00" do "59"

s sekundy od "00" do "59"

Y rok w zapisie 4-cyfrowym, na przykład "2002"

y rok w zapisie 2-cyfrowym, na przykład "02 ".

Zadania

Page 25: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

1. Dobierz takie wartości zmiennych $a, $b i $c w ćwiczeniu 2.2., by uzyskać równanie bez, z jednym i z dwoma rozwiązaniami rzeczywistymi.

2. Napisz skrypt, który wyświetli powitanie wraz z aktualną datą.

3. Napisz program, który obliczy i wyświetli N!.

4. Napisz program, który sprawdzi, czy n jest liczbą pierwszą.

Page 26: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 3

Funkcje

Definicja funkcji musi nastąpić przed jej wywołaniem i ma postać:

function nazwa (lista_paramertów)

{

blok instrukcji

}

Parametry, czyli dane przekazane do funkcji, są widoczne wewnątrz niej pod odpowiednimi nazwami (takimi, jakie zadeklarowaliśmy w nagłówku funkcji) i można na nich operować tak jak na zmiennych.

Jeżeli chcesz, by funkcja zwróciła jakąś wartość, należy posłużyć się instrukcją returnreturn. Powoduje ona zakończenie działania funkcji i zwrócenie jako wyniku wartości wyrażenia występującego w instrukcji returnreturn.

Ćwiczenie 3.1.

Napisz funkcją, która oblicza silnię liczby, i program sprawdzający jej działanie.

Zwróć uwagę, że do napisanej już funkcji możesz się odwołać tak, jak do standardowej.

//Listing 3-1.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Silnia</TITLE>

</HEAD>

<BODY>

<?

function silnia ($n) {

$silnia = 1;

Page 27: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

for ($i=1; $i<=$n; $i++) {

$silnia *= $i;

}

return $silnia;

}

print ("10! = ".silnia(10));

?>

</BODY>

</HTML>

Zmienne $i$i oraz $silnia$silnia, używane w funkcji silniasilnia są na zewnątrz niewidoczne. Noszą one nazwę zmiennych lokalnych funkcjizmiennych lokalnych funkcji. Z kolei taka, która jest używana w głównym bloku programu, to zmiennazmienna globalnaglobalna. Istnieje możliwość użycia w funkcji zmiennych lokalnych o takich samych nazwach, jak zmienne globalne.

Rys. 3.1. Wynik działania skryptu.

Jeżeli chciałbyś skorzystać ze zmiennej globalnej, możesz użyć instrukcji globalglobal. Powoduje ona, że na zmiennej będzie można operować tak samo, jak na lokalnej, a jeżeli funkcja zmieni jej wartość, po zakończeniu działania pozostanie ona zmieniona.

Ćwiczenie 3.2.

Napisz funkcję, która łańcuch sformatuje pogrubieniem.

Page 28: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

//Listing 3-2.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Pogrubienie</TITLE>

</HEAD>

<BODY>

<?

function pogrubienie ($lancuch)

{

return "<B>".$lancuch."</B>";

}

print ("To jest tekst zwyk y,<BR>");ł

print pogrubienie("a to jest tekst pogrubiony.");

?>

</BODY>

</HTML>

Rys. 3.2. Efekt działania funkcji.

Page 29: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 3.3.

Napisz funkcję, która oblicza największy wspólny dzielnik dwóch liczb, i program sprawdzający jej działanie.

//Listing 3-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>NWD</TITLE>

</HEAD>

<BODY>

<?

function nwd ($a, $b)

{

// Funkcja znajduje najwi kszy wspólny podzielnik liczbę

// a i b znajdziemy stosuj c odmian algorytmu Euklidesa.ą ę

$a = 32;

$b = 12;

while ($a != $b) ( if ($a < $b)

{

$pora = $a;

$a = $b;

$b = $pom;

}

$a = $a - $b;

}

return $a;

}

Page 30: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$a = 32;

$b = 8;

print ("Najwi kszy wspólny podzielnik liczb $a i $b to: ");ę

print nwd ($a, $b) ;

?>

</BODY>

</HTML>

Rys. 3.3. Wynik działania funkcji.

Ćwiczenie 3.4.

Napisz funkcję, która dla parametru będącego imieniem, zgaduje płeć osoby.

Zgadywanie niestety nie będzie skuteczne w 100%. Metoda będzie polegać na tym, że jeżeli ostatnią literą imienia będzie „a", ocenimy, że mamy do czynienia z kobietą, jeżeli nie - z mężczyzną.

Aby zrealizować ćwiczenie należy skorzystać z dwóch predefiniowanych funkcji. Funkcja substrsubstr pozwoli nam uzyskać dowolny podciąg tekstu. Aby jednak otrzymać ostatnią literę, musisz też znać jego długość. W tym celu wykorzystaj funkcję strlenstrlen.

//Listing 3-4.php

<HTML>

<HEAD>

Page 31: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>NWD</TITLE>

</HEAD>

<BODY>

<?

function plec ($imie)

{

// Funkcja próbuje zgadn p e osoby na podstawieąć ł ć

// ostatniej litery jej imienia.

$ostatnialitera = substr($imie, strlen($imie)-1, 1);

if ($ostatnialitera =='a') { return 'kobieta'; }

else { return 'm czyzna'; }ęż

}

print ("Mariusz -– ".plec ('Mariusz'));

?>

</BODY>

</HTML>

Rys.3.4. Efekt działania skryptu.

Page 32: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Najczęściej używane gotowe funkcje:

substr zwraca podłańcuch pierwszego parametru, zaczynający się od znaku o numerze określonym drugim parametrem i długości określonej trzecim. Należy pamiętać, że znaki są liczone od 0

strlen zwraca długości łańcucha określonego parametrem

require włączenie pliku - argumentu do dokumentu

include wykonanie instrukcji z pliku - argumentu

pow($a, $b) podnosi $a do potęgi $b

Page 33: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania

1. Napisz funkcję, która oblicza N! w sposób rekurencyjny.

2. Napisz funkcję, która oblicza metodą rekurencyjną naturalną potęgę (n) liczby całkowitej c, i program sprawdzający jej działanie.

3. Napisz program, który wypisuje wszystkie podzbiory zbioru liczb naturalnych mniejszych lub równych N.

Page 34: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 4

Tablice to złożone typy danych, które mogą zawierać wiele wartości indeksowanych przy użyciu liczb lub łańcuchów znaków. Dla przykładu, tablicę łańcuchów znaków można stworzyć w poniższy sposób:

$var[0]="Mariusz";

$var[1]="Dymek";

Ćwiczenie 4.1.

Napisz program, który zapełni tablicę 20 liczbami losowymi z zakresu 1…20, a następnie sprawdzi, ile razy występuje w niej dana liczba.

//Listing 4-1.php

<HTML><HEAD><META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Zliczanie</TITLE>

</HEAD><BODY>

<? // Program zape nia tablic losowymi liczbami i sprawdza, ł ę

// ile razy znajduje si w niej szukana liczba. ę

$szukana = 5;

srand(time());

for ($i=0; $i<20; $i++) {

$liczby[$i] = rand()%20+1;

}

$ileZnaleziono = 0;

for ($i=0; $i<20; $i++) {

print "$liczby[$i] ";

Page 35: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

if ($liczby [$i] == $szukana) {

$ileZnaleziono++;

}

}

if ($ileZnaleziono == 0) {

print ("<P>Liczby $szukana w tablicy nie odnaleziono.");

} else {

print ("<P>Liczb $szukana w tablicy odnaleziono "ę .

"$ileZnaleziono razy.");

}

?></BODY></HTML>

Ćwiczenie 4.2.

Napisz program, który do tablicy dwuwymiarowej o wielkości 3x3 wpisze wartości losowe z zakresu –5…5 i policzy wyznacznik macierzy, którą tablica reprezentuje.

Wyznacznik macierzy To wymiarach 3x3, gdzie T[i,j] oznacza element w i-tym wierszu i j-tej kolumnie liczy się według wzoru:

W(T) = T[1,1]*T[2,2]*T[3,3] + T[1,2]*T[2,3]*T[3,1] + T[1,3]*T[2,1]*T[3,2] – T[1,1]*T[2,3]*T[3,2] – T[1,2]*T[2,1]*T[3,3] – T[1,3]*T[2,2]*T[3,1]

//Listing 4-2.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Wyznacznik macierzy</TITLE>

</HEAD>

<BODY>

Page 36: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<?

// Oblicza wyznacznik macierzy 3x3. Macierz jest pami tana w ę

// tablicy dwuwymiarowej.

srand(time());

print "<TABLE>";

for ($i=1; $i<=3; $i++) {

print "<TR>";

for ($j=1; $j<=3; $j++) {

print "<TD ALIGN=RIGHT>".($macierz [$i][$j] = rand()%11-5)."</TD>";

}

print "</TR>";

}

print "</TABLE>";

$wyznacznik = $macierz[1][1]*$macierz[2][2]*$macierz[3][3] +

$macierz[1][2]*$macierz[2][3]*$macierz[3][1] +

$macierz[1][3]*$macierz[2][1]*$macierz[3][2] -

$macierz[1][1]*$macierz[2][3]*$macierz[3][2] -

$macierz[1][2]*$macierz[2][1]*$macierz[3][3] -

$macierz[1][3]*$macierz[2][2]*$macierz[3][1];

print "Wyznacznik macierzy to $wyznacznik.";

?>

</BODY>

</HTML>

Page 37: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 4.3.

Napisz program, który wyświetla polską nazwę dnia tygodnia.

Wykorzystamy funkcję datedate, która wywołana z parametrem "1" określa dzień tygodnia – niestety po angielsku. Utworzymy więc tablicę asocjacyjną, w której zapamiętamy polskie nazwy dni tygodnia. Indeksem tej tablicy będą nazwy angielskie.

//Listing 4-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Dzie tygodnia</TITLE>ń

</HEAD>

<BODY>

<?

// Program wypisuje nazw dnia tygodnia w j zyku polskim. Doę ę

// pami tania polskich odpowiedników u ywamy tablicy asocjacyjnej.ę ż

$konwersja['Monday'] = 'poniedzia ek'ł ;

$konwersja['Tuesday'] = 'wtorek';

$konwersja['Wednesday'] = ' roda'ś ;

$konwersja['Thursday'] = 'czwartek';

$konwersja['Friday'] = 'pi tek'ą ;

$konwersja['Saturday'] = 'sobota';

$konwersja['Sunday'] = 'niedziela';

$dzientygodnia = date("l");

Page 38: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

print "Dzi jest $konwersja[$dzientygodnia]."ś ;

?>

</BODY>

</HTML>

Ćwiczenie 4.4.

Napisz program, który sprawdzi działanie poniższej pętli for. Zdefiniuj tablicę z nazwami dni tygodnia (polskimi i angielskimi), a następnie używając jej, wyświetl wszystkie.

for (reset ($tablica); $klucz=key($tablica); next($tablica))

{

print("$klucz, ".pos($tablica)."<BR>");

}

Tablice asocjacyjne opierają się na następującej metodzie: tablice posiadają wewnętrzny wskaźnik, który można przesuwać, a także odwoływać się do nazwy indeksu (klucza) i wartości tablicy.

reset ustawia wskaźnik na początku tablicy

next przesuwa wskaźnik do kolejnego elementu tablicy

prev przesuwa wskaźnik do poprzedniego elementu tablicy

key zwraca wartość indeksu (klucz) aktualnie wskazywanego elementu

pos zwraca wartość aktualnie wskazywanego elementu

//Listing 4-4.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

Page 39: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<TITLE>Dni tygodnia</TITLE>

</HEAD>

<BODY>

<?

// Program wypisuje nazw dni tygodnia w j zyku polskim. Doę ę

// pami tania polskich odpowiedników u ywamy tablicy asocjacyjnej.ę ż

$tablica = array ('Monday' => 'poniedzia ek'ł , 'Tuesday' => 'wtorek',

'Wednesday' => ' roda'ś , 'Thursday' => 'czwartek',

'Friday' => 'pi tek'ą , 'Saturday' => 'sobota',

'Sunday' => 'niedziela');

for (reset ($tablica); $klucz=key($tablica); next ($tablica))

{

print ("$klucz, ".pos($tablica)."<BR>");

}

?>

</BODY>

</HTML>

Page 40: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania

1. Napisz program, który zapełni tablicę 20 liczbami losowymi z zakresu 1…20, a następnie uporządkuje je niemalejąco.

2. Napisz program, który wylosuje położenie Hetmana na szachownicy i wyświetli go, pokazując, które pola są w jego zasięgu.

3. Napisz program, który sprawdzi działanie poniższego zapisu. Można wykorzystać tablicę z nazwami dni tygodnia (polskimi i angielskimi) z ćwiczenia 4.4.

while ($wpis=each($tablica)){

print $wpis['key'].", ".$wpis['value']."<BR>";}

Page 41: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 5

Podstawowym sposobem pobierania danych od użytkownika na stronach WWW są formularze. Formularz na stronie WWW ma następującą postać:

<FORM ACTION="skrypt.php" METHOD=POST>

<!-- Tu wyst puj pola formularza -->ę ą

<INPUT TYPE=Submit VALUE="Wy lij">ś

</FORM>

Metodą w formularzu może być także GETGET.

Wysyłanie e-mail'i

Aby skonfigurować naszą instalację PHP do wysyłania poczty e-mail należy wykonać

następującą czynność: w pliku c:\FoxServ\php\php.ini c:\FoxServ\php\php.ini odnajdujemy sekcję mail_functionmail_function i w pozycji

SMTP SMTP wpisujemy adres naszego serwery poczty, a w pozycji sendmail_from sendmail_from adres poczty

elektronicznej. Do wysłania listu elektronicznego wykorzystamy funkcję mailmail. Funkcja ta w najprostszym

przypadku ma postać:

mail (adres_odbiorcy, temat, tresc);

Aby wysłać e-mail - będziemy musieli pobrać od użytkownika informacje, takie jak tekst wiadomości czy

adresat. Użyjemy do tego celu formularzy HTML. Formularze te składają się z różnego typu pól, które

użytkownik może wypełniać. Podstawowe typy pól to:

Typ pola Opis

text tekst, jedna linia

textarea tekst, wiele linii

submit przycisk służący do wysyłania formularza lub do kasowania zawartości wypełnionych pól

checkbox pole wyboru (wybór „wiele z wielu")

radio pole wyboru (wybór „jeden z wielu")

select menu rozwijane lub lista

hidden pole niewidoczne (za jego pomocą możemy przesłać dodatkowe, niewidoczne dla użytkownika dane)

Ćwiczenie 5.1.

Page 42: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Sporządzanie skryptu wyświetlającego formularz HTML służący do wysyłania wiadomości e-mail.

Potrzebne nam będzie pole do wpisania adresata i tematu wiadomości (dwa zwykłe pola edycji - texttext)

oraz pole z tekstem wiadomości (wielowierszowe pole edycji – textareatextarea).

//Listing 5-1.php

<HTML><HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<title> Wysy anie e-maila </title>ł</HEAD>

<body bgcolor="#FFFFFF">

<form method="post" action="wyslij.php">

<table border="1" cellspacing="2" cellpadding="2">

<tr>

<td><font face="Arial"><b>Do :</b></font></td>

<td>

<input type="text" name="do" size="25">

</td>

</tr>

<tr>

<td><font face="Arial"><b>Temat :</b></font></td>

<td> <input type="text" name="temat" size="25"> </td>

</tr> <tr> <td><font face="Arial"><b>Tre :</b></font></td>ść

<td> <textarea name="tresc" cols="50" rows="5"></textarea> </td>

</tr> <tr> <td> <b>

<input type="hidden" name="op" value="wyslij"> </b></td>

Page 43: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<td> <input type="submit" name="Submit" value="Wyslij"> </td>

</tr> </table>

</form>

</body> </html>

Rys. 5.1. Formularz HTML.

Ćwiczenie 5.2.

Utwórz program, który będzie wyświetlał formularz z jednym polem tekstowym, a po wysłaniu tego formularza wyświetli wpisaną wartość.

W zależności od tego, czy zmienna $tekst przyjmuje jakąś wartość, czy też nie, wyświetlamy albo formularz, albo informację o tym, co w nim zostało wpisane.

//Listing 5-2.php

<HTML>

<HEAD>

Page 44: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Formularz</TITLE>

</HEAD>

<BODY>

<?

// Drukuje formularz i jednocze nie odbiera i wy wietla wpisaneś ś

// w nim dane.

if ($tekst) { // jest wpisana jaka warto w formularzuś ść

print "Wpisana warto to <B>$tekst</B><BR>"ść ;

print '<A HREF="4-01.php">Powrót do formularza</A>';

} else {

// nie ma wpisanych danych, wy wietlamy formularzś

print '<FORM ACTION="4-01.php" METHOD=GET>';

print '<INPUT TYPE="text" NAME="tekst">';

print '<INPUT TYPE="submit" VALUE="Wy lij">'ś ;

print '</FORM>';

}

?>

</BODY>

</HTML>

Ćwiczenie 5.3.

Popraw program z ćwiczenia 5.2 tak, by przetwarzał wpisane dane aby były bezpieczne w wyświetlaniu. Sprawdź jego działanie na przykładach z poprzedniego ćwiczenia.

W zależności od ich charakteru funkcja powinna wykonywać różne operacje. Na początek wykorzystaj wbudowaną funkcję PHP, która znaczniki HTML-a przetworzy na "bezpieczne" do wyświetlenia. W szczególności zamieni znaki większości i mniejszości na &gt; i &lt;, co spowoduje, że wpisane znaczniki HTML nie zostaną przy ich dołączeniu do strony zinterpretowane, lecz wyświetlone.

Page 45: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

htmlentities zamienia znaczniki HTML na kody "bezpieczne" do wyświetlenia na stronach WWW

//Listing 5-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Formularz</TITLE>

</HEAD>

<BODY>

<?

// Drukuje formularz i jednocze nie odbiera i wy wietla wpisaneś ś

// w nim dane. Dane s przetworzone funkcj htmlentities.ą ą

if ($tekst) { # jest wpisana jaka warto w formularzuś ść

$tekst = htmlentities ($tekst);

print "Wpisana warto to <B>$tekst</B><BR>"ść ;

print '<A HREF="4-02.php">Powrót do formularza</A>';

} else { # nie ma wpisanych danych, wy wietlamy formularzś

print '<FORM ACTION="4-02.php" METHOD=GET>';

print '<INPUT TYPE="text" NAME="tekst">';

print '<INPUT TYPE="submit" VALUE="Wy lij">'ś ;

print '</FORM>';

}

?>

</BODY>

</HTML>

Page 46: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 5.4.

Utwórz program, który po podaniu odpowiedniej nazwy użytkownika i jego hasła wyświetli tajną informację. Jeżeli zaś wpisane dane będą nieprawidłowe – informację o błędzie.

Dane o użytkownikach i hasłach zapamiętamy jawnie w tablicy asocjacyjnej. Oczywiście użytkownik nie będzie mógł ich podejrzeć.

//Listing 5-4.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Informacja na has o</TITLE>ł

</HEAD>

<BODY>

<?

// Pobiera od u ytkownika nazw i has o. Je eli dane s prawid owe, ż ę ł ż ą ł

// wy wietla tajn informacj , a je eli nie - informacj o b dzie.ś ą ę ż ę łę

$hasla = array ('admin' => 'emdi', 'tester' => 'emdi25',

'mariusz' => '1wgd7w3', 'dymek' => '56sghx');

if (($uzytkownik)&&($haslo)) {# warto ci w formularzu s wpisaneś ą

if ($hasla[$uzytkownik] == $haslo)

{

print ("Tajna informacja to: <B>2*2=4</B>");

}

else

Page 47: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

{

print ("Wpisano niepoprawne dane o u ytkowniku i ha le.<BR>"ż ś );

print ('<A HREF="4-04.php">Wró </A> i spróbuj ponownie.'ć );

}

} else

{

# nie ma wpisanych danych, wy wietlamy formularzś

print '<FORM ACTION="4-04.php" METHOD=POST>';

print '<TABLE><TR><TD>u ytkownik: </TD><TD><INPUT TYPE="text" 'ż ;

print "NAME=\"uzytkownik\" VALUE=\"$uzytkownik\"></TD></TR>";

print '<TR><TD>haslo: </TD><TD><INPUT TYPE="password" ';

print 'NAME="haslo"></TD></TR></TABLE>';

print '<INPUT TYPE="submit" VALUE="Wy lij">'ś ;

print '</FORM>';

}

?>

</BODY>

</HTML>

Ćwiczenie 5.5.

Napisz program, który wyświetli menu, a następnie pokaże wybraną przez użytkownika opcję.

Wybraną przez użytkownika określimy za pomocą instrukcji switchswitch. Na podstawie wartości zmiennej $opcja$opcja w $cowybrano$cowybrano zapamiętamy wybraną przez użytkownika opcję.

//Listing 5-5.php<HTML><HEAD><META HTTP-EQUIV="Content-

Page 48: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Type"CONTENT="text/html;charset=iso-8859-2"><TITLE>Menu w formularzu</TITLE></HEAD><BODY>

<? // Wy wietla wybran przez u ytkownika opcjś ą ż ę

if ($opcja) { # warto ci w formularzu s wpisaneś ą

switch ($opcja) {

case 'pilka': $cowybrano = 'pi ka no na'ł ż ; break;

case 'kosz': $cowybrano = 'koszykówka'; break;

case 'siat': $cowybrano = 'siatkówka'; break;

case 'nar': $cowybrano = 'narciarstwo'; break;

case 'hokej': $cowybrano = 'hokej'; break;

case 'boks': $cowybrano = 'boks'; break;

case 'inny': $cowybrano = 'inny sport'; break;

default: $cowybrano = 'niezidentyfikowana opcja'; break;

}

print ("U ytkownik wybra opcj : <B>$cowybrano</B>.<BR>"ż ł ę );

print '<BR><A HREF="4-05.php">Powrót do formularza</A>';

} else { # nie ma wpisanych danych, wy wietlamy formularzś

print '<FORM ACTION="4-05.php" METHOD=POST>';

print '<SELECT NAME="opcja">';

print '<OPTION SELECTED VALUE="">-&gt; wybierz, jak sport lubisz:';

print '<OPTION VALUE="pilka">pi ka no na'ł ż ;

print '<OPTION VALUE="kosz">koszykówka';

print '<OPTION VALUE="siat">siatkówka';

print '<OPTION VALUE="nar">narciarstwo';

print '<OPTION VALUE="hokej">hokej';

print '<OPTION VALUE="boks">boks';

print '<OPTION VALUE="inny">inny sport';

print '</SELECT>';

Page 49: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

print '<INPUT TYPE="submit" VALUE="Wy lij">'ś ;

print '</FORM>';

} ?></BODY></HTML>

Page 50: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania:

1. Utwórz program, który będzie wyświetlał formularz z możliwością wpisania trzech danych: a, b i c, po czym wyświetli rozwiązanie równania kwadratowego: ax2+bx+c=0.

2. Napisz program, który w pierwszym formularzu zbierze informacje o tym, czym zainteresowany jest użytkownik, a w drugim, jak się nazywa. Po wpisaniu wszystkich potrzebnych danych program powinien wyświetlić zebrane informacje.

3. Popraw program z ćwiczenia 5.5 tak, by nazwy opcji i wartości zostały zapisane w tablicy asocjacyjnej, a zmiana treści formularza była możliwa poprzez poprawienie jej zawartości.

Page 51: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 6

Obsługa plików

Najprostsza operacja na pliku składa się z trzech etapów:

otwarcia pliku;

zapisu lub odczytu z niego;

zamknięcia pliku.

Ćwiczenie 6.1.

Napisz program, który w podkatalogu danedane utworzy plik z Twoim imieniem i nazwiskiem.

Na początku należy utworzyć katalog dane, w którym powstanie plik. Wykorzystamy trzy funkcje operujące na plikach. fopen, fputs, fclose.

Poniżej znajduje się lista najczęściej używanych funkcji:

fopen otwarcie pliku o nazwie określonej pierwszym parametrem, w trybie określonym drugim parametrem. Na przykład r oznacza otwarcie do odczytu, a w - do zapisu. Funkcja zwraca uchwyt pliku, poprzez który możemy się do niego odwoływać

fputs pozwala na zapis tekstu, który jest drugim parametrem, do pliku określonego uchwytem w pierwszym parametrze

fclose zamyka wskazany przez uchwyt plik

fgets odczytuje z pliku wskazanego przez pierwszy argument liczbę znaków w bieżącym wierszu, określoną przez drugi argument

file_exists zwraca prawdę, gdy istnieje plik, którego nazwę podaje się jako parametr, a fałsz – w przeciwnym razie

feof zwraca prawdę, gdy osiągnięto koniec pliku, określonego pierwszym parametrem, a fałsz – w przeciwnym razie

flock ustawia blokadę pliku, którego uchwyt jest pierwszym argumentem w trybie określonym przez drugi. Na przykład tryb 2 oznacza blokowanie na wyłączność, a tryb 3 – odblokowanie

fseek przesuwa wskaźnik położenia w pliku, którego uchwyt jest pierwszym argumentem, w miejsce wskazane przez drugi

tempnam tworzy plik o unikalnej nazwie w katalogu określonym pierwszym parametrem. Początek nazwy można określić drugim parametrem. Plik zwraca nazwę utworzonego pliku

unlink usuwa plik o nazwie podanej jako parametr

file zapamiętuje całą zawartość pliku o nazwie podanej jako parametr

Page 52: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

//Listing 6-1.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Zapisujemy plik</TITLE>

</HEAD>

<BODY>

<?

// Program tworzy plik tekstowy z imieniem i nazwiskiem.

$plik = fopen ("dane/imienazwisko.txt"/ "w");

if (!($plik)) {

print "B D: Nie da si utworzy pliku.";ŁĄ ę ć

} else {

print "Plik z imieniem i nazwiskiem zosta utworzony.";ł

fputs ($plik, "Mariusz Dymek");

fclose ($plik); )

?>

</BODY>

</HTML>

Ćwiczenie 6.2.

Napisz program, który odczyta utworzony w poprzednim ćwiczeniu plik i wyświetli jego zawartość.

Do odczytania danych z tego pliku użyjemy funkcji fgetsfgets:

//Listing 6-2.php

<HTML>

Page 53: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Odczytywanie pliku</TITLE>

</HEAD>

<BODY>

<? // Program odczytuje plik tekstowy z imieniem i nazwiskiem.

$plik = fopen ("dane/imienazwisko.txt", "r");

if (!($plik)) {

print "B D: Nie da si otworzy pliku."ŁĄ ę ć ;

} else {

$wiersz = fgets ($plik, 255);

print "Dane z pliku: <B>$wiersz</B>";

fclose ($plik);

}

?>

</BODY>

</HTML>

Page 54: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 6.3.

Napisz program, który odczyta zawartość głównej strony serwisu http://republika.pl/emdik/ i wyświetli ją, zamieniając najpierw kolor tła z niebieskawego na zielony.

W celu wykonania tego ćwiczenia serwer, na którym uruchamiasz programy PHP, musi być podłączony

do Internetu, aby program mógł odczytać autorską stronę.

//Listing 6-3.php

<?

// Program odczytuje stron republika.pl/emdik ię wy wietla, //ś podmieniaj c kolory.ą

$plik = fopen ("http://republika.pl/emdik", "r");

if (!($plik))

{

print "B D: Nie da si otworzy strony http://republika.pl/emdik"ŁĄ ę ć ;

}

else

{

while (!(feof($plik)))

{

$wiersz = (fgets ($plik, 255));

$wiersz = str_replace ('#E4E7ED', '#A2FFB5', $wiersz);

$wiersz = str_replace (' SRC="','SRC="http://republika.pl/emdik', $wiersz);

print "$wiersz";

}

Page 55: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

fclose ($plik);

}

?>

Page 56: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania:

1. Napisz program, realizujący prosty licznik tekstowy, którego wskazanie jest pamiętane w pliku tekstowym. Pamiętaj o blokowaniu pliku.

2. Napisz program, który będzie wyświetlał przysłowie na dany dzień – jedno wylosowane z wielu, zapamiętanych w pliku tekstowym.

3. Napisz program, który będzie zbierał informacje o użytkowniku. Dane niech będą zbierane w pliku czasowym, którego nazwa będzie przekazywana w ukrytym polu.

Page 57: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 7

PHP dysponuje grupą funkcji, które pozwalają otwierać, wyświetlać i manipulować obrazami

w przeglądarkach WWW. Poniżej zostały omówione niektóre z tych funkcji:

imagestring umieszcza tekst na rysunku, identyfikator tekstu jest pierwszym argumentem; następne to: numer czcionki, współrzędne x i y, od których rozpoczyna się pisanie, tekst to wypisania i jego kolor

imageinterface wskazuje, czy rysunek określony pierwszym parametrem ma być wyświetlony z przeplotem; jeżeli tak, drugi argument powinien mieć wartość TRUE

imagecolortransparent dla rysunku określonego pierwszym argumentem ustala kolor, który będzie przezroczysty (stanowi on drugi argument)

createimageformgif funkcja zwraca zmienną określającą – rysunek zawarty w pliku, którego nazwa stanowi argument funkcji

imagesizex funkcja zwraca szerokość rysunku, określonego przez identyfikator – parametr

imagesizey funkcja zwraca wysokość rysunku, określonego przez identyfikator – parametr

getimagesize funkcja zwraca tablicę, zawierającą cztery pola: szerokość rysunku, jego wysokość, typ oraz łańcuch znaków do wykorzystania w znaczniku IMG

Ćwiczenie 7.1.

Utwórz program, który przygotuje i wyświetli ilustrację w formacie JPG, przy założeniu, że będzie to biała kratka na czarnym tle, o rozmiarach 100x100.

W ćwiczeniu użyto następujących funkcji:

header przesyła nagłówek, określany jako parametr

imagecreate tworzy rysunek, parametry określają jego rozmiar w pikselach a funkcja zwraca zmienną, będącą jego identyfikatorem

imagecolorallocate definiowanie koloru dla rysunku, kolejnymi argumentami są: zmienna, będąca identyfikatorem rysunku oraz składowe koloru: R, G i B (od 0 do 255). Funkcja zwraca identyfikator koloru.

imagefill wypełnienie rysunku (identyfikator jest pierwszym argumentem) kolorem stanowiącym czwarty argument. Drugi i trzeci argument to współrzędne, od których rozpoczyna się wypełnianie obszaru (jako obszar rozumiane są piksele jednego koloru, a jakikolwiek inny kolor stanowi brzeg)

imageline w rysunku, którego identyfikatorem jest pierwszym argumentem, rysuje linię o współrzędnych początku i końca podanych w kolejnych czterech parametrach; kolor linii jest określony szóstym parametrem.

imagejpg wyświetlenie ilustracji w formacie jpg; argument funkcji jest identyfikatorem ilustracji

imagegif wyświetlenie ilustracji w formacie gif argument funkcji jest identyfikatorem ilustracji

imagepng wyświetlenie ilustracji w formacie png argument funkcji jest identyfikatorem ilustracji

Całość programu przedstawia się następująco:

//Listing 7-1.php

<?

Page 58: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

// Program tworzy ilustracj z bia kratk na czarnym tle.ę łą ą

header("Content-type: image/jpeg");

$rysunek = imagecreate (100,100);

$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);

$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);

imagefill ($rysunek, 0, 0, $kolorczarny);

for ($i=1; $i<10; $i++) {

imageline ($rysunek, 10*$i, 0, 10*$i, 100, $kolorbialy);

imageline ($rysunek, 0, 10*$i, 100, 10*$i, $kolorbialy);

}

imagejpeg ($rysunek);

?>

Efektem działania jest rysunek w formacie jpg o wymiarach 100x100, przedstawiający szachownicę.

Ćwiczenie 7.2.

Utwórz podobną szachownicę jak w ćwiczeniu 7.1. Grafikę wyświetl w formacie GIF, a każde pole szachownicy wypełnij losowym kolorem.

W pętli, dla każdego ze 100 pól szachownicy, będziemy losować kolor. Jeżeli chcemy, by wartość każdej ze składowych zawierała się w przedziale 0-255, wywołanie funkcji powinno mieć następującą postać:

imagecolorallocate($rysunek, rand()%256, rand()5256, rand()5256);

Nie należy zapominać o zainicjowaniu generatora liczb pseudolosowych funkcją srandsrand.

//Listing 7-2.php

<?

// Program tworzy ilustracj z bia kratk . Ka de pole ę łą ą ż

// jest wype nione losowym kolorem.ł

header("Content-type: image/gif");

$rysunek = imagecreate (100,100);

Page 59: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);

$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);

imagefill ($rysunek, 0, 0, $kolorczarny);

for ($i=1; $i<10; $i++) {

imageline ($rysunek, 10*$i, 0, 10*$i, 100, $kolorbialy);

imageline ($rysunek, 0, 10*$i, 100, 10*$i, $kolorbialy);

}

srand(time());

for ($x=0; $x<10; $x++) {

for ($y=0; $y<10; $y++) {

$kolorlosowy = imagecolorallocate

($rysunek, rand()%256, rand()%256, rand()%256);

imagefill ($rysunek, 5+$x*10, 5+$y*10, $kolorlosowy);

}

}

imagegif ($rysunek);

?>

Tworząc własne grafiki przy pomocy modułu GDGD, można kontrolować kolor każdego piksela (pamiętając o ograniczenia każdego z formatów graficznych).

Ćwiczenie 7.3.

Napisz program, który w rysunku w formacie GIF o wymiarach 100x100 wylosuje i zakoloruje 300 punktów czerwonych i 300 czarnych (punkty w kolejnych losowaniach mogą się powtarzać.

Została wykorzystana funkcja, która określa kolor pojedynczego piksela.

Page 60: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

imagesetpixel

dla rysunku określonego przez pierwszy argument definiuje kolor piksela o współrzędnych podanych przez drugi i trzeci argument. Czwarty argument określa kolor.

//Listing 7-3.php

<?

// Program losuje 300 punktów czerwonych i czarnych i zaznacza je.

header("Content-type: image/gif");

$rysunek = imagecreate (100,100);

$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);

$kolorczerwony = imagecolorallocate ($rysunek, 255, 0, 0);

$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);

imagefill ($rysunek, 0, 0, $kolorbialy);

srand(time());

for ($i=1; $i<=300; $i++)

{

imagesetpixel ($rysunek, rand()%100-1, rand()%100-1, $kolorczerwony);

imagesetpixel ($rysunek, rand()%100-1, rand()%100-1, $kolorczarny);

}

imagegif ($rysunek);

?>

Ćwiczenie 7.4.

Napisz program, który w rysunku w formacie GIF o wymiarach 100x100 narysuje pięć okręgów czerwonych i pięć czarnych w losowych miejscach.

Nie ma funkcji rysującej okrąg, ale można skorzystać z bardziej ogólnej, która rysuje wycinek elipsy.

Page 61: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

imagearc rysuje wycinek elipsy; kolejnymi argumentami są: identyfikator rysunku, współrzędna x środka łuku, współrzędna y środka łuku, szerokość łuku, wysokość łuku, kąt początku, kąt końca, kolor.

Jeżeli w wywołaniu funkcji szerokość i wysokość będą sobie równe, a łuk będzie pełen (od 0 do 360 stopni), to rysowany łuk okaże się okręgiem.

//Listing 7-4.php

<?

// Program tworzy ilustracj z pi cioma czerwonymi i pi cioma ę ę ę

// czarnymi okr gami.ę

header("Content-type: image/gif");

$rysunek = imagecreate (100,100);

$kolorbialy = imagecolorallocate ($rysunek, 255, 255, 255);

$kolorczerwony = imagecolorallocate ($rysunek, 255, 0, 0);

$kolorczarny = imagecolorallocate ($rysunek, 0, 0, 0);

imagefill ($rysunek, 0, 0, $kolorbialy);

srand(time());

for ($i=1; $i<=5; $i++) {

imagearc ($rysunek, rand()%100-1, rand()%100-1,

20, 20, 0, 360, $kolorczerwony);

imagearc ($rysunek, rand()%100-1, rand()%100-1,

20, 20, 0, 360, $kolorczarny);

}

imagegif ($rysunek);

?>

Ćwiczenie 7.5.

Napisz program, który wyświetli formularz pozwalający wpisać liczbę. Po jej wpisaniu wyświetli graficzną prezentację wpisanej liczby.

Page 62: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Liczbę należy konstruować z poszczególnych cyfr. W katalogu cyfry należy umieścić wszystkie cyfry w formacie GIF GIF o rozmiarze 15x20 pikseli.

Wykorzystane są tutaj trzy nowe funkcje:

imagecreatetromgif tworzy rysunek na podstawie już istniejącego; argumentem jest nazwa pliku; funkcja zwraca identyfikator utworzonego rysunku

imagecopyresized kopiuje do rysunku określonego przez pierwszy argument inny – określony przez drugi; następne argumenty określają: współrzędne x i y miejsca, w którym należy rysunek umieścić, współrzędne x i y oraz rozmiar dx i dy w rysunku docelowym i wielkość ddx i ddy w rysunku źródłowego (pozwalające na przeskalowanie)

imagedestroy likwiduje identyfikator rysunku, jednocześnie zwalniając pamięć z nim związaną

//Listing 7-5.php

<?

// Program wy wietla formularz, pozwalaj cy wpisa liczb .ś ą ć ę

//Je eli liczba jest wpisana, wy wietla j w postaci graficznejż ś ą

function printliczba ($numer) {

// funkcja wy wietla liczb w postaci grafiki, korzystaj cś ę ą

// z grafik - cyfr, zawartych w katalogu cyfry.

$liczbacyfr=1; $l = $numer;

while ($l >= 10) {

$liczbacyfr++;

$l=floor($l/10);

}

header("Content-type: image/gif");

$rysunek = imagecreate (15*$liczbacyfr,20);

for ($i=$liczbacyfr; $i>=1; $i--) {

$cyfra = floor($numer/pow(10,$i-1));

$numer = $numer % pow(10,$i-1);

$rysunekcyfra = imagecreatefromgif ("cyfry/$cyfra.gif");

imagecopyresized

($rysunek,$rysunekcyfra,($liczbacyfr-$i)*15,0,0,0,15,20,15,20);

imagedestroy ($rysunekcyfra);

Page 63: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

}

imagegif ($rysunek);

}

if ($liczba>0) { # jest wpisana jaka warto w formularzuś ść

printliczba ($liczba);

} else { # nie ma wpisanych danych, wy wietlamy formularzś

print '<HTML>';

print ' <HEAD>';

print ' <META HTTP-EQUIV="Content-Type" CONTENT="text/html; ';

print ' charset=iso-8859-2">';

print ' <TITLE>Liczba graficznie</TITLE>';

print ' </HEAD>';

print ' <BODY>';

print ' <FORM ACTION="5-05.php" METHOD=GET>';

print ' <INPUT TYPE="text" NAME="liczba">';

print ' <INPUT TYPE="submit" VALUE="Wy lij">'ś ;

print ' </FORM>';

print ' </BODY>';

print '</HTML>';

}

?>

Do graficznej prezentacji danych nieoceniona jest funkcja, która rysuje wypełniony prostokąt.

imagefilledrectangle rysuje wypełniony prostokąt; argumentami są: identyfikator rysunku, współrzędne xx i yy lewego górnego rogu, współrzędne xx i yy prawego dolnego rogu oraz kolor

Page 64: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania

1. Napisz skrypt, który wypełni tablicę dziesięcioma losowymi liczbami z zakresu 0-9. Następnie zilustruj wylosowane wartości na wykresie słupkowym.

2. Napisz skrypt, który utworzy ilustrację (o rozmiarach 80x600). Zapełnij ją wieloma różnokolorowymi kwadratami. Narysuj też linię i wypisz jakiś tekst. Wyświetl ilustrację z przeplotem.

3. Napisz skrypt, który utworzy ilustrację z czerwonym kółkiem na białym tle. Spraw, by biały kolor był przezroczysty. Wyświetl ilustrację na stronie HTML, która posiada tło innego niż biały koloru.

4. Dla istniejącego rysunku wyświetl go w dokumencie HTML, automatycznie określając jego szerokość i wysokość, a także nadając atrybuty WIDTH i HEIGHT.

5. Napisz skrypt, który przeskalowuje ilustrację. Porównaj jakość takiej ilustracji z przeskalowaną za pomocą programu graficznego.

Page 65: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 8

Baza danych jest pewnym zbiorem informacji. MySQL jest systemem zarządzania bazą danych (SZBDSZBD),

który umożliwia w łatwy sposób dostęp do informacji i ich modyfikację.

Podstawową jednostką organizacyjną w bazie danych jest tabela. Można ją sobie wyobrazić jako tablica,

w której wierszachwierszach są umieszczane rekordyrekordy, opisujące pojedyncze obiektyobiekty. Poszczególne kolumnykolumny

tabeli opisują pola danego rekordu, które zawierają odpowiednie dotyczące go informacje.

Administracja bazą danych jest łatwa dzięki programowi PHPMyAdminPHPMyAdmin – napisanemu w PHPPHP systemowi

administracji bazą danych.

Ćwiczenie 8.1.

Uruchom program PHPMyAdmin. Utwórz nową bazę danych o nazwie cwicz, a w niej tabelę ksiazkatelefoniczna.

Aby uruchomić program PHPMyAdmin, połącz się z adresem http://localhost/phpmyadmin (powinieneś

mieć już uruchomiony serwer Apache i MySQL). Ukaże się program okienka administracyjnego.

Page 66: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 8.1. Panel administracyjny PHPMyAdmin.

Po utworzeniu bazy danych pojawi się ona w lewej ramce.

Page 67: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 8.2. Efekt po utworzenia tabeli ksiazkatelefoniczna.

Ćwiczenie 8.2.

Korzystając z programu PHPMyAdmin, sprawdź zawartość tabeli książkatelefoniczna.

Page 68: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 8.3. Zawartość tabeli ksiazkatelefoniczna.

Page 69: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 8.3.

Za pomocą PHP połącz się z bazą danych MySQL. Doprowadź do tego, by dane z tabeli ksiazkatelefoniczna zostały wyświetlone na stronie WWW.

Rys. 8.4. Skrypt wyświetlający zawartość tabeli ksiazkatelefonicznaksiazkatelefoniczna.

Page 70: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania

1. Korzystając z programu PHPMyAdmin, wpisz dane do tabeli ksiazkatelefoniczna.

2. Uzupełnij program z ćwiczenia 8.3. o opcję kasowania danych.

3. Popraw skrypt z zadania 2 tak, by umożliwiał również dodawanie nowych rekordów.

4. Napisz program, który umożliwia dodawanie, usuwanie i również kasowanie nowych rekordów.

Page 71: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Laboratorium 9

Ćwiczenie 9.1.

Utwórz licznik graficzny, który zlicza odwiedziny na stronach. Dla każdej ze stron powinno następować osobne zliczanie. Informacje mają być przechowywane w bazie danych MySQL.

Kod skryptu powinien być następujący:

//Listing 9-1.php

<?

// Licznik graficzny do wykorzystania w dokumentach HTML i PHP,

// dane pami tane w bazie danych.ę

function printliczba ($numer) {

// funkcja wy wietla liczb w postaci grafiki,ś ę

// korzystaj c z grafik - cyfr, zawartych w katalogu cyfry.ą

$liczbacyfr=1; $l = $numer;

while ($l >= 10) {

$liczbacyfr++;

$l=floor($l/10);

}

header("Content-type: image/gif");

$rysunek = imagecreate (15*$liczbacyfr,20);

for ($i=$liczbacyfr; $i>=1; $i--) {

$cyfra = floor($numer/pow(10,$i-1));

Page 72: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$numer = $numer % pow(10,$i-1);

$rysunekcyfra = imagecreatefromgif ("cyfry/$cyfra.gif");

imagecopyresized

($rysunek,$rysunekcyfra,($liczbacyfr-$i)*15,0,0,0,15,20,15,20);

imagedestroy ($rysunekcyfra);

}

imagegif ($rysunek);

}

if (($GLOBALS["SERVER_NAME"] != 'localhost') ||

($GLOBALS["HTTP_REFERER"] == '')) {

printliczba (0); exit;

}

$nazwapliku = addslashes(str_replace ('http://'.$GLOBALS["SERVER_NAME"],'',$GLOBALS["HTTP_REFERER"]));

$nazwapliku = addslashes($nazwapliku);

mysql_connect ("localhost", "root", "") or

die ("Nie mo na po czy si z MySQL"ż łą ć ę );

mysql_select_db ("cwicz") or

die ("Nie mo na po czy si z baz cwicz"ż łą ć ę ą );

$query = "SELECT liczba FROM liczniki ".

"WHERE strona = '$nazwapliku';";

$wynik = mysql_query ($query);

$rekord = mysql_fetch_array ($wynik);

$ile = $rekord[0];

Page 73: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

if ($ile>0) {

$query = "UPDATE liczniki ".

"SET liczba = liczba+1 ".

"WHERE strona='$nazwapliku';";

} else {

$query = "INSERT INTO liczniki (strona, liczba)".

"VALUES ('$nazwapliku', '1');";

}

$wynik = mysql_query ($query);

printliczba ($ile+1);

?>

Ćwiczenie 9.2.

Napisz aplikację korzystającą z baz danych, aby pozwalała użytkownikom na nadsyłanie sugestii oraz na głosowanie jakie imię należy nadać Twojemu dziecku. Należy wykorzystać bazę danych MySQL.

Poniżej przedstawiono strukturę tabeli imionaimiona:

CREATE TABLE imiona (

imie varchar(30) NOT NULL,

glosy int(4),

PRIMARY KEY(imie)

);

Powyższe polecenie zostało zapisane w formacie akceptowanym przez MySQL i można go

bezpośrednio użyć do stworzenia tabeli. Polecenie to definiuje pole tekstowe oraz pole przechowujące

liczby całkowite. Pole tekstowe tabeli będzie używane do przechowywania sugerowanego imienia

dziecka, natomiast pole całkowite będzie przechowywało ilość głosów złożonych na to imię. Kluczem

Page 74: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

podstawowym tabeli jest pole imięimię, a to oznacza, że jego wartości będą unikalne (czyli w tabeli nie

będzie mogło być dwóch rekordów o takiej samej wartości pola imięimię).

Zakłada się, że aplikacja będzie wykonywała kilka rzeczy. Powinna posiadać zabezpieczenie

uniemożliwiające osobie oddawanie większej ilości głosów w krótkich odstępach czasu. Zrealizować to

można wykorzystując cookies cookies o czasie ważności do końca bieżącej sesji. Aplikacja będzie również

pokazywała mały wykres słupkowy, prezentujący procentową ilość głosów oddanych na poszczególne

imiona. Wykres ten będzie tworzony przy użyciu niebieskiego obrazka typu GIF GIF o wielkości 1 piksela,

który zostanie odpowiednio przeskalowany przy użyciu atrybutu WIDTH WIDTH oraz HEIGHT HEIGHT znacznika <IMG><IMG>.

Innym rozwiązaniem byłoby wykorzystanie wbudowanych funkcji graficznych PHP PHP do narysowania

bardziej wymyślnego wykresu.

Pozostałe części aplikacji to raczej oczywisty kod tworzący formularz i zapewniający obsługę

bazy danych. Używane są także inne rozwiązania upraszczające kod aplikacji. Dla przykładu, zamiast

odczytywać wszystkie głosy oddane na poszczególne imiona (w celu uzyskania sumarycznej ilości

głosów koniecznej do obliczenia procentowej ilości głosów oddanych na poszczególne imiona) używamy

wbudowanej funkcji bazy MySQL MySQL o nazwie SUMSUM. Część kodu odpowiedzialna za wyświetlenie

wszystkich imion wraz z odpowiadającymi jej wartościami procentowymi jest dość skomplikowana.

Sprowadza się ona do pobierania wartości z bazy danych i przesyłania (w odpowiednich momentach)

poprawnych znaczników tabel HTMLHTML.

Poniżej przedstawiony został pełny kod aplikacji:

//Listing 9-2.php

<?

if($glos && $juz_glosowano) SetCookie("juz_glosowano","1");

?>

<HTML>

<HEAD>

<TITLE>Jak nazwa dzieckoć </TITLE>

</HEAD>

<BODY>

<H3>Jak nazwa dzieckoć </H3>

<FORM ACTION="dziecko.php3" METHOD="POST">

Sugeruj : ę <INPUT TYPE="text" NAME=nowe_imie><P>

Page 75: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<INPUT TYPE="submit" VALUE="Przeslij sugesti i /lub g os"ę ł >

<?

mysql_pconnect("localhost","","");

$db="test";

$tabela="imiona";

if($nowe_imie)

{

if(!mysql_db_query($db,"insert into $tabela values ('$nowe_imie',0)"))

{

echo mysql_errno().":";

echo mysql_error()."<BR>";

}

}

if($glos && $juz_glosowano)

{

echo "<FONT COLOR=#FF0000>Hej! Ty ju g osowa e .<BR>"ż ł ł ś ;

echo "Twój g os jest niewa ny.</FONT><P>\n"ł ż ;

}

else if($glos)

{

if(!mysql_db_query($db,"update $tabela set glosy=glosy+1 where imie='$glos'"))

{

echo mysql_errno().": ";

echo mysql_error()."<BR>";

}

}

Page 76: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$wyniki = mysql_db_query($db, "select sum(glosy) as suma from $tabela");

if($wyniki) {

$suma=(int) mysql_result($wyniki,0,"suma");

mysql_free_result($wyniki);

}

$wyniki=mysql_db_query($db,"select * from $tabela order by glosy DESC");

echo"<TABLE BORDER=0><TR><TH>G os</TH>"ł ;

echo"<TH>Imi </TH><TH COLSPAN=2>G osy</TH>"ę ł ;

echo"<TR>\n";

while($wiersz=mysql_fetch_row($wyniki))

{

echo "<TR><TD ALIGN=center>";

echo"<INPUT TYPE=radio NAME=glos";

echo "VALUE='$wiersz[0]'></TD><TD>";

echo $wiersz[0]."</TD><TD ALIGN=right>";

echo $wiersz[1]."</TD><TD>";

if($suma && (int)$wiersz[1])

{

$per=(int)(100 * $wiersz[1]/$suma);

echo "<IMG SRC=punkt.gif HEIGHT=12";

echo "WIDTH=$per> $per %</TD>";

}

echo "</TR>\n";

}

Page 77: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

echo "</TABLE>";

mysql_free_result($wyniki);

?>

<INPUT TYPE="submit" VALUE="Prze lij sugestie i/lub g os"ś ł >

<INPUT TYPE="reset">

</FORM>

</BODY>

</HTML>

Rys. 9.1. Efekt działania skryptu sondy.

Page 78: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Ćwiczenie 9.3.

Utwórz prostą księgę gości, w której dane będą pamiętane w bazie danych.

Na początku należy rozpocząć od utworzenia tabeli, w której będą pamiętane wpisy do księgi

gości. Najlepiej posłużyć się skryptem PHPMyAdminPHPMyAdmin.

Tabela ksiegagosciksiegagosci będzie miała trzy pola. W pierwszym, datadata, (typu DATETIMEDATETIME) będzie pamiętana

data wpisu (na jej podstawie zdołamy chronologicznie uporządkować wpisy). Pozostałe dwa pola (osobaosoba

i wpiswpis) to zwykłe pola tekstowe, w których będziemy pamiętać, kto i co wpisał do księgi gości.

Każdy wpis do księgi będzie osobnym rekordem w bazie danych.

//Listing 9-3.php

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Prosta ksiega go ci dzia aj ca w oparciu o baz danych</TITLE>ś ł ą ę

</HEAD>

<BODY>

<?

//Skrypt realizuje zapis informacji w ksi dze go ci w bazie danych.ę ś

mysql_connect ("localhost", "root", "") or

die ("Nie mo na po czy si z MySQL"ż łą ć ę );

mysql_select_db ("cwicz") or

die ("Nie mo na po czy si z baz cwicz"ż łą ć ę ą );

$osoba = addslashes(nl2br(htmlentities ($osoba)));

$wpis = addslashes(nl2br(htmlentities ($wpis)));

if ($osoba && $wpis) {

Page 79: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

// s informacje do wpisania do ksi gi go cią ę ś

$query = "INSERT INTO ksiegagosci (data, osoba, wpis) ".

"VALUES (now(), '$osoba', '$wpis');";

$wynik = mysql_query ($query);

}

// je eli jest ju ksi ga, trzeba j wypisa , niezale nie od tego,ż ż ę ą ć ż

// czy jest nowy wpis.

$wynik = mysql_query("SELECT * FROM ksiegagosci ORDER BY data DESC;");

while ($rekord = mysql_fetch_array ($wynik)) {

print "<DL><DT>".stripslashes($rekord[2])."<DD><B>".

stripslashes($rekord[1]).",</B>

<I>".$rekord[0]."</I></DL>\n";

$sawpisy = 1;

}

if ($sawpisy) { print "<HR>"; }

?>

<!-- Na dole jest formularz z mo liwo ci dopisania si do ksi gi-->ż ś ą ę ę

<FORM METHOD="POST">

<TABLE>

<TR><TD>Osoba:</TD><TD><INPUT TYPE="text" NAME="osoba"></TD></TR>

<TR><TD>Wpis:</TD><TD>

<TEXTAREA NAME="wpis" COLS=45 ROWS=4 wrap="VIRTUAL"></TEXTAREA>

</TD></TR>

</TABLE>

Page 80: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<INPUT TYPE="submit" VALUE="wy lij"ś >

</FORM>

</BODY>

</HTML>

Rys. 9.2 Tworzenie tabeli ksiegagosciksiegagosci.

Ćwiczenie 9.4.

Utwórz w bazie danych tabelę pamiętającą newsy. Wypełnij ją kilkunastoma informacjami. Następnie napisz skrypt, który pozwoli na ich wyświetlanie i nawigację pomiędzy nimi, a także na ich zamieszczanie na stronie HTML.

Tabelę, w której będą pamiętane informacje, nazwiemy newsnews. Do jej utworzenia należy użyć

PHPMyAdminPHPMyAdmin.

Page 81: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Rys. 9.3. Zakładanie tabeli newsnews.

Pierwszym z siedmiu pól tabeli jest numer newsa (o nazwie nrnr). Należy wybrać dla niego opcję

auto_incrementincrement w kolumnie ExtraExtra, a także zaznaczyć cechy IndexIndex i UniqueUnique.

Kolejne pola są następujące: data informacji, tytuł, krótka treść do zamieszczenia w spisie, pełna

treść i osoba, która ją wpisała. Ostatnie pole (ok.) będzie ono znacznikiem, czy informacja została

zaakceptowana przez administratora serwisu (i w związku z tym może zostać wyświetlona).

Po utworzeniu tabeli wypełnij ją danymi, również używając skryptu PHPMyAdmin. Nie wpisuj

żadnej wartości w pole nrnr. Ponieważ wybraliśmy auto_incrementincrement, pole to wypełni się samo

odpowiednim indeksem.

//listing 9-4html.php

<?

// Skrypt wy wietla nag ówki czterech najnowszych informacji,ś ł

// do wykorzystania mechanizmem SSI.

mysql_connect ("localhost", "root", "") or

die ("Nie mo na po czy si z MySQL"ż łą ć ę );

mysql_select_db ("cwicz") or

die ("Nie mo na po czy si z baz cwicz"ż łą ć ę ą );

Page 82: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$wynik = mysql_query ("SELECT * FROM news WHERE ok=1 ".

"ORDER BY nr DESC LIMIT 0,4;");

while ($rekord = mysql_fetch_array ($wynik)) {

print "<P><B><A HREF=\"6-09.php?nr=".$rekord[0]."\">";

print $rekord[2]."</A></B><BR>".$rekord[3]."</P>";

print "<P ALIGN=RIGHT><I>".$rekord[1]."</I></P>\n";

}

?>

Jeżeli dla plików HTML-owych masz już włączone SSI, napisanie strony nie będzie trudne. Poniżej jest

zamieszczona przykładowa strona główna, wykorzystująca powyższy skrypt. Jej oryginalna treść zawiera

dość dużo tekstu – wypełniacza. Dla zmniejszenia jego objętości część tekstu została pominięta.

//Listing 9-4.htm

<HTML>

<HEAD>

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Strona g ówna serwisu</TITLE>ł

<STYLE>

h2 {font-family: Arial, Helvetica, sans-serif; font-size: 12pt}

p {font-family: Arial, Helvetica, sans-serif; font-size: 9pt}

</STYLE>

</HEAD>

<BODY>

<TABLE CELLPADDING=10><TR>

<TD VALIGN=TOP WIDTH="33%">

Page 83: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<P>Troska wszystkich obywateli, a szczególnie zabezpieczenie informacyjne naszej dzia alno ci w znacz cy sposób wp ywa na ł ś ą łrozwój modelu rozwoju.</P>

<P>Bezpo redni wzrost wiadomo ci administracyjnej musi spowodowa ś ś ś ćweryfikacj kierunków post powego wykonania.</P>ę ę

</TD>

<TD VALIGN=TOP WIDTH="33%">

<H2>Newsy:</H2>

<!--#include virtual="6-09-2html.php" -->

<P ALIGN=RIGHT><A HREF="6-09.php">wszystkie newsy</A></P>

</TD>

<TD VALIGN=TOP WIDTH="33%">

<P>Prawny aspekt zagadnienia musi spowodowa weryfikacj ć ęprzepisów karno-skarbowych.</P>

<P>Kompleksowa strategia rozwoju przedstawia interesuj c prób ą ą ęsprawdzenia kierunków post powego wykonania oraz musi spowodowa ę ćweryfikacj odpowiednich warunków aktywizacji.<P>ę

</TD>

</TR></TABLE>

</BODY>

</HTML>

Może się zdarzyć, że ktoś będzie chciał, aby główna strona serwisu (albo inna, zawierająca

newsy) nie była dokumentem HTMLHTML, lecz skryptem PHP. W tej sytuacji można utworzyć funkcję, która

wykonuje to, co nasz skrypt i używać jej tam, gdzie powinny znaleźć się newsy.

Pozostało napisać jeszcze skrypt, który wyświetla pojedynczego newsa lub listę wszystkich wiadomości,

aby łącza zaprezentowane na głównej stronie zaczęły działać.

//Listing 9-4.php

<HTML>

<HEAD>

Page 84: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

<META HTTP-EQUIV="Content-Type"CONTENT="text/html;charset=iso-8859-2">

<TITLE>Newsy</TITLE>

</HEAD>

<BODY>

<?

// Skrypt wy wietla news o podanym w parametrze nr numerze, a je eliś ż

// go nie podano - wszystkie newsy.

mysql_connect ("localhost", "root", "") or

die ("Nie mo na po czy si z MySQL"ż łą ć ę );

mysql_select_db ("cwicz") or

die ("Nie mo na po czy si z baz cwicz"ż łą ć ę ą );

if ($nr>0) {

// wy wietlamy pojedynczego newsaś

$wynik = mysql_query ("SELECT * FROM news WHERE nr=$nr AND ok=1;");

if ($rekord = mysql_fetch_array ($wynik))

{

print "<H2>".$rekord[2]."</H2><P>".$rekord[4]."</P>";

print "<P ALIGN=RIGHT><I>".$rekord[5].", ".$rekord[1]."</I></P>";

}

else

{ // nie ma newsa o takim numerze

print "Nie ma newsa o takim numerze\n";

}

print "<P><A HREF=\"6-09.php\">Wszystkie newsy &gt;&gt;</A></P>";

}

else { // nie ma numeru -- wy wietlamy ca listś łą ę

print "<H2>Newsy</H2>";

Page 85: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

$wynik = mysql_query ("SELECT * FROM news WHERE ok=1 ".

"ORDER BY nr DESC;");

while ($rekord = mysql_fetch_array ($wynik)) {

print "<P><B><A HREF=\"6-09.php?nr=".$rekord[0]."\">".$rekord[2];

print "</A></B><BR>".$rekord[3]."</P>";

print "<P ALIGN=RIGHT><I>".$rekord[5].", ".$rekord[1]."</I></P>";

}

}

?>

</BODY>

</HTML>

Page 86: INSTRUKCJE DLA STUDENTÓW - dymek.eudymek.eu/web-development/php/php_podst.pdf · Technologia języka skryptowego PHP 2. Moduł integrujący PHP4 i MySQL 3. Administracja i zarządzanie

Zadania

1. Utwórz skrypt, który połączy się ze wskazaną bazą danych.

2. Utwórz licznik, który będzie działał zarówno ze skryptami PHP, jak i z dokumentami HTML. Licznik powinien oddzielnie zliczać liczbę odwiedzin dla każdego z nich. Dane powinny być pamiętane w bazie danych MySQL.

3. Wyposaż skrypt z ćwiczenia 9.4. (listing 9-4.php) w wyszukiwarkę newsów.

4. Napisz skrypt, który umożliwi użytkownikom dopisanie własnych newsów.