Giełda w Internecie

Programy do obsługi sklepów internetowych są zazwyczaj drogie i skomplikowane. Wad takich nie mają skrypty Perla, które przy odrobinie wysiłku można stworzyć samodzielnie. Szczególnie wygodne w takich zastosowaniach są tak zwane moduły. Dzięki bibliotekom wykonywanie nawet skomplikowanych zadań może być bardzo proste. Moduły są małymi zestawami programów oraz skryptów, które zawierają gotowe procedury do realizacji […]

Programy do obsługi sklepów internetowych są zazwyczaj drogie i skomplikowane. Wad takich nie mają skrypty Perla, które przy odrobinie wysiłku można stworzyć samodzielnie. Szczególnie wygodne w takich zastosowaniach są tak zwane moduły.

Dzięki bibliotekom wykonywanie nawet skomplikowanych zadań może być bardzo proste. Moduły są małymi zestawami programów oraz skryptów, które zawierają gotowe procedury do realizacji określonych zadań. Z naszego punktu widzenia szczególnie interesujące są dwie biblioteki: moduł CGI, który ułatwia przetwarzanie formularzy, oraz DBI zapewniający prosty dostęp do popularnych baz danych.

W tym artykule pokażemy, jak stworzyć prostą giełdę. Ponieważ niedługo zacznie się sezon narciarski, przygotujemy małą bazę danych z myślą o miłośnikach szusowania po śniegu. Każdy, kto zechce sprzedać narty, wiązania albo inne akcesoria, będzie mógł umieścić swoje ogłoszenie w jednej z trzech kategorii. Aby ogłoszenia nie były pokazywane w nieskończoność, po 30 dniach każdy anons będzie automatycznie usuwany z bazy. Osoba przeglądająca ogłoszenia będzie miała możliwość bezpośredniego skontaktowania się z autorem interesującej ją oferty za pośrednictwem poczty elektronicznej.

Wszystkie opisane w tym artykule pliki znajdują się na płycie CD-ROM dołączonej do tego numeru CHIP-a. Plik gielda _form.html zawiera dwa formularze: jeden do wpisania prostego ogłoszenia, drugi do przeszukiwania bazy danych. Jako bazę danych wykorzystujemy MySQL, który cieszy się dużą popularnością, bo dla systemów Linux/Unix jest on darmowy. Dostępna jest również jego shareware’owa wersja dla Windows. Wszystkie użyte skrypty, czyli db_tworzenie.pl, db_dodanie.pl i db_przegladanie.pl, są niemal identyczne dla Windows i dla Linuksa. Różnią się one jedynie pierwszymi wierszami, zawierającymi ścieżkę dostępu do Perla.

Instalacja MySQL-a

Aby skrypty mogły działać, musimy zainstalować MySQL-a, bazę danych gielda oraz założyć konto o nazwie webserver z hasłem dummy. W ramce na końcu artykułu znajduje się dokładny opis sposobu wykonania powyższych czynności. Jeśli baza danych działa, możemy skonfigurować interfejs Perla, który będzie z nią współpracował.

Główna strona naszej giełdy umożliwia zarówno dodawanie ogłoszeń, jak i ich wyszukiwanie.

Po skończonej konfiguracji kopiujemy trzy skrypty z płyty CD-ROM do katalogu /cgi-bin/ serwera WWW, a dokument HTML do foldera ze stronami WWW. Następnie uruchamiamy Apache’a oraz demona MySQL i za pośrednictwem przeglądarki WWW otwieramy skrypt db_tworzenie.pl. Możemy to zrobić w następujący sposób:

http://localhost/cgi-bin/ db_tworzenie.pl

Jeśli wszystko przebiegnie poprawnie, skrypt doda tabelę o nazwie ogloszenie do bazy danych gielda. W pierwszej części programu na początku następuje deklaracja użycia modułów DBI i CGI. Następnie jest tworzony obiekt o nazwie $cgi_obj, który odpowiada stronie generowanej przez skrypt. Po porównaniu tego programu z przykładami przedstawionymi w dwóch pierwszych częściach kursu zauważymy zmianę w sposobie pisania programu. Perl 5 jest językiem zorientowanym obiektowo i właśnie te jego właściwości wykorzystujemy tym razem.

Na zakończenie skrypt tworzy połączenie z bazą MySQL. W tym celu wykorzystywany jest moduł DBI oraz sterownik dedykowany dla MySQL. Skrypt łączy się z bazą gielda, z uprawnieniami użytkownika webserwer, używając hasła dummy .

Po zestawieniu połączenia z bazą danych zmiennej $dbh przypisywana jest poprawna wartość. Jeżeli tworzenie połączenia się nie powiedzie, $dbh nie będzie miała żadnej wartości. Informacja o przyczynie niepowodzenia zostanie zapisana w zmiennej $DBI::errstr .

Aby użytkownik wiedział, co się dzieje, za pomocą konstrukcji warunkowej if-else do przeglądarki wysyłany jest komunikat o sukcesie lub niepowodzeniu próby połączenia z bazą. Moduł CGI sprawia, że tworzenie kodu HTML jest o wiele prostsze. Polecenie:

print p('To jest mój tekst');

daje taki sam efekt co:

print '<p>To jest mój tekst</p>';

Ze względu na lepszą czytelność w przykładowych skryptach nie będziemy jednak używali tej właściwości biblioteki CGI. Szczegółowy opis bogatych możliwości modułu CGI znaleźć można w dołączonej do niego dokumentacji.

Wróćmy jednak do skryptu. W następnym kroku wysyłamy do naszej bazy danych polecenie SQL, które znajduje się w nawiasie klamrowym za $dbh->do. Powoduje ono utworzenie tabeli o nazwie ogloszenia. Jej kolumny powinny mieć określone nazwy, a dane format. Kolumna data powinna być typu DATE, a pola kategoria, tresc i mail typu VARCHAR z maksymalnymi liczbami znaków podanymi w nawiasach klamrowych. Dzięki temu zawarte tam dane mogą się składać z liter, cyfr i innych znaków. Przy zastosowaniu, na przykład, typu INTEGER dopuszczalne byłyby jedynie liczby całkowite. W sumie MySQL obsługuje kilkanaście różnych formatów danych. Wybór właściwego jest szczególnie ważny w przypadku wykonywania operacji matematycznych na przechowywanych danych.

Również na tym etapie kontrolujemy poprawność wykonania programu. Na zakończenie skrypt przerywa połączenie z MySQL i kończy generowanie kodu HTML. Operacje te można zrealizować bardzo łatwo, korzystając z pola end_html obiektu CGI, który pozwala wysłać do przeglądarki sekwencję znaczników </body></html> .

Info
Grupy dyskusyjne
Uwagi i komentarze do artykułu:
#
Pytania techniczne:
#
#
Internet
MySQL
http://www.mysql.org/
CPAN
http://www.cpan.org/
Polskie mirrory
http://sunsite.icm.edu.pl/pub/unix/mysql/
#
W dziale Internet | Workshop: język Perl znajdują się opisywane pliki i skrypty, używane moduły Perla oraz serwer MySQL
0
Zamknij

Choć staramy się je ograniczać, wykorzystujemy mechanizmy takie jak ciasteczka, które pozwalają naszym partnerom na śledzenie Twojego zachowania w sieci. Dowiedz się więcej.