Akademia Górniczo-Hutnicza Wydział Inżynierii Mechanicznej i Robotyki Katedra Robotyki i Dynamiki Maszyn SIECI KOMPUTEROWE I BAZY DANYCH ĆWICZENIE NR 10 Temat: INTERFEJS SYSTEMU BAZODANOWEGO W PHP. BUDOWA PROSTEGO SYSTEMU ZARZĄDZANIA KONTAKTAMI.
CEL ĆWICZENIA: Podsumowanie i praktyczne wykorzystanie wiadomości nabytych z zakresu tworzenia dynamicznych stron WWW. Poznanie szkieletu aplikacji bazodanowej na przykładzie internetowego systemu zarządzania kontaktami osobowymi. 1. TWORZENIE BAZY DANYCH Pierwszym krokiem budowy systemu internetowej bazy danych jest zaprojektowanie i wykonanie bazy danych. W prezentowanym przykładzie będzie to prosta baza danych, zawierająca jedną tabelę, w której zapisywane będą dane interesujących nas osób. W tym celu przyjęto, że będziemy chcieli przechowywać informacje takie jak: - imię osoby [do 30 znaków] - nazwisko osoby [do 50 znaków] - adres osoby [do 100 znaków] - nr. telefonu [do 50 znaków] - email [do 50 znaków] Jako identyfikujące daną osobę przyjęto złączenie pól imię, nazwisko i adres. Następnie wykorzystując phpmyadmin wykonano odpowiednia bazę danych o nazwie kontakty i zawierającej jedną tabelę osoby. Strukturę bazy danych przedstawia Rys.1. Rys.1 Struktura bazy danych z kontaktami osobowymi INTERFEJS SYSTEMU BAZODANOWEGO W PHP 2
2. TWORZENIE INTERFEJSU ZARZĄDZAJĄCEGO BAZĄ DANYCH Mając utworzoną bazę danych umieszczoną na serwerze należy przystąpić do zaplanowania i wykonania odpowiednich interfejsów pozwalających na pokazywanie, dodawanie, usuwanie i zmianę danych zgromadzonych w bazie. Interfejs zostanie wykonany z wykorzystaniem dokumentów HTML wspomaganych skryptami PHP pozwalającymi zrealizować komunikację z bazą danych. W tym celu wykorzystane zostaną wiadomości będące treścią wcześniejszych laboratoriów. System będzie składał się z pięciu plików: 1/ plik index.php jest plikiem głównym zawierającym mechanizm sterujący przełączaniem podstron z właściwą treścią 2/ plik menu.html jest plikiem włączanym poleceniem include do pliku index.php i zawiera proste menu umożliwiające nawigację po systemie 3/ plik dodaj.php jest plikiem realizującym zapis danych do bazy 4/ plik usun.php jest plikiem realizującym usuwanie danych z bazy 5/ plik zmien.php jest plikiem realizującym aktualizację danych w bazie Na Rys.2 przedstawiono wygląd interfejsu systemu po jego uruchomieniu w przeglądarce Poniżej przedstawiono kod pliku index.php <? // plik indem.php Rys.2 Ekran powitalny systemu if(!isset($v)) $tresc = "Witamy w naszym systemie kontaktów!"; else switch($v) case 'pokaz': $tresc = ""; $tresc.= czytajosoby(); break; case 'dodaj': $tresc = ""; $tresc.= formularzosoby(); break; case 'zmien': $tresc = ""; $tresc.= zmiana(); break; INTERFEJS SYSTEMU BAZODANOWEGO W PHP 3
function zmiana() global $i,$n,$a,$tel,$em; $tresc=""; $tresc.=" <FORM ACTION=\"zmien.php\" METHOD=\"POST\"> <TABLE align=\"center\" cellspacing=5 cellpadding=5> <TD>Imię</TD><TD>$i<INPUT TYPE=\"HIDDEN\" NAME=\"imie\" VALUE=\"$i\"></TD> <TD>Nazwisko</TD><TD>$n<INPUT TYPE=\"HIDDEN\" NAME=\"nazwisko\" VALUE=\"$n\"></TD> <TD>Adres</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"adres\" VALUE=\"$a\" SIZE=\"30\"></TD> <TD>Telefon</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"telefon\" VALUE=\"$tel\" SIZE=\"30\"></TD> <TD>email</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"email\" VALUE=\"$em\" SIZE=\"30\"></TD> <TD colspan=\"2\" align=center><input TYPE=\"SUBMIT\" VALUE=\"Zmień\"></TD> </TABLE> </FORM>"; return $tresc; function formularzosoby() $tresc="podaj dane nowej osoby:<br>"; $tresc.=" <FORM ACTION=\"dodaj.php\" METHOD=\"POST\"> <TABLE align=\"center\" cellspacing=5 cellpadding=5> <TD>Imię</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"imie\" SIZE=\"30\"></TD> <TD>Nazwisko</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"nazwisko\" SIZE=\"30\"></TD> <TD>Adres</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"adres\" SIZE=\"30\"></TD> <TD>Telefon</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"telefon\" SIZE=\"30\"></TD> <TD>email</TD><TD><INPUT TYPE=\"TEXT\" NAME=\"email\" SIZE=\"30\"></TD> <TD colspan=\"2\" align=center><input TYPE=\"SUBMIT\" VALUE=\"Dodaj\"></TD> </TABLE> </FORM>"; return $tresc; function czytajosoby() $tresc=""; $query = "SELECT * FROM osoby ORDER BY nazwisko"; $result = mysql_query ($query) or die ("Zapytanie zakończone niepowodzeniem..."); $all = mysql_num_rows($result); if ($all>0) $tresc.="lista osób:<br><table border=0 cellpadding=5 cellspacing=5> <TH>lp</TH> <TH>imię</TH> <TH>nazwisko</TH> <TH>adres</TH> <TH>telefon</TH> <TH>email</TH> <TH> </TH> <TH> </TH> </TR>"; INTERFEJS SYSTEMU BAZODANOWEGO W PHP 4
$counter = 1; while ($row = mysql_fetch_array($result, MYSQL_ASSOC)) $imie = $row['imie']; $nazwisko = $row['nazwisko']; $adres = $row['adres']; $telefon = $row['telefon']; $email = $row['email']; $tresc.=" <TD>$counter</TD> <TD>$imie</TD> <TD>$nazwisko</TD> <TD>$adres</TD> <TD>$telefon</TD> <TD>$email</TD> <TD><A HREF=\"usun.php?imie=$imie&&nazwisko=$nazwisko&&adres=$adres\">usuń</A></TD> <TD> <A HREF= \"index.php?v=zmien&&i=$imie&&n=$nazwisko&&a=$adres&&tel=$telefon&&em=$email\" >zmień</a></td></tr>"; $counter++; $tresc.="</table>"; else $tresc.="baza jest pusta"; return $tresc; <HTML> <HEAD> <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=iso-8859-2"> <META HTTP-EQUIV="Creation-date" CONTENT="2003-04-27T12:08:09Z"> <META HTTP-EQUIV="Content-Language" CONTENT="pl"> <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> <META NAME="Author" CONTENT="Adam Pietrzyk"> <TITLE>Baza Kontaktów</TITLE> </HEAD> <BODY BGCOLOR="#FFFFCC" LEFTMARGIN="0" TOPMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0"> <TABLE border=0 cellpadding=10 cellspacing=10> <TD valign="top" width="25%"> <!-- sekcja menu --> <? include "menu.html"; </TD> <TD align="center" width="75%"> <!-- dynamicznie tworzona sekcja treści strony --> <? echo "$tresc"; </TD> </TR> </TABLE> </BODY> </HTML> Przełączanie podstron realizuje instrukcja switch natomiast treść strony generowana jest w odpowiednich funkcjach związanych z wyborem użytkownika (odpowiedni przypadek case ). Poniżej pokazano listing pliku menu.html <!-- menu.html --> MENU:<br> <br><a HREF="index.php?v=pokaz">Pokaż dane</a> <br><a HREF="index.php?v=dodaj">Dodaj dane</a> Po wybraniu pozycji Pokaż dane wykonywana jest funkcja czytajosoby(), która realizuje połączenie z bazą danych oraz pobranie zawartości tabeli osoby i sformatowanie jej do tabeli a następnie umieszczenie w zmiennej $tresc reprezentującej treść strony. Wynikiem tego jest lista osób znajdujących się w bazie danych pokazana na Rys 3. INTERFEJS SYSTEMU BAZODANOWEGO W PHP 5
Rys.3 Lista osób w bazie danych Jak widzimy każdy rekord zawiera dodatkowo opcje usuń lub zmień które są realizowane w plikach odpowiednio usun.php i zmien.php. Ich listingi przedstawiono poniżej: <? // plik usun.php $sql="delete FROM osoby WHERE imie='$imie' AND nazwisko='$nazwisko' AND adres='$adres'"; $result = mysql_query($sql,$link) or die("zapytanie zakończone niepowodzeniem"); header("location: http://localhost/labbaza/index.php?v=pokaz"); <? // plik zmien.php // sprawdzenie poprawności danych if((!$imie) (!$nazwisko) (!$adres)) header("location: http://localhost/labbaza/index.php?v=zmien"); $sql="update osoby SET adres = \"$adres\", telefon =\"$telefon\", email = \"$email\" WHERE imie='$imie' AND nazwisko='$nazwisko' "; $result = mysql_query($sql,$link) or die("zapytanie zakończone niepowodzeniem"); header("location: http://localhost/labbaza/index.php?v=pokaz"); Dodawanie nowej osoby do bazy realizowane jest po wybraniu w menu pozycji Dodaj dane co powoduje pokazanie formularza umożliwiającego wprowadzanie danych. Wprowadzone dane zostają zapisane poprzez wykonanie pliku dodaj.php. <? // plik dodaj.php INTERFEJS SYSTEMU BAZODANOWEGO W PHP 6
// sprawdzenie poprawności danych if((!$imie) (!$nazwisko) (!$adres)) header("location: http://localhost/labbaza/index.php?v=dodaj"); $sql="insert INTO osoby(imie,nazwisko,adres,telefon,email) VALUES (\"$imie\",\"$nazwisko\",\"$adres\",\"$telefon\",\"$email\")"; $result = mysql_query($sql,$link) or die("zapytanie zakończone niepowodzeniem"); header("location: http://localhost/labbaza/index.php?v=pokaz"); Poniższy rysunek przedstawia wygląd formularza wprowadzania danych. Rys.4 Formularz wprowadzania danych osobowych Powyższy przykład jest wprawdzie bardzo prosty jednak pokazuje metodykę tworzenia internetowej bazy danych. Załączone fragmenty kodu powinny pomóc czytelnikowi w samodzielnym tworzeniu interfejsów komunikacji z bazą danych. ZADANIA DO WYKONANIA 1. Wykonać swój własny system komunikacji z bazą danych INTERFEJS SYSTEMU BAZODANOWEGO W PHP 7