Prezentowane materiały są przeznaczone dla uczniów szkół ponadgimnazjalnych Autor artykułu: mgr Jerzy Wałaszek |
©2015 mgr
Jerzy Wałaszek
|
Język PHP posiada wiele funkcji, które ułatwiają współpracę z serwerami baz
danych. W ramach zajęć utworzymy prostą bazę danych oraz interfejs w PHP do
jej przeglądania. Nie jesteśmy w stanie w ramach czasowych omówić tego
zagadnienia w całości, jednakże podane tutaj informacje staną się dobrą bazą
do samodzielnego rozszerzenia swojej wiedzy. W sieci Internet znajdziesz
mnóstwo kursów programowania baz danych w PHP.
|
|||||||||||||||||||||
Projektowana baza danych będzie przechowywała proste informacje o
cyfrowych układach scalonych. Do jej utworzenia wykorzystamy
poniższe zestawienie:
00;bramki NAND;DIL14 01;bramki NAND;DIL14 02;bramki NOR;DIL14 03;bramki NAND;DIL14 04;bramki NOT;DIL14 05;bramki NOT;DIL14 06;bramki NOT;DIL14 07;bufory;DIL14 08;bramki AND;DIL14 09;bramki AND;DIL14 10;bramki NAND;DIL14 11;bramki AND;DIL14 12;bramki NAND;DIL14 13;bramki NAND;DIL14 14;bramki NOT;DIL14 15;bramki AND;DIL14 16;bramki NOT;DIL14 17;bufory;DIL14 18;bramki NAND;DIL14 19;bramki NOT;DIL14 20;bramki NAND;DIL14 21;bramki AND;DIL14 22;bramki NAND;DIL14 23;bramki NOR;DIL16 24;bramki NAND;DIL14 25;bramki NOR;DIL14 26;bramki NAND;DIL14 27;bramki NOR;DIL14 28;bramki NOR;DIL14 30;bramki NAND;DIL14 31;bramki;DIL16 32;bramki OR;DIL14 33;bramki NOR;DIL14 34;bufory;DIL14 35;bufory;DIL14 36;bramki NOR;DIL14 37;bramki NAND;DIL14 38;bramki NAND;DIL14 39;bramki NAND;DIL14 40;bramki NAND;DIL14 41;dekoder;DIL16 42;dekoder;DIL16 43;dekoder;DIL16 44;dekoder;DIL16 45;dekoder;DIL16 46;dekoder;DIL16 47;dekoder;DIL16 48;dekoder;DIL16 49;dekoder;DIL14 50;bramki AND-OR-INVERT;DIL14 51;bramki AND-OR-INVERT;DIL14 52;bramki AND-OR;DIL14 53;bramki AND-OR-INVERT;DIL14 54;bramki AND-OR-INVERT;DIL14 55;bramki AND-OR-INVERT;DIL14 56;dzielnik;DIL8 57;dzielnik;DIL8 58;bramki AND-OR;DIL14 59;bramki AND-OR-INVERT;DIL14 60;ekspandery;DIL14 61;ekspandery;DIL14 62;ekspandery;DIL14 63;bramki;DIL14 64;bramki AND-OR-INVERT;DIL14 65;bramki AND-OR-INVERT;DIL14 68;liczniki;DIL16 69;liczniki;DIL16 70;przerzutniki JK;DIL14 71;przerzutniki RS;DIL14 72;przerzutniki JK;DIL14 73;przerzutniki JK;DIL14 74;przerzutniki D;DIL14 75;przerzutniki D;DIL16 76;przerzutniki JK;DIL16 77;przerzutniki D;DIL14 78;przerzutniki JK;DIL14 79;przerzutniki D;DIL14 80;sumatory;DIL14 81;RAM;DIL14 82;sumatory;DIL14 83;sumatory;DIL16 84;RAM;DIL16 85;komparator;DIL16 86;bramki EXCLUSIVE-OR;DIL14 87;bramki;DIL14 88;ROM;DIL16 89;RAM;DIL16 90;liczniki;DIL14 91;rejestr;DIL14 92;liczniki;DIL14 93;liczniki;DIL14 94;rejestr;DIL16 95;rejestr;DIL14 96;rejestr;DIL16 97;multiplikator;DIL16 98;rejestr;DIL16 99;rejestr;DIL16 Przedstawia ono około 100 układów cyfrowych. Każdy wiersz definiuje jeden układ scalony. Definicja składa się z trzech części, które są rozdzielone średnikami. Na początku mamy numer układu, który określa jego zawartość. Później jest krótki opis, a na końcu znajduje się informacja o obudowie. Nazwa układu cyfrowego zbudowana jest następująco: SN74XX SN - oznaczenie producenta, SN = Texas Instruments Obudowa DILnn określa ilość wyprowadzeń układu scalonego, które są ułożone w dwóch rzędach (ang. DIL = Dual In Line):
|
|||||||||||||||||||||
Dane podane powyżej nie nadają się jeszcze do
zastosowania w bazie danych, ponieważ zawierają elementy
powtarzające się. Najpierw będziemy musieli je przetworzyć. W tym
celu napiszemy odpowiedni program w języku PHP, który wczyta dane i
utworzy na ich podstawie trzy pliki na dysku:
dil.txt - zawiera definicje wyprowadzeń. Składa się z tylu
wierszy, ile różnych typów wyprowadzeń zastosowano w danych
wejściowych. W każdym wierszu zdefiniowany ma być jeden typ w
sposób następujący: numer porządkowy;DILnn.
Na przykład: 1;DIL14 2;DIL8 ... opisy.txt - zawiera opisy układów. Składa się z tylu wierszy, ile różnych opisów znajduje się w danych wejściowych. W każdym wierszu zdefiniowany ma być jeden opis w sposób następujący: numer porządkowy;opis Na przykład: 1;bramki NAND
2;bramki NOR ... us.txt - zawiera definicje układów. Plik ten odpowiada danym wejściowym, w których zamieniono opisy i typ wyprowadzeń na numery zdefiniowane w plikach dil.txt i opisy.txt. Każdy wiersz ma definiować jeden układ scalony w sposób następujący: XX;Y;Z Na przykład: 00;1;1
00 - układ SN7400
Poniższy skrypt umieść w sekcji BODY pliku index.php w katalogu C:/wamp/www, po czym w polu adresowym przeglądarki wpisz localhost, aby skrypt został uruchomiony przez serwer WWW: Skrypt działa następująco: Najpierw wczytujemy dane z pliku dane.txt do tablicy $dane. Każdy element tej tablicy jest wierszem z pliku i zawiera kolejno informacje o numerze układu, o jego rodzaju oraz o typie obudowy. Informacje te są rozdzielone średnikami.
W pętli rozbijamy każdy wiersz (czyli każdy element tablicy $dane, dostępny wewnątrz pętli w zmiennej $v) na trzy składowe, które umieszczamy kolejno:
Po wykonaniu tych operacji z tablic $opis i $obudowa zostaną usunięte duplikaty, każdy opis będzie zatem występował dokładnie jeden raz.
Obie tablice sortujemy naturalnie (bez uwzględniania wielkości liter, wg kolejnych numerów). Elementy będą posortowane, jednakże ich indeksy będą w nieładzie.
Te dwie pętle utworzą nowe tablice $opis2 i $obudowa2, w których elementy i indeksy będą uporządkowane.
Informacje o obudowach zapisujemy w pliku dil.txt. W każdym wierszu będzie numer oraz opis obudowy rozdzielone średnikiem
Informacje o typie układu zapisujemy w pliku opisy.txt. W każdym wierszu zostanie zapisany numer oraz opis.
I na koniec zapisujemy dane w pliku us.txt. Każdy wiersz tego pliku zawiera numer układu scalonego, numer opisu w tablicy $opis2, numer opisu obudowy w tablicy $obudowa2.
|
|||||||||||||||||||||
Pliki dil.txt, opisy.txt oraz us.txt
przekopiuj do katalogu C:\tmp. Teraz musimy w bazie danych
utworzyć odpowiednie tabele, w których będziemy przechowywali dane o
układach scalonych. Tabel będzie trzy:
W tabeli scalaki pole op zawiera numer id_op z tabeli opisy, a pole id_ob zawiera numer id_ob z tabeli obudowy. Zaloguj się do serwera SQL i utwórz tabele (polecenia wpisuj w Notatniku i kopiuj poprzez schowek do wiersza poleceń serwera SQL - w razie pomyłki będzie mniej pisania): Gdy tabele zostaną utworzone, należy wczytać do nich dane z plików, które utworzyliśmy programem w C++ i zapisaliśmy w katalogu c:\tmp. Sprawdź zawartość bazy danych poleceniem. Gdy mamy już działającą bazę danych, możemy zacząć komunikować się z nią z poziomu skryptów PHP. |
|||||||||||||||||||||
Utwórz plik index.html, który będzie wywoływał odpowiednie pliki php. W sekcji body pliku all.php wpisz skrypt:
Schemat współpracy skryptu PHP z serwerem SQL jest następujący: Najpierw łączymy się z serwerem za pomocą funkcji @mysql_connect(). Wymaga ona trzech parametrów:
Jeśli połączenie się powiedzie, to funkcja zwróci wartość różną od zera. Jeśli zwróci zero, to połączenie nie zostało nawiązane. W takim przypadku kończymy działanie skryptu poleceniem exit.
Gdy połączenie z serwerem SQL zostanie nawiązane, wybieramy bazę danych, która przechowuje nasze dane. Dokonujemy tego za pomocą funkcji @mysql_select_db. W przypadku niepowodzenia, funkcja zwróci zero. W takim razie kończymy działanie skryptu poleceniem exit.
Gdy uda się wybrać bazę danych, wysyłamy do niej kwerendę wybierającą za pomocą funkcji @mysql_query. Wynik zapamiętujemy w zmiennej. Jeśli wynik wynosi zero, to kwerenda nie zwróciła żadnych danych.
Inaczej pobieramy z kwerendy kolejne wiersze i umieszczamy je w tablicy $układ. Dostęp do poszczególnych pól mamy za pomocą indeksów tekstowych, takich samych jak w wysłanej kwerendzie. Przetwarzamy dane z tablicy, umieszczając je w tabelce HTML.
|
|||||||||||||||||||||
ĆwiczenieNapisz skrypty obsługujące pozostałe dwie operacje:
|
I Liceum Ogólnokształcące |
Pytania proszę przesyłać na adres email: i-lo@eduinf.waw.pl
W artykułach serwisu są używane cookies. Jeśli nie chcesz ich otrzymywać,
zablokuj je w swojej przeglądarce.
Informacje dodatkowe