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>