Podstawy programowania (PHP/Java)



Podobne dokumenty
ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Laboratorium 1 Wprowadzenie do PHP

Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07

Obiektowe bazy danych

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Instalacja MySQL.

Autor: Joanna Karwowska

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Baza danych do przechowywania użytkowników

Aplikacje WWW - laboratorium

INSTALACJA I KONFIGURACJA SERWERA PHP.

Szablon główny (plik guestbook.php) będzie miał postać:

Bazy danych. Polecenia SQL

Administracja bazami danych

Aplikacje internetowe - laboratorium

Aplikacje WWW - laboratorium

CREATE USER

Wykład 5: PHP: praca z bazą danych MySQL

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Podstawowe wykorzystanie Hibernate

Umieszczanie kodu. kod skryptu

Wykład 6: PHP: praca z bazą danych MySQL, cz.2

Formularze w PHP dla początkujących

5. Współpraca z bazą danych MySQL

Internetowe bazy danych

Zajęcia 11 wykorzystanie MySQL w PHP

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Rejestracja i Logowania - PHP/MySQL

Dokumentacja smsapi wersja 1.4

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

Internetowe bazy danych

Przykładowa integracja systemu Transferuj.pl

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

Zaawansowane bazy danych i hurtownie danych studia zaoczne II stopnia, sem. I

6. Bezpieczeństwo przy współpracy z bazami danych

Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest

Formularze HTML. dr Radosław Matusik. radmat

Dostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK

SSK - Techniki Internetowe

Bazy danych. dr Radosław Matusik. radmat

Data modyfikacji:

BAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech

Programowanie internetowe

PHP + MySQL w laboratorium (1)

Projektowanie systemów baz danych

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

Wykład 5. SQL praca z tabelami 2

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Język PHP. Studium Podyplomowe Sieci Komputerowe i Aplikacje Internetowe. v1.7, 2007/11/23

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Lista dostępnych baz danych: SHOW DATABASES; Lista dostępnych tabel: SHOW TABLES;

Spis treści. Wstęp 5 Rozdział 1. Praca z AJAX-em 9. Rozdział 2. Współpraca ze skryptami PHP 55. Rozdział 3. Obsługa formularzy 81

Wykład 8. SQL praca z tabelami 5

Instalacja mysql 5.7 na Windows z obsługą dużych liter w nazwach tablicy - lower_case_table_names=2

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

Projekt strony internetowej firmy organizującej przyjęcia

Bazy danych. dr inż. Arkadiusz Mirakowski

Bazy Danych i Usługi Sieciowe

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Technologie informacyjne lab. 4

Bazy danych i usługi sieciowe

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

Podstawy JavaScript ćwiczenia

INFORMATYKA MÓJ SPOSÓB NA POZNANIE I OPISANIE ŚWIATA PROGRAM NAUCZANIA INFORMATYKI Z ELEMENTAMI PRZEDMIOTÓW MATEMATYCZNO-PRZYRODNICZYCH

Bazy danych w PHP dla początkujących

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Aplikacje WWW - laboratorium

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

Założenia do ćwiczeń: SQL Server UWM Express Edition: \SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

Projektowani Systemów Inf.

Zagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja

Dane - pobieranie, przekazywanie i przechowywanie. dr Beata Kuźmińska-Sołśnia

PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),

1. Sprawdzenie ustawień konfiguracyjnych. Uruchomienie wiersza poleceń:..\ścieżka\bin>mysqladmin variables

Wprowadzenie do Internetu Zajęcia 5

Na początku utworzymy formularz w czystym języku HTML i przetestujemy go za pomocą przeglądarki WWW.

DECLARE VARIABLE zmienna1 typ danych; BEGIN

SQL 4 Structured Query Lenguage

Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Typy tabel serwera MySQL

Wdrożenie modułu płatności eservice. dla systemu Magento

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Systemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science

Laboratorium 6 Tworzenie bloga w Zend Framework

Kopie bezpieczeństwa NAPRAWA BAZ DANYCH

BACKUP BAZ DANYCH FIREBIRD

Programowanie w języku Python. Grażyna Koba

mysql> UPDATE user SET Password=PASSWORD('pass') WHERE user='root'; Query OK, 2 rows affected (0.05 sec) Rows matched: 2 Changed: 2 Warnings: 0

KOMPUTEROWY SYSTEM WSPOMAGANIA OBSŁUGI JEDNOSTEK SŁUŻBY ZDROWIA KS-SOMED

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

1. Połączenie z bazą danych. W wybranym edytorze tworzymy plik sqltest.py i umieszczamy w nim poniższy kod. #!/usr/bin/python3 import sqlite3

Lekcja 10. Uprawnienia. Dołączanie plików przy pomocy funkcji include() Sprawdzanie, czy plik istnieje przy pmocy funkcji file_exists()

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

Transkrypt:

Studia Podyplomowe Aplikacje i usługi internetowe Podstawy programowania (PHP/Java) Materiały pomocnicze do zajęć laboratoryjnych cz. II styczeń 2014 Opracował dr inż. Andrzej Jędruch 4. MySQL z poziomu PHP Jednym z istotnych czynników podnoszących znaczenie PHP jest możliwość współdziałania z bazą danych MySQL. Za pomocą kilku standardowych funkcji można odczytać potrzebne dane jak również wpisać nowe wartości. 4.1. Prosta baza danych MySQL W przypadku systemu Linux (laboratorium w sali EA 527), po uruchomieniu systemu należy wpisać nazwę użytkownika i hasło. Następnie, po ustabilizowaniu się systemu należy otworzyć okno Terminala. Najpierw trzeba się upewnić czy utworzona wcześniej baza danych zamowienia jest nadal dostępna w tym celu w oknie terminala należy wpisać polecenie: mysqlshow h localhost u ala pskok2013 W odpowiedzi zostanie wyświetlona lista dostępnych baz danych, np. w postaci: +--------------------+ Databases +--------------------+ information_schema test zamowienia +--------------------+ Z podanej tabeli wynika, że baza danych zamowienia jest nadal dostępna. W tej sytuacji pomijamy dalsze działania opisane w niniejszym podrozdziale (4.1) i przechodzimy od razu do podrozdziału 4.2. Jeśli jednak baza danych zamowienia została skasowana, to trzeba ponownie ją utworzyć wraz z przykładową tabelą zawierającą imiona i nazwiska klientów podstawowe działania z tym związane opisane są poniżej. W przypadku systemu Linux w laboratorium w sali EA 527 użytkownicy komputerów nie mają bezpośredniego dostępu do uprawnień administratora root, ale

zamiast tego mogą logować się do serwera mysql jako użytkownicy posługując się dowolną nazwą jako nazwą użytkownika (ale inną niż root). Ten użytkownik nie jest administratorem w ścisłym znaczeniu, ale posiada uprawnienia administratora. W rezultacie logowanie do serwera mysql w oknie terminala przebiega tak: mysql -h localhost u abcde p Enter password: mysql po czym można wprowadzić, opisane dalej, właściwe polecenie tworzenia nowego użytkownika. W podanym wyżej poleceniu abcde oznacza nazwę przykładowego użytkownika. Najpierw utworzymy konto nowego użytkownika konto tworzy się za pomocą polecenia grant. Polecenie to ma wiele opcji, z których najważniejsze prezentuje poniższy przykład: GRANT ALL ON zamowienia.* TO ala @ localhost IDENTIFIED BY skok2013 ; W podanym przykładzie zamowienia jest nazwą bazy danych, ala jest nazwą użytkownika, zaś skok2013 jest hasłem tego użytkownika. Jeśli polecenie zostało zaakceptowane, to pojawi się komunikat Query OK. Po wykonaniu opisanych czynności zamykamy sesję wprowadzając polecenie: quit W rezultacie pojawi się znak zachęty w postaci znaków ~>. W celu wykonania dalszych przykładów należy zalogować się w sposób podany niżej: mysql h localhost u ala p Enter password: skok2013 Można też wpisać hasło bezpośrednio, aczkolwiek może ono w ten sposób zostać ujawnione: mysql h localhost u ala pskok2013 W opisanym dalej przykładzie tworzona jest baza danych (polecenie CREATE DATABASE), w niej tworzona jest tabela (polecenie CREATE TABLE), po czym wypełniana jest zawartość tabeli (polecenie INSERT). Utwórzmy najpierw bazę danych o nazwie zamowienia. create database zamowienia character set 'utf8' collate 'utf8_polish_ci' ; 2

Następnie określamy zestaw używanych znaków: set names 'utf8' collate 'utf8_polish_ci' ; Można tera wydawać kolejne polecenia. W szczególności można wyświetlić listę baz danych służy do tego polecenie: show databases ; Na serwerze może istnieć wiele baz danych wybór jednej z nich można wykonać za pomocą polecenia use. W kolejnym kroku trzeba wybrać bazę zamowienia jako bazę domyślną: use zamowienia ; Przyjmijmy, że dane, które chcemy umieścić w utworzonej tabeli mają postać: Imię Nazwisko Miejscowość Stefania Nowak Poznań Roman Kowalski Szczecin Józef Malinowski Tczew W tym momencie można utworzyć tabelę: create table adresy (imie varchar(15), nazwisko varchar (25), miejscowosc varchar (30)) engine = InnoDB ; W bazach danych mysql (5.x) przeważnie używa sie dwóch typów tabel (co przekłada sie na inny sposób wewnętrznego przechowywania danych): MyISAM typ domyślny, szybki w działaniu, ale ograniczony w zakresie dostępnych mechanizmów DDL i SQL; InnoDB teoretycznie wolniejszy w działaniu, ale wspierający mechanizmy transakcji, kluczy obcych itp. Obecnie zaleca sie stosowanie InnoDB, chyba że mamy do czynienia z setkami tysięcy wierszy i szybkość jest sprawa kluczową. W celu wpisania danych do tabeli użyjemy polecenia INSERT INTO. Uwaga: w trakcie wpisywania poniższych wierszy należy starannie wpisywać znaki apostrofów pominięcie apostrofu uniemożliwia wprowadzanie dalszych poleceń. INSERT INTO adresy (imie, nazwisko, miejscowosc) VALUES ('Stefania', 'Nowak', 'Poznań') ; INSERT INTO adresy (imie, nazwisko, miejscowosc) VALUES ('Roman', 'Kowalski', 'Szczecin') ; INSERT INTO adresy (imie, nazwisko, miejscowosc) VALUES ('Józef', 'Malinowski', 'Tczew') ; 3

Po wpisaniu danych do tabeli można sprawdzić czy dane zostały wprowadzone poprawnie: select * from adresy ; Na ekranie zostaną wyświetlone poniższe informacje: +----------+------------+-------------+ imie nazwisko miejscowosc +----------+------------+-------------+ Stefania Nowak Poznań Roman Kowalski Szczecin Józef Malinowski Tczew +----------+------------+-------------+ Po wykonaniu opisanych czynności zamykamy sesję wprowadzając polecenie: quit 4 4.2. Odczytywanie informacji zawartych w tabeli MySQL za pomocą PHP W poprzednim punkcie utworzyliśmy bazę danych o nazwie zamowienia i tabelę o nazwie adresy. Informacje zawarte w tej tabeli mogą być odczytane przez odpowiedni kod w języku PHP. W tym celu konieczne jest wykonanie następujących czynności: 1. podłączenie do serwera MySQL, 2. wybór roboczej bazy danych, 3. utworzenie zbioru wynikowego zawierającego wszystkie wiersze tablicy, 4. zamknięcie połączenia z serwerem bazy danych. Podłączenie do serwera MySQL realizowane jest za pomocą funkcji mysql_connect(), która ma trzy parametry: nazwa komputera, nazwa użytkownika i hasło. Z kolei za pomocą funkcji mysql_select_db() można wybrać bazę danych, na której będą wykonywane działania. Właściwe zapytanie do serwera MySQL realizowane jest za pomocą funkcji mysql_query(), która wysyła treść zapytania (w postaci ciągu znaków) do serwera MySQL i zwraca wynik jego wykonania. W celu stopniowego zapoznania się ze sposobami dostępu do danych w bazie, na początku rozpatrzymy dość prosty przykład wyznaczania i wyświetlania liczby wierszy w tabeli zawartej w bazie danych.

5 Określanie liczby wierszy w tabeli Przykład dotyczy bazy danych, która została utworzona za pomocą poleceń opisanych w poprzednim punkcie. Podany skrypt należy wpisać do pliku, np. baza1.php. Funkcja mysql_query() dla zapytania SELECT zwraca identyfikator zasobu zawierającego zbiór wynikowy (oczywiście w przypadku poprawnego wykonania) identyfikator ten zostaje wpisany do zmiennej $zbior_wynikowy. Z kolei wywołanie funkcji mysql_num_rows($zbior_wynikowy) powoduje wyznaczenie liczby wierszy zawartych w odczytanej tabeli. Uzyskany wynik jest następnie wyświetlany w konwencjonalny sposób. (plik baza1.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>połączenie z bazą danych - cz. 1</title> </head> <body> <h1>odczytywanie informacji z bazy danych - cz. 1</h1> <?php echo 'Przygotowania do komunikacji z bazą danych<br>'; // nawiązanie połączenia z serwerem MySQL $db_link = mysql_connect("localhost","ala","skok2013") or die ("Brak połączenia z bazą danych"); // wybranie bazy danych "zamowienia" mysql_select_db("zamowienia") or die ("Nie można wybrać takiej bazy danych"); // formuła zapytania w MySQL $pytanie = "select * from adresy"; // wysłanie zapytania do bazy danych $zbior_wynikowy = mysql_query($pytanie) or die ("Błąd w zapytaniu\n");

6 // wyznaczanie liczby wierszy w tabeli $liczba_klientow = mysql_num_rows($zbior_wynikowy); echo "<p>lista klientów zawiera <b>"; echo $liczba_klientow. "</b> pozycji.<br>"; // zamknięcie połączenia z serwerem MySQL mysql_close($db_link);?> </body></html> Wyświetlanie pełnej zawartości tabeli W praktyce z bazy danych wydobywamy tylko selektywnie wybrane informacje. Jednak wyświetlenie pełnej zawartości tabeli może być przydatne, np. w trakcie uruchamiania programu. W celu wyświetlania tabeli do omówionego poprzednio skryptu (plik baza1.php) dodamy nowe wiersze nową wersję skryptu zapiszemy w pliku baza2.php. (plik baza2.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>połączenie z bazą danych - cz. 2</title> </head> <body> <h1>odczytywanie informacji z bazy danych - cz. 2</h1> <?php echo 'Przygotowania do komunikacji z bazą danych<br>'; // nawiazanie połaczenia z serwerem MySQL $db_link = mysql_connect("localhost","ala","skok2013") or die ("Brak połączenia z bazą danych");

7 // wybranie bazy danych "zamowienia" mysql_select_db("zamowienia") or die ("Nie można wybrać takiej bazy danych"); // wybranie sposobu kodowania znaków $kodowanie = "set names 'utf8' collate 'utf8_polish_ci' " ; mysql_query($kodowanie, $db_link) or die ("Błąd w poleceniu kodowania\n"); // formuła zapytania w MySQL $pytanie = "select * from adresy"; // wysłanie zapytania do bazy danych $zbior_wynikowy = mysql_query($pytanie, $db_link) or die ("Błąd w zapytaniu\n"); // wyznaczanie liczby w wierszy w tabeli $liczba_klientow = mysql_num_rows($zbior_wynikowy); echo "<p>lista klientów zawiera <b>"; echo $liczba_klientow. "</b> pozycji.<br>"; echo "<h3>wyświetlanie wg numerów wierszy i kolumn</h3>"; // wyświetlenie pełnej zawartości tabeli 'adresy' for ($nr_wiersza = 0; $nr_wiersza < $liczba_klientow; $nr_wiersza = $nr_wiersza + 1)//albo $nr_wiersza++ // odczytanie kolejnego wiersza tabeli $wiersz = mysql_fetch_row ($zbior_wynikowy); $tekst = ""; $liczba_kolumn = count ($wiersz); // dopisywanie w pętli zawartości kolejnych kolumn // wiersza do zmiennej $tekst for ($nr_kolumny = 0; $nr_kolumny < $liczba_kolumn; $nr_kolumny = $nr_kolumny + 1) // krótszy zapis: $nr_kolumny++

8 $tekst = $tekst. $wiersz [$nr_kolumny]. " "; $nr_biez = $nr_wiersza + 1 ; echo "Klient $nr_biez : $tekst<br>"; // zamknięcie połączenia z serwerem MySQL mysql_close($db_link);?> </body></html> 4.3. Zapisywanie informacji do bazy danych MySQL za pomocą PHP (plik zgloszenie.html) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>zgłoszenie klienta</title> </head> <body> <h1>zgłoszenie klienta</h1> <form action="baza4.php" method="post"> <table> <tr><td>imię:<td><input name=imie_klienta></tr> <tr><td>nazwisko:<td><input name=nazwisko_klienta></tr> <tr><td>miejscowość:<td><input name=miejscowosc_klienta></tr> </table> <p> <input type=submit value="wyślij"> <input type=reset value="wyczyść pola"> </form> </body></html>

9 (plik baza4.php) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>zapisywanie informacji do bazy danych</title> </head> <body> <h1>zapisywanie informacji do bazy danych - cz. 4</h1> <?php $form_nazwisko = $_POST["nazwisko_klienta"]; $form_imie = $_POST["imie_klienta"]; $form_miejscowosc = $_POST["miejscowosc_klienta"]; echo "<br>przyjęto zgłoszenie od: "; echo "<br> Nazwisko: <b>$form_nazwisko</b>"; echo "<br> Imię: <b>$form_imie</b>"; echo "<br> Miejscowość: <b>$form_miejscowosc </b><br>" ; echo 'Przygotowania do komunikacji z bazą danych<br>'; // nawiazanie połaczenia z serwerem MySQL $db_link = mysql_connect("localhost","ala","skok2013") or die ("Brak połączenia z bazą danych"); // wybranie bazy danych "zamowienia" mysql_select_db("zamowienia") or die ("Nie można wybrać takiej bazy danych"); // wybranie sposobu kodowania znaków $kodowanie = "set names 'utf8' collate 'utf8_polish_ci' " ; mysql_query($kodowanie, $db_link) or die ("Błąd w poleceniu kodowania\n");

// przygotowanie polecenia dopisania klienta do tabeli $dopisanie = "insert into adresy(imie, nazwisko, miejscowosc) values (\"$form_imie\", \"$form_nazwisko\", \"$form_miejscowosc\")"; // dopisanie nowego klienta $odp1 = mysql_query($dopisanie, $db_link); //============================================ // wyświetlenie zaktualizowanej zawartości tabeli // formuła zapytania w MySQL $pytanie = "select * from adresy"; // wysłanie zapytania do bazy danych $zbior_wynikowy = mysql_query($pytanie, $db_link) or die ("Błąd w zapytaniu\n"); // wyznaczanie liczby w wierszy w tabeli $liczba_klientow = mysql_num_rows($zbior_wynikowy); echo "<p>po rejestracji zgłoszenia lista klientów zawiera <b>"; echo $liczba_klientow. "</b> pozycji.<br>"; echo "<h3>wyświetlanie wg nazw pól</h3>"; while ($wartosci = mysql_fetch_assoc($zbior_wynikowy)) $tekst = "<b>". $wartosci['miejscowosc']. "</b>: "; $tekst.= $wartosci['imie']. " "; $tekst.= $wartosci['nazwisko']; echo "$tekst <br>\n"; // zamknięcie połączenia z serwerem MySQL mysql_close($db_link);?> </body></html> 10

11 4.4. Aplikacja przykładowa Konkurs informatyczny Poniżej podano plik HTML zawierający zestaw pytań. W celu ułatwienia uruchomienia przykładu w komentarzach podano poprawne odpowiedzi. Oczywiście, w zastosowaniach praktycznych komentarze te trzeba usunąć. (plik informatyka2.php) <?php /* Moduł zawierajacy zestaw pytań. Odpowiedzi przekazywane są do skryptu kontrola2.php. */?> Odpowiedzi umieszczone w komentarzach należy usunąć przed wprowadzeniem formularza do eksploatacji. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>test z informatyki</title> </head> <body bgcolor=#ffffaa> <h1><center>pytania konkursowe z informatyki </center></h1> <form action="kontrola2.php" method="post"> <table> <tr><td>imię:<td><input name=imie_uczestnika></tr> <tr><td>nazwisko:<td><input name=nazwisko_uczestnika></tr> <tr><td>miejscowość:<td><input name=miejscowosc_uczestnika></tr> </table> <h2>pierwsza wersja PHP była rozpowszechniana od roku?</h2>

12 <input type="radio" name="z1" value="1">1983<br> <input type="radio" name="z1" value="2">1947<br> <input type="radio" name="z1" value="3">2005<br> <input type="radio" name="z1" value="4">1994<br> <!-- odp. poprawna: 1994 --> <h2> Produkcję procesora Pentium rozpoczęto w roku </h2> <input type="radio" name="z2" value="1">1989<br> <input type="radio" name="z2" value="2">2001<br> <input type="radio" name="z2" value="3">1993<br> <input type="radio" name="z2" value="4">1986<br> <!-- odp. poprawna: 1993 --> <h2>które z podanych nazw są nazwami systemów operacyjnych:</h2> <input type="checkbox" name="z3[]" value="1">linux<br> <input type="checkbox" name="z3[]" value="2">ethernet<br> <input type="checkbox" name="z3[]" value="3">java<br> <input type="checkbox" name="z3[]" value="4">os/2<br> <!-- odp. poprawna: Linux, OS/2 --> <h2>zaznacz typy pamięci, w których informacja jest zachowywana nawet po wyłączeniu zasilania</h2> <input type="checkbox" name="z4[]" value="1"> dyski twarde<br> <input type="checkbox" name="z4[]" value="2"> dyskietki<br> <input type="checkbox" name="z4[]" value="3"> pamięć operacyjna (RAM)<br> <input type="checkbox" name="z4[]" value="4"> CD ROM<br> <!-- odp. poprawna: 1, 2, 4 --> <h2>jak nazywa się największa ogólnoświatowa komputerowa sieć sieci?</h2> <input type=text name=z5> <!-- odp. poprawna: Internet --> <h2>wyjaśnij dlaczego obliczenia we współczesnych komputerach wykonywane są na liczbach

w systemie dwójkowym</h2> <textarea wrap = "virtual" name = "obl_dwojkowe"> </textarea> <p> <input type=submit value = "Wyślij"> <input type=reset value = "Czyść"> </form> </body></html> 13 Skrypt PHP uruchamiany po przesłaniu formularza ma postać: (plik kontrola2.php) <?php /* Sprawdzanie wyników testów. Wyniki przekazywane są ze skryptu informatyka2.php. */?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title> Sprawdzenie testu z informatyki</title> </head> <body bgcolor=#ddff88> <h1><center>wynik testu z informatyki</center></h1> <?php $form_nazwisko = $_POST["nazwisko_uczestnika"]; $form_imie = $_POST["imie_uczestnika"]; $form_miejscowosc = $_POST["miejscowosc_uczestnika"]; $obl_dwojkowe = $_POST["obl_dwojkowe"];

14 echo "<br>przyjęto odpowiedzi od: "; echo "<br> Nazwisko: <b>$form_nazwisko</b>"; echo "<br> Imię: <b>$form_imie</b>"; echo "<br>miejscowość: <b> $form_miejscowosc</b><br>"; $z1 = $_POST["z1"]; $z2 = $_POST["z2"]; $z3 = $_POST["z3"]; $z4 = $_POST["z4"]; $z5 = $_POST["z5"]; echo 'Przygotowania do komunikacji z bazą danych<br>'; // nawiazanie połaczenia z serwerem MySQL $db_link = mysql_connect("localhost","ala","skok2013") or die ("Brak połączenia z bazą danych"); // wybranie bazy danych "zamowienia" mysql_select_db("zamowienia") or die ("Nie można wybrać takiej bazy danych"); // wybranie sposobu kodowania znaków $kodowanie = "set names 'utf8' collate 'utf8_polish_ci' " ; mysql_query($kodowanie, $db_link) or die ("Błąd w poleceniu kodowania\n"); // tworzenie tablicy 'konkurs', jeśli dotychczas // nie utworzono $tworzenie_tablicy = "create table if not exists konkurs( data_zgl varchar(20), imie varchar(20), nazwisko varchar(20), miejscowosc varchar(20), punkty integer, Z1 integer, Z2 integer, Z3 integer, Z4 integer, Z5 integer, Z6 integer)" ; mysql_query($tworzenie_tablicy, $db_link) or die ("Błąd w poleceniu tworzenia tablicy\n"); $punkty = 0; $Z1 = 0; $Z2 = 0; $Z3 = 0; $Z4 = 0; $Z5 = 0; $Z6 = 0;

15 // zadanie 1 -> odpowiedź 4 if ( $z1 == 4 ) echo "Zadanie 1 poprawnie<br>\n"; $punkty++; $Z1 = 1; else echo "Zadanie 1 błąd<br>\n"; // zadanie 2 -> odpowiedź 3 if ($z2 == 3) echo "Zadanie 2 poprawnie<br>\n"; $punkty++; $Z2 = 1; else echo "Zadanie 2 błąd<br>\n"; // zadanie 3 -> odpowiedzi 1 i 4 // funkcja in_array sprawdza czy podana // wartość (pierwszy argument) znajduje się // we wskazanej tablicy (drugi argument) // funkcja zwraca wartość TRUE jeśli znaleziono, albo // FALSE jeśli nie znaleziono $z3[] = 0; $z_punkty = 0; if (in_array (1, $z3)) $z_punkty++; if (!in_array(2, $z3)) $z_punkty++; if (!in_array(3, $z3)) $z_punkty++; if (in_array (4, $z3)) $z_punkty++; if ($z_punkty == 4) echo "Zadanie 3 poprawnie<br>\n"; $punkty++; $Z3 = 1; else echo "Zadanie 3 błąd<br>\n";

16 // zadanie 4 -> odpowiedzi 1, 2 i 4 $z4[] = 0; $z_punkty = 0; if (in_array (1, $z4)) $z_punkty++; if (in_array (2, $z4)) $z_punkty++; if (!in_array(3, $z4 )) $z_punkty++; if (in_array (4, $z4 )) $z_punkty++; if ($z_punkty == 4) echo "Zadanie 4 poprawnie<br>\n"; $punkty++; $Z4 = 1; else echo "Zadanie 4 błąd<br>\n"; // zadanie 5 -> Internet if (strtoupper($z5) == strtoupper("internet")) echo "Zadanie 5 poprawnie<br>\n"; $punkty++; $Z5 = 1; else echo "Zadanie 5 błąd<br>\n"; // zadanie 6 - tekst dot. obliczeń w systemie dwójkowym // na razie zadanie nie jest oceniane echo "<br><br>odpowiedź na pytanie 6:<br> "; echo "$obl_dwojkowe"; echo "<br><br>"; // podsumowanie echo "<h4>zdobytych punktów: $punkty na 5</h4>"; $data_czas = date("j.m.y H:i"); $dopisanie = "insert into konkurs(data_zgl, imie, nazwisko,miejscowosc,punkty, Z1, Z2, Z3, Z4, Z5, Z6)

17 values (\"$data_czas\", \"$form_imie\", \"$form_nazwisko\", \"$form_miejscowosc\", \"$punkty\", \"$Z1\",\"$Z2\",\"$Z3\", \"$Z4\",\"$Z5\",\"$Z6\")"; $odp1 = mysql_query($dopisanie, $db_link); // zamknięcie połączenia z serwerem MySQL mysql_close($db_link);?> <a href=informatyka2.php>powrót do testu</a> <br><br> </body></html> Poniżej podano skrypt PHP wyświetlający zestawienie uczestników konkursu wraz z ilością uzyskanych punktów. (plik podsumowanie2.php) <?php /* Zestawienie wyników testów z informatyki. Testy przeprowadzane są przez moduł informatyka2.php, a wyniki zapisywane są przez moduł kontrola2.php */?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>podsumowanie testu z informatyki</title> </head> <body bgcolor=#55ffaa> <h1>zestawienie zbiorcze wyników testów z informatyki</h1>

18 <?php // nawiązanie połączenia z serwerem MySQL $db_link = mysql_connect("localhost","ala","skok2013") or die ("Brak połączenia z bazą danych"); // wybranie bazy danych "zamowienia" mysql_select_db("zamowienia") or die ("Nie można wybrać takiej bazy danych"); // wybranie sposobu kodowania znaków $kodowanie = "set names 'utf8' collate 'utf8_polish_ci' " ; mysql_query($kodowanie, $db_link) or die ("Błąd w poleceniu kodowania\n"); // formuła zapytania w MySQL $pytanie = "select * from konkurs"; // wysłanie zapytania do bazy danych $zbior_wynikowy = mysql_query($pytanie, $db_link) or die ("Błąd w zapytaniu\n"); // wyznaczanie liczby w wierszy w tabeli $liczba_uczestnikow = mysql_num_rows($zbior_wynikowy); echo "<p>w konkursie wzięło udział "; echo "$liczba_uczestnikow</b> uczestników.<br>"; echo "<h3>wyświetlanie listy uczestników i liczby uzyskanych punktów</h3>"; while ($wartosci = mysql_fetch_assoc($zbior_wynikowy)) $tekst = "<b>". $wartosci['miejscowosc']."</b>: " ; $tekst.= $wartosci['imie']. " "; $tekst.= $wartosci['nazwisko']. " --- "; $tekst.= "Liczba punktów = " ; $tekst.= $wartosci['punkty']; $tekst.= " (Z1=". $wartosci['z1']; $tekst.= " Z2=". $wartosci['z2']; $tekst.= " Z3=". $wartosci['z3']; $tekst.= " Z4=". $wartosci['z4'];

19 $tekst.= " Z5=". $wartosci['z5']. ")" ; $tekst.= " ". $wartosci['data_zgl']; echo "$tekst <br>\n"; // zamknięcie połączenia z serwerem MySQL mysql_close($db_link);?> </body></html>