ZESPÓŁ SZKÓŁ MECHANICZNO-ELEKTRYCZNYCH
W TARNOWIE
PRACA DYPLOMOWA
Witryna internetowa
gazetki szkolnej
„Zamiast ZAMIAST”
Łukasz Job
Marcin Walaszek
PROMOTOR:
mgr inż. Maria Frączek
Tarnów 2002/2003
Spis Treści
WSTĘP
Głównym celem naszej pracy było umieszczenie w internecie obrazu z kamery. Początkowo miał to być obraz holu przy sklepiku szkolnym. W efekcie przede wszystkim, ze względu na problemy sprzętowe, zdecydowaliśmy, że będzie to widok z okna redakcji gazetki szkolnej, zwłaszcza, że obraz ten miał być umieszczony na stronie elektronicznej wersji gazetki.
Aby zrealizować nasz cel, należało wykonać następujące elementy pracy:
Zmodernizować stronę gazetki „Zamiast ZAMIAST”, którą stworzyliśmy w ubiegłym roku. Poprzednia wersja pisana była w HTMLu. Nowa wersja strony ma zmienioną nieco formę graficzną i napisana jest w PHP z wykorzystaniem baz danych w SQLu.
Zakupić, zainstalować i skonfigurować kamerę internetową. Do pracy wybraliśmy kamerę WebCam firmy Creative. Przy jej wyborze sugerowaliśmy się głownie ceną. Początkowy projekt zakładał, iż kamera będzie podpięta do komputera, na którym miał być zainstalowany system operacyjny Linux. Jednakże z powodu braku sterowników urządzenia pod ów system, zmuszeni zostaliśmy do zmienienia systemu na Windows2000 Professional.
CYFROWE KAMERY INTERNETOWE
PODZIAŁ KAMER
Kamery:
kamery internetowe
kamery telewizji przemysłowej
kamery profesjonalne i zastosowań specjalnych
Kamery internetowe
Kamery internetowe jak sama nazwa wskazuje służą głównie do szeroko pojętej publikacji obrazu w sieciach komputerowych (LAN/WAN/Internet). Ogromną obecnie popularność zawdzięczają przede wszystkim cenie - niestety, nie idącej w parze z jakością. Popularne magazyny komputerowe zazwyczaj w każdym z wydań opisują nowe modele, możliwe do podłączenia zarówno przez USB, karty TV czy inne, bardziej egzotyczne interfejsy. Typowe parametry kamer - praca w systemie PAL i wydajność w trybie sprzętowym około 20-25 klatek na sekundę (FPS - Frames Per Second) zazwyczaj zostają zachowane; jednakże zarówno jakość optyki jak i elektroniki pozostawia wiele do życzenia. Niektóre modele udostępniają możliwość poprawienia jakości obrazu - głównie dzięki podniesieniu rozdzielczości, co jednak odbija się na prędkości przesyłanych danych i nawet w trybie nagrywania ciągłego ciężko uzyskać więcej niż kilka FPS.
Ponadto kamery internetowe pozbawione są mnóstwa opcji występujących w wyższym segmencie jakościowym. Często jedynym parametrem możliwym do zmiany po stronie kamery jest ostrość. Trudno wówczas mówić o możliwości wszechstronnego zastosowania takiej kamery.
Jedną z niewielu zalet kamer internetowych jest sposób podłączania, eliminujący konieczność konwersji sygnału cyfrowego na analogowy i z powrotem. Korzystanie z USB czy wejść cyfrowych kart telewizyjnych umożliwia również pozbycie się dodatkowego przewodu zasilającego - trzeba jednak pamiętać o ograniczonym zasięgu; może nie w przypadku USB, ale w przypadku interfejsów własnych producentów kart TV może się zdarzyć, że wykonanie przejściówki czy przedłużacza będzie bez odpowiedniej dokumentacji niemożliwe.
Należy w tym miejscu wspomnieć o internetowych kamerach „wolnostojących”. Kamery takie posiadają zintegrowany serwer WWW, udostępniający obraz bezpośrednio w sieci komputerowej. Zalety są oczywiste - nie potrzeba w takiej sytuacji komputera. Niestety - zajęty jest jeden z adresów IP, ponadto z tak przygotowanym obrazem ciężko zrobić cokolwiek więcej - chociażby nagranie wymaga mimo wszystko komputera.
Kamery telewizji przemysłowej
Kamery telewizji przemysłowej to zupełnie inna klasa kamer. Mimo podobnego co kamery internetowe przedziału cenowego dla kamer najniższej jakości oferują znacznie więcej możliwości, a od pewnego pułapu również wyższą jakość obrazu. Stosowane powszechnie we wszelkiego rodzaju instalacjach ochronno-zabezpieczeniowych są chyba najczęściej używanymi kamerami. Kamery te są łatwe w instalacji a ich parametry ( i - przede wszystkim - różnorodność ) pozwalają na zastosowanie w prawie każdych warunkach.
Kamery profesjonalne
Użycie ich ogranicza się właściwie do zastosowań specjalnych, w których dużą rolę odgrywa jakość obrazu, np. podczas identyfikacji osób.
PODSTAWOWE PARAMETRY KAMER INTERNETOWYCH
rodzaj matrycy - jest podstawową częścią elementu światłoczułego. Rodzaj matrycy ma wpływ na jakość tworzonego obrazu: ruchomego jak i pojedynczych zdjęć. Ma wpływ na takie cechy obrazy jak: ostrość krawędzi, naturalność barw, geometria. W kamerach internetowych stosowane są trzy podstawowe rodzaje matryc: CCD, CMOS, Progressive CCD, która wyróżnia się jakością wśród dwóch pozostałych.
liczba elementów matrycy - określa liczbę zastosowanych elementów światłoczółych w czujniku. Liczba ta ma zazwyczaj wartość od 100 do 350 tyś. Ma zasadniczy wpływ na osiągalne rozdzielczości i jakość otrzymywanego obrazu.
rozdzielczość przechwytywania wideo - [piksele], - określa z jaką rozdzielczością w pikselach jest przetwarzany i transmitowany do komputera obraz ruchomy. Parametr ten ma wpływ na ostrość i dokładność obrazu. Pozostaje w bezpośredniej zależności z innym istotnym parametrem: liczbą klatek (pojedynczych obrazów statycznych) na sekundę. Im większa rozdzielczość przechwytywania wideo tym mniejsza liczba klatek na sekundę otrzymywanego obrazu ruchomego. Typowe wartości parametru to: 352x288, 360x240, 320x240, 176x144, 180x120, 640x480.
rozdzielczość wykonywanych zdjęć - [piksele] - określa z jaką rozdzielczością w pikselach jest przetwarzany i transmitowany do komputera pojedynczy obraz statyczny, w formie zdjęcia. Typowe wartości parametru to: 352x288, 640x480.
złącze - określa rodzaj złącza przez jakie komputer komunikuje się z kamerą i przesyła otrzymane obrazy. Jest w większości przypadków łącze USB, choć zdarzają się wyjądki: złącze IPT.
mikrofon - Część kamer internetowych ma wbudowany wewnętrznie mikrofon. Bywają też rozwiązania z mikrofonem zewnętrznym. Część producentów nie daje możliwości uzyskania sygnału audio. Trzeba zaznaczyć, że wbudowane mikrofony nie mają wysokiej jakości. Dają możliwość przesyłania sygnału mowy z zadawalającą jakością.
prędkość zapisu - [fps] - jest parametrem określającym prędkość chwytania obrazów ruchomych. Określa się ją jako ilość obrazów statycznych o danej rozdzielczości na sekundę. Jest to więc wielkość silnie zależna od rozdzielczości chwytanego obrazu. Im większa jest wartość predkości chwytania, tym obraz ruchomy jest płynniejszy. Oko ludzkie jest w stanie wyłapać do kilkunastu obrazów na sekundę, dlatego dla większej prędkości od kilkunastu fps obraz ruchomy jest dla człowieka "płynny".
sterowniki - ważnym elementem zestawu do nagrywania sekwencji wizyjnych jest zbiór sterowników umożliwiających zainstalowanie kamery pod danym systemem operacyjnym. Większość kamer posiada sterowniki dla Windows'a 98. Rzadsze są wersje pod Windows 95, Windows NT, czy Windows2000. Niektórzy producenci dodają sterowniki pod MacOS 8,5, czy 9. Konieczność posiadania sterowników jest więc podstawowym wymaganiem przy zakupie kamery internetowej.
KRYTERIA OCENY JAKOŚCI KAMER:
Jakość obrazu. Pierwszym kryterium jakości kamery jest subiektywna jakości obrazu. Przy jej wykonywaniu bierze się pod uwagę takie czynniki jak:
jasność obrazu i zdolność adaptacji do różnych warunków oświetlenia
wierność nasycenia
naturalność barw, czyli prawidłowe odwzorowanie kolorów
proporcjonalność kształtów, czyli zachowanie geometrii obrazu
zakrzywienia na rogach klatek
ostrość krawędzi na granicy barwnych pasów
Ocena ta jest subiektywna i jest pewną proporcją w stosunku do innych testowanych kamer
Wydajności przechwytywania sekwencji wideo. Drugim kryterium oceny kamer jest sprawdzenie wydajności przechwytywania sekwencji wideo. Mierzy się bezwzględną wartość klatek na sekundę dla zadanej rozdzielczości obrazu. Ocena ta daje w dużej mierze pogląd na jakość zastosowanych algorytmów przetwarzania obrazu w kamerze. Z reguły są to dwa pomiary:
dla rozdzielczości średniej, lub niskiej (np.:160x120 pikseli)
dla rozdzielczości maksymalnej dla sekwencji wizyjnych (np.: 640x480 pikseli, 352x288 pikseli)
Sterowniki i oprogramowanie. Trzecim kryterium oceny kamer internetowych jest jakość oprogramowania i dostępność sterowników dla różnych systemów operacyjnych. Obecnie sterowniki oferowane są jedynie do Windows i to głównie Windows 98. Oprogramowanie, które oferują producenci daje możliwości:
ustawienie parametrów rejestrowanego obrazu wideo,
łapania sekwencji ruchomych, jak i obrazów statycznych,
obróbki obrazów statycznych,
obróbki obrazów ruchomych,
łączenia różnych sekwencji ruchomych ze sobą,
umieszczanie zdjęć, lub sekwencji ruchomych na stronach www,
wideokonferencji,
wideopoczty,
wideotelefoni,
detekcji ruchu
nagrywania klatek w zadanych odstępach czasu.
Akcesoria. Czwartym kryterium oceny kamer może być dostępność akcesoriów, które wspomagają prace z urządzeniem, takie jak: mikrofon, statyw, uchwyt mocujący, zasłona na obiektyw, gwint do statywu i celownika optycznego, możliwość zmiany obiektywu.
BUDOWA CYFROWEJ KAMERY INTERNETOWEJ
Typowa kamera internetowa składa się z trzech podstawowych elementów :
obiektywu,
elementu światłoczułego (CCD lub CMOS),
elektroniki, odpowiedzialnej między innymi za konwersję obrazu (np. do sygnału `composite'), dodatkową obróbkę danych, autokorekcję jasności, ostrości itp.
Oczywiście im lepsza jakość każdego z elementów, tym lepsza kamera.
Technologia CCD i CMOS
CCD
Jednym z najczęściej spotykanych sensorów optycznych, stosowanych do cyfrowej rejestracji obrazu, jest matryca złożona z elementów CCD - Charge Coupled Device. Pojedynczy światłoczuły element CCD wyzwala ładunek elektryczny pod wpływem padających na niego fotonów. Wielkość tego ładunku jest proporcjonalna do natężenia światła (ilości fotonów). Specjalny układ odczytuje rzędami wartości natężenia prądu wyzwalanego w poszczególnych elementach CCD. Otrzymane w ten sposób analogowe dane zostają wzmocnione i poddane konwersji do postaci cyfrowej, a często nawet dodatkowo kompresowane. W ten sposób uzyskiwana jest informacja o jasności danego obrazu. Barwa poszczególnych punktów obrazu ustalana jest na podstawie analizy podstawowych kolorów składowych: czerwonego, zielonego i niebieskiego. Każdemu elementowi matrycy CCD przypisany zostaje jeden z nich. Tonacja danego punktu ustalana jest na drodze interpolacji odczytu sąsiednich sensorów. Najnowocześniejsze matryce CCD zbudowane są z milionów elementów światłoczułych, jednak ze względu na cenę są na razie stosowane głównie w profesjonalnych i półprofesjonalnych urządzeniach wideo (w tym również w cyfrowych aparatach fotograficznych). W amatorskich kamerach internetowych stosuje się sensory CCD złożone z kilkuset tysięcy elementów fotoczułych, co pozwala na uzyskanie rozdzielczości rzędu 640x480 pikseli.
CMOS
Rozwiązaniem alternatywnym dla technologii CCD są sensory CMOS (Complementary Metal Oxide Semiconductor). Technologia ta opiera się na zjawisku zmiany właściwości elektrycznych krzemu pod wpływem światła. Podstawowym modułem światłoczułym CMOS jest tablica fotodetekcyjna, mogąca charakteryzować się różnymi poziomami czułości. Dzięki matrycowej strukturze tablicy odczyt wskazania pojedynczego elementu przypomina adresowanie pamięci półprzewodnikowej. Główną zaletą rozwiązań tego typu jest niski pobór mocy.
INSTALACJA KAMERY
Instalacja kamery to po pierwsze instalacja i konfiguracja systemu Windows 2000 Professional, następnie programowe rozpoznanie urządzenia (instalacja sterowników) i na koniec instalacja oprogramowania, które przechwytuje obraz i wysyła go do serwera www.
OPIS KAMERY
Nasza kamera to WebCam firmy Creative ze złączem USB.
Dane techniczne:
maksymalna rozdzielczość 352x288
interfejs USB 1.1
automatyczny balans jasności
przycisk „snapshot”
Zdjęcia umieszczane na stronie www są robione w rozdzielczości 320x240. Stwierdziliśmy, że jest to wystarczająca rozdzielczość na tego typu zdjęcia.
Interfejs USB 1.1 pozwolił nam na szybką i bezproblemową instalacje urządzenia.
Niezwykle potrzebna okazała się funkcja automatycznego balansu jasności, gdyż kamera znajduje się w oknie skierowanym na południe, tak wiec kamera umieszczona jest na wprost słońca, które w dodatku świeci z różną intensywnością. Brak tej funkcji powodowałby w momencie dużego natężenia światła naświetlenie obrazu, a co za tym idzie, nie byłoby nic widać. Z kolei gdy światło byłoby minimalne obraz byłby zbyt ciemny. Automatyczny balans jasności bez problemu radzi sobie z takim problemem ściemniając obraz w przypadku dużego nasłonecznienia i rozjaśniając go, gdy tego światła jest zbyt mało.
Przycisk „snapshot” służący do szybkiego robienia zdjęć okazał się być nieprzydatny.
Do instalacji kamery w systemie użyliśmy sterowników zamieszczonych na płycie dołączonej do kamery.
SYSTEM OPERACYJNY
Przed samą instalacją musieliśmy dokonać wyboru co do systemu operacyjnego, który będzie obsługiwał kamerę. Niestety z powodu sterowników urządzenia do wyboru mieliśmy tylko rodzinę programów Microsoft Windows. Zdecydowaliśmy się wiec na Windows 2000 Professional, który naszym zdaniem jest najbardziej stabilny. Jest to bardzo ważne, gdyż komputer pracuje 24 godziny na dobę, obsługując kamerę przez cały czas, tak więc nie możliwe jest częste „wieszanie się” komputera.
Na samym początku przystąpiliśmy do utworzenia jednej partycji na dysku twardym o pojemności 5,5GB, a następnie sformatowania go używając systemu plików NTSF. Windows 2000 przeznaczony jest do pracy na dysku z takim właśnie systemem plików.
Najważniejsze jest, aby partycja startowa, na której znajduje się system operacyjny, miała pojemność wystarczającą, by ten system pomieścić. Wielkość ta jest równa w zależności od wykorzystanego systemu i waha się od ok. 50 MB (a nawet mniej) w przypadku DOS, aż do wielkości ok. 650MB (Windows 2000 Professional). Oczywiście nie oznacza to, że mamy ściśle podporządkować się systemom, jakich używamy i tworzyć taką partycję systemową, by zmieścić w niej system operacyjny.
Mając już odpowiednio przygotowany dysk przystąpiliśmy do instalacji systemu. Znakomicie przygotowany kreator przeprowadził nas przez cały proces instalacji szybko i bez żadnych problemów.
OPROGRAMOWANIE
Jako program do przechwytywania obrazu z kamery i umieszczaniu go w postaci pliku użyliśmy darmowego programu Biromsoft WebCam 3.0. Sama instalacja zajęła niemalże kilka sekund, w dodatku opierała się na kliknięciu na przycisk „instaluj”, bowiem reszta przebiegła automatycznie. Konfigurację zaczęliśmy od wyboru urządzenia przechwytującego obraz (w naszym przypadku była to kamera Creative WebCam) i ustawieniu parametrów jej pracy. Ważnym parametrem okazała się funkcja „Outdoor” w opcjach „Source”, która umożliwia znakomitą pracę kamery na zewnątrz. Wiąże się to głównie z problemem naświetlenia.
Kolejnym etapem było ustawienie serwera docelowego, gdzie wysyłany miał być plik graficzny jako kamera.jpg. Jako adres serwera wpisaliśmy adres naszego serwera z systemem operacyjnym Linux, na którym znajduje się strona www. Następnie ustawiliśmy opcje częstotliwości zrzutu obrazu. Parametr ten ustawiliśmy na 30s. Ustawiając ten czas sugerowaliśmy się zarówno dynamiką zmiany obszaru, na który jest skierowana kamera, jak i przepustowością łącza internetowego.
Dodatkowo na obrazie wyświetlanym już na stronie zamieściliśmy aktualną datę oraz godzinę.
NOWA WERSJA STRONY INTERNETOWEJ GAZETKI SZKOLNEJ „ZAMIAST ZAMIAST”
WYGLĄD I BUDOWA WITRYNY
Strona internetowa gazetki Zamiast ZAMIAST składa się z kilku części:
Jest to część ruchoma tzn. zmienia się w zależności od wybranej opcji (pozostałe części są stałe)
Menu, w którym mamy do wyboru 7 opcji:
„Zamiast ZAMIAST” jest to link do głównej strony
„Aktualny Numer” link do pliku z aktualnym numerem gazetki
„Wydanie Specjalne” link do pliku z wydaniem specjalnym gazetki
„Archiwum” link do pliku z archiwalnymi numerami gazetki
„Historia Gazetki” link do pliku z krótką historia powstania i działania gazetki
„Redakcja” lista nauczycieli oraz uczniów współpracujących z gazetką
„Kontakt” adresy kontaktowe do redakcji gazetki
Rysunek który jest odnośnikiem do „Panelu administracyjnego”
Miniaturka aktualnego obrazu z kamery umieszczonej w oknie redakcji
Rysunek okładki aktualnego numeru Zamiast ZAMIAST
FUNKCJE POSZCZEGÓLNYCH ODNOŚNIKÓW
Na głównej stronie witryny
Na głównej stronie (index.php) na środku strony wyświetlane są newsy. Każdy z newsów posiada odnośnik „więcej”, który służy do rozwinięcia poszczególnych wiadomości. Po wciśnięciu tego odnośnika przechodzimy do strony na której znajduje się pełny news oraz komentarze dotyczące treści newsa. Istnieje możliwość dodania własnego komentarza za pomocą odnośnika „ Dodaj +”. Jeżeli nie dodajemy komentarza możemy powrócić do strony głównej za pomocą linku „Wszystkie newsy”. Jeżeli decydujemy się na dodanie komentarza po kliknięciu w odnośnik „Dodaj +” przechodzimy do formularza w którym mamy możliwość wpisania treści.
Na głównej stronie (index.php) istnieje odnośnik „Dodaj newsa” za pomocą którego przenosimy się do formularza w którym mamy możliwość dodania informacji.
Rysunki znajdujące się po prawej stronie witryny (czyli część 5, 4 i 3) również są odnośnikami:
rys. z części 5 stanowi odnośnik do aktualnego numeru gazetki
rys. z części 4 jest odnośnikiem do strony z powiększonym obrazem pobieranym z kamery internetowej
rys. z części 3 jest odnośnikiem do panelu administracyjnego
W menu witryny:
„Zamiast ZAMIAST' - link do głównej strony
„Aktualny Numer” - link do pliku z aktualnym numerem gazetki. Po wybraniu tej opcji przechodzimy do strony na której znajduje się treść aktualnego numeru gazetki. Każdy artykuł przedstawiony jest w postaci skróconej, dopiero po wybraniu opcji „więcej” przechodzimy do całej treści artykułu.
„Wydanie Specjalne” - link do pliku z wydaniem specjalnym gazetki
„Archiwum” - link do pliku z archiwalnymi numerami gazetki. Po wybraniu tej opcji przechodzimy do listy z archiwalnymi wydaniami gazetki. Po wybraniu interesującego nas numeru przechodzimy do artykułów, które przedstawione są w taki sam sposób jak w dziale „Aktualny Numer”
„Historia Gazetki” - link do pliku z krótką historia powstania i działania gazetki
„Redakcja” lista nauczycieli oraz uczniów współpracujących z gazetką
„Kontakt” adresy kontaktowe do redakcji gazetki
PANEL ADMINISTRACYJNY
Panel przeznaczony jest dla osób które posiadają uprawnienia do redagowania gazetki. Zabezpieczony jest systemem logowania.
Po zalogowaniu się przez redaktora gazetki ma on do dyspozycji 4 opcje:
„Newsy” - w tym dziale wyświetlają się wszystkie newsy. Redaktor ma możliwość poprawienia poszczególnych treści lub skasowania całego newsa. Bardzo ważna funkcja którą posiada redaktor jest decydowanie o tym czy dany news wyświetli się na głównej stronie witryny czy też nie. Ma taką możliwość za pomocą przycisków „Tak” lub „Nie” które znajdują się pod każdym newsem.
„Komentarze” - jest to dział w którym znajdują się wszystkie komentarze dodane przez użytkowników witryny. Zbudowany jest tak samo jak dział „Newsy”
„Gazetka” - w tym dziale redaktor ma możliwość dodania nowego numeru lub artykułu, jak również możliwość poprawiania lub kasowania istniejących wpisów.
„Wyloguj” - opcja służąca do wylogowania się redaktora z panelu administracyjnego.
BUDOWA WITRYNY OD STRONY TECHNICZNEJ
Lista plików:
index.php
gazetka.php
specjalne.php
historia.php
redakcja.php
kontakt.php
kamera.php
Budowa pliku
Każdy z tych plików jest zbudowany w taki sam sposób, składa się z 3 części:
Nagłówek
Część zmienna
Stopka
Nagłówek i stopka są plikami (naglowek.php i stopka.php) które zawieraja kod HTML (szkielet strony) i są „doklejane” za pomocą funkcji include(). Część zmienna jest inna w każdym z plików.
Wyświetlanie obrazu
Obraz w postaci pliku jpg pobierany jest z głównego serwera szkoły i wyświetlany na stronie kamera.php za pomocą polecenia <img src="kamera.jpg?co=kamera">. Zastosowano tutaj małe oszustwo tzn aby uniknąć zapamiętania rysunku przez serwery proxy i nie odświeżanie obrazu co 30 sekund . Wiele serwerów stwarzało ten problem dlatego plikowi kamera.jpg dodana została zmienna „co” o wartości „kamera”. Zmienna ta nie ma żadnego zastosowania w skryptach witryny.
Funkcje
W języku PHP istnieje możliwość definiowania własnych funkcji, które możemy wywołać w każdym miejscu skryptu. Dzięki temu zmniejsza się wielkość pliku a kod staje się bardziej czytelny.
Z całej konstrukcji witryny można wyróżnić 4 funkcje:
function najnowszy_obrazek()
{
$wynik = mysql_query ("SELECT nr_gazetki ".
"FROM gazetka order by nr_gazetki DESC limit 0,1 ");
while ($rekord = mysql_fetch_array ($wynik)) {
print "<a href='gazetka.php?co=aktualny'><img border='0'
src='grafika/numer$rekord[0].jpg' width='140'";
print "height='190'></a>"; }
}
mysql_query ("SELECT nr_gazetki FROM gazetka order by nr_gazetki DESC limit 0,1 ");
Jest to zapytanie do bazy danych, które oznacza: wybierz pole „nr_gazetki” z tabeli „gazetka”, następnie sortuj wg „nr_gazetki” malejaco. „Limit 1,0” oznacza ze interesuje nas tylko pierwszy rekord uzyskanej tabeli. Po zadaniu pytania odczytujemy wynik. Jedną z typowych metod odczytu jest pętla:
while ($rekord = mysql_fetch_array ($wynik))
Odczytuje kolejne rekordy, które są wynikiem zapytania, zapisując je w tablicy $rekord. Komórki tej tablicy zawierają kolejne pola wyników zapytania. W tym przypadku wynikiem jest jedna liczba, która znajduje się na pozycji 0 stąd src='grafika/numer$rekord[0].jpg'
Funkcja najnowszy obrazek() służy do wygenerowania okładki najnowszego numeru. Z tabeli GAZETKA pobieramy rekord „nr_gazetki” sortujemy rosnąco, a następnie przy pomocy limit 0,1 do tablicy trafia rekord który ma największa wartość, czyli najwyższy numer gazetki.
function dodaj_newsa ($tytul, $tresc_krotka, $osoba, $tresc)
{
$tytul = addslashes(htmlspecialchars ($tytul));
$tresc_krotka = addslashes(htmlspecialchars ($tresc_krotka));
$osoba = addslashes(htmlspecialchars ($osoba));
$tresc = addslashes(nl2br(htmlspecialchars ($tresc)));
if ($tytul && $tresc_krotka && $osoba && $tresc) {
// są wpisane dane, dodajemy je do bazy
$query = "INSERT INTO news (tytul, tresc_krotka, tresc, autor,".
" data) VALUES ('$tytul', '$tresc_krotka', '$tresc', '$osoba', ".
"now());";
$wynik = mysql_query ($query);
print "<H3>Dziękujemy</H3>Dziękujemy za zgłoszenie. Dane zostaną ";
print "dołączone do serwisu w ciągu 24 godzin, po zaakceptowaniu przez
administratora.";
print "<br><br><A HREF='index.php'>Wszystkie newsy</A>";
} else { // Wyświetlenie formularza
print "<H3>Dodaj newsa:</H3>";
print "<FORM METHOD=POST><B>Tytuł newsa:</B><BR>";
print "<INPUT TYPE='text' NAME='tytul' VALUE='$tytul' ";
print "SIZE=40><BR><B>Krótka notka:</B><BR>";
print "<INPUT TYPE='text' NAME='tresc_krotka' ";
print " VALUE='$tresc_krotka' SIZE=40><BR>";
print "<B>Pełna treść:</B><BR><TEXTAREA NAME='tresc' ";
print "ROWS=6 COLS=40>$tresc</TEXTAREA><BR>";
print "<B>Osoba:</B><BR><INPUT TYPE='text' ";
print "NAME='osoba' VALUE='$osoba' SIZE=20><BR>";
print "<INPUT TYPE='submit' VALUE='Wyślij'></FORM>";}
}
Funkcja dodaj_newsa()
Zmienne $tytul, $tresc_krotka, $osoba, $tresc są „filtrowane” przed dodaniem do bazy przy pomocy funkcji addslashes i htmlspecialchars , które służą do przeformatowania ciągów tak aby do bazy nie zostało wpisane znaki typu !@#$% oraz znaczniki HTML (tzn <br> <hr> itp.).
Jeżeli wywołamy tą funkcje wyświetli nam się formularz, którym wpisujemy dane do tabeli NEWS.
function wyswietl_komentarze($nr)
{
if ($nr>0) {$wynik = mysql_query ("SELECT * ".
"FROM komentarze_news WHERE nr_news=$nr AND ok=1 ORDER by data desc");
print "<left><table width='430'><tr><td bgcolor='black' width=250><p
class=text3>Komentarze: ";
print "</td><td bgcolor='black'><center><a
href='index.php?co=dodaj_komentarz&nr=$nr' ";
print "class='3link'>Dodaj +</a></td></tr></table>";
$num = mysql_num_rows($wynik);
if ($num < 1){
print " <br>Nie ma jeszcze żadnych komentarzy."; }
else {
while ($rekord = mysql_fetch_array ($wynik)) {
print "<table width='430'><tr><td><P class='text2'><img src='grafika/ikona2.gif'>";
print "$rekord[1]</td></tr>";
print "<tr><td><table><tr><td width='240'></td><td><P class='data'>wysłany
przez <B>$rekord[2]</B><br>";
print "$rekord[3]</td></tr></td></tr></table></table></P>"; }
}
}
print "<left><table width='430'><tr><td width=250></td><td
bgcolor='black'><center>";
print "<a href='index.php' class='3link'>Wszystkie newsy</a></td></tr></table>";
}
Funkcja wyswietl_komentarze()
Służy do wyświetlenia komentarza. „Sterujemy” nią za pomocą zmiennej $nr która stanowi niejako adres pochodzenia naszego komentarza. Jeżeli wyświetlimy newsa o numerze np. 20 ten numer staje się adresem komentarzy które są pobierane z bazy danych.
function dodawanie_komentarza($autor, $nr, $tresc)
{
// dodawanie posta do forum
$autor = addslashes(htmlspecialchars ($autor)); // dodawanie komntarzy
$tresc = addslashes(nl2br(htmlspecialchars ($tresc)));
if ($tresc && $nr && $autor ) {
$query = "INSERT INTO komentarze_news (tresc, autor, data, nr_news)".
"VALUES ('$tresc', '$autor', now(), '$nr = $nr_news' );";
$wynik = mysql_query ($query);
print "<H2>Dziękujemy</H3>Dziękujemy za zgłoszenie. Dane zostaną ";
print "dołączone do serwisu w ciągu 24 godzin. po zaakceptowaniu przez
administratora.</h2>";
print "<A HREF='index.php'>Wszystkie newsy</A>";
} else {
print "<H3>Dodaj komentarz:</H3><br>";
print "<FORM METHOD=POST>";
print "<INPUT TYPE='hidden' NAME='nr_news' VALUE='$nr_news'>";
print "<B>Treść:</B><BR><TEXTAREA NAME='tresc' ";
print "ROWS=6 COLS=40>$tresc</TEXTAREA><BR>";
print "<B>Autor:</B><BR><INPUT TYPE='text' ";
print "NAME='autor' VALUE='$autor' SIZE=20><BR>";
print "<INPUT TYPE='submit' VALUE='Wyslij'></FORM>";
Funkcja dodawanie_komentarza()
Zmienne $autor, $tresc są „filtrowane” przed dodaniem do bazy przy pomocy funkcji addslashes i htmlspecialchars , które służą do przeformatowania ciągów tak aby do bazy nie zostało wpisane znaki typu !@#$% oraz znaczniki HTML (tzn <br> <hr> itp.).
Jeżeli wywołamy tą funkcje wyświetli nam się formularz, którym wpisujemy dane do tabeli KOMENTARZE.
PRZYKŁADOWE MECHANIZMY DZIAŁANIA SKRYPTÓW
Przykłady skryptów związanych z bazą danych:
1.Skrypt służący do połączenia się z bazą danych oraz pobrania informacji
z bazy :
<?
mysql_connect ("localhost", "atril", "atrilus") or
die ("Nie można połączyć się z MySQL");
mysql_select_db("zamiast") or
die ("Nie można połączyć się z bazą zamiast");
$wynik = mysql_query ("SELECT * FROM komentarze_news ;");
while ($rekord = mysql_fetch_array ($wynik)) {
$id = $rekord[0];
$tresc = $rekord[1];
$autor = $rekord[2];
$data = $rekord[3];
$nr_news = $rekord[4];
$ok = $rekord[5];
print "<p class='text2'> Data: $data<br>Tresc: $tresc<br> Autor:";
print "$autor<br>Do newsa nr:";
print "$nr_news<br>Moderowanie: $ok <br>";
}
?>
Skrypt służący do połączenia się z bazą danych oraz dodania informacji do bazy.
<?
mysql_connect ("localhost", "zamiast", "2aM1AsT") or
die ("Nie można połączyć się z MySQL"); mysql_select_db ("zamiast") or
die ("Nie można połączyć się z bazą cwphp4");
print "<FORM METHOD='POST'>Nowy rekord:";
print "<INPUT TYPE='hidden' NAME='co' VALUE='dodaj'><TABLE>";
print "<TR><TD>Tytul</TD><TD><INPUT TYPE='text' ";
print "NAME='tytul'></TD></TR><TR><TD>Tresc:</TD><TD>";
print "<TEXTAREA NAME='tresc' ROWS=6 COLS=40></TEXTAREA>";
print "</TD></TR><TR><TD>Nr gazetki:</TD>";
print "<TD><INPUT TYPE='text' NAME='nr_gazetki'></TD></TR>";
print "</TABLE><INPUT TYPE='submit' VALUE='Dodaj'></FORM>";
if ($co == 'dodaj') { // dodawanie tekstu
if ($tytul && $nr_gazetki) {
$query = "INSERT INTO gazetka (id, tytul, tresc, ";
$query .= "nr_gazetki) VALUES ('', '$tytul', '$tresc', ";
$query .= "'$nr_gazetki') ";
$wynik = mysql_query ($query);
}
?>
LISTA POLECEŃ PHP UŻYTA W SKRYPTACH
$zmienna - jest to zmienna, której nadajemy jakąś wartość np. $imie = " Piotr”
print " " - funkcja ta służy do wyświetlenia tekstu na stronie np. jeżeli chcemy wyświetlić
komunikat „Praca dyplomowa” wystarczy wpisać polecenie print "Praca
dyplomowa”
if (warunek) {polecenie} - funkcja if jest funkcją warunkową. Jeżeli spełniony jest
warunek wykonywane jest polecenie
else {polecenie} - jest to funkcja wyboru. Wykorzystuje się ja razem z funkcja if () i
służy dosłownie jako alternatywny wybór. Czyli jeżeli nie jest spełniony
warunek funkcji if wykonywane jest polecenie funkcji else
while (wartość) {polecenie} - za pomocą tej funkcji możemy np. przedstawić wartości pól
bazy danych. Jest to pętla, która wykonuje się dopóki jej wartość będzie równa 0.
Wartości przedstawiane są w postaci tablic.
include("plik") - funkcja ta służy do „załadowania” pliku, który znajduje się poza skryptem
addslashes
nl2br
htmlspecialchars - są to funkcje służące do formatowania tekstu
substr($tekst, 0, 155) - funkcja za pomocą której ograniczamy ilość znaków np. jeżeli
zmienna $tekst ma wartość „Szkoła przyjacielem ucznia” przyjmując wartości
0, 4 wyświetli nam się tylko „Szko”
mysql_connect() - funkcja ta służy do połączenia się z bazą MySQL,
mysql_select_db() - funkcja służy do wybrania bazy, w której znajdują się nasze tabele.
mysql_num_rows($wynik) - funkcja, która podaje ilość znalezionych w bazie danych
odpowiadających nam pól w postaci liczby
mysql_query - za pomocą tej funkcji zadajemy zapytanie do bazy danych
SELECT * FROM news WHERE ok=1 - są to komendy w języku SQL którymi
dokonujemy polecenia w bazie danych. SELECT oznacza wybierz, * oznacza
wszystko, FROM news - z tabeli news, WHERE ok.=1 - warunek gdzie pole
„ok.” ma wartość 1
INSERT INTO komentarze_news (tresc, autor, data, nr_news)
VALUES ('$tresc', '$autor', now(), '$nr = $nr_news' ) - komenda w SQL, która
oznacza INSERT INTO komentarze_news - dodaj do tabeli „komentarze_news”,
(tresc, autor, data, nr_news) - nazwy pól w tabeli , VALUES ('$tresc', '$autor',
now(), '$nr = $nr_news' ) - odpowiednio wartości zmiennych przyporządkowane
są nazwą pól tabeli
now() - funkcja użyta powyżej służy do pobrania aktualnego czasu serwera
BIBLIOGRAFIA
"PHP i MySQL - Tworzenie stron WWW" - Luke Welling , Laura Thomson
"Tworzenie stron WWW - PHP 4 - Ćwiczenia praktyczne" - Andrzej Kierzkowski
Internet
1