Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki



Podobne dokumenty
Instalacja MySQL.

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP

Internetowe bazy danych

Autor: Joanna Karwowska

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

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

Aplikacje WWW - laboratorium

Baza danych do przechowywania użytkowników

Internetowe bazy danych

Bazy Danych i Usługi Sieciowe

Aplikacje WWW - laboratorium

Bazy danych i usługi sieciowe

Bazy Danych i Usługi Sieciowe

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

5. Współpraca z bazą danych MySQL

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

PHP + MySQL w laboratorium (1)

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

Podstawy programowania III WYKŁAD 2

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

Bazy Danych - Instrukcja do Ćwiczenia laboratoryjnego nr 8

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

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

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

Język SQL, zajęcia nr 1

Bazy danych i strony WWW

Aplikacje WWW - laboratorium

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

Zaawansowane bazy danych i hurtownie danych

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

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

PHP: bazy danych, SQL, AJAX i JSON

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

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

Aplikacje internetowe - laboratorium

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

Zajęcia 11 wykorzystanie MySQL w PHP

Projektowanie systemów baz danych

Podstawy programowania (PHP/Java)

Zajęcia 13 wykorzystanie MySQL w PHP cz. 2

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

Wprowadzenie do Doctrine ORM

Projektowanie aplikacji w modelu MVC opartej o framework CodeIgniter

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

Obiektowe bazy danych

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

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

Rejestracja i Logowania - PHP/MySQL

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

SIECI KOMPUTEROWE I BAZY DANYCH

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

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

Bazy danych w PHP dla początkujących

Paweł Cieśla. Dokumentacja projektu

Sprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007

Projekt strony internetowej firmy organizującej przyjęcia

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

Aplikacje internetowe

Struktura drzewa w MySQL. Michał Tyszczenko

Programowanie internetowe

Część VII Baza danych MySQL i PHP

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

Bazy danych. dr Radosław Matusik. radmat

CREATE USER

Specyfikacja instalacji usługi SMS Premium w Przelewy24.pl

Umieszczanie kodu. kod skryptu

Dlaczego PHP? - zalety

Bazy danych. Polecenia SQL

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

Składowane procedury i funkcje

Internetowe bazy danych

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

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

Instrukcja obsługi serwera FTP v

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

KatMPBSoft - 1 -

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

SIECI KOMPUTEROWE I BAZY DANYCH

Bazy danych postgresql programowanie i implementacja

Aplikacje WWW - laboratorium PHP + bazy danych

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

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

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

15. Funkcje i procedury składowane PL/SQL

LeftHand Sp. z o. o.

Problemy techniczne SQL Server

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

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

Zakres tematyczny dotyczący kursu PHP i MySQL - Podstawy pracy z dynamicznymi stronami internetowymi

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Problemy techniczne SQL Server

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Gerard Frankowski, Zespół Bezpieczeństwa PCSS. Nowoczesne technologie bliżej nas Poznań,

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Dostęp do baz danych w ASP.NET.

Aplikacje WWW - laboratorium

Bazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław r.

SYSTEMY TELEINFORMATYCZNE

Transkrypt:

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Przetwarzanie i organizowanie danych : bazy danych Nr ćwiczenia 10 Temat Aplikacje internetowe z zastosowaniem języka PHP Cel ćwiczenia Zapoznanie się z podstawami tworzenia skryptów PHP umożliwiających połączenia z bazą danych, tworzenie bazy danych oraz jej komponentów oraz przetwarzania danych tj. realizacja zapytań i aktualizacja bazy danych Wymagane teoretyczne przygotowanie Podstawy języka C lub PHP oraz html Sposób zaliczenia Prowadzący a) Wstęp 1.1. Oprogramowanie Baza MySQL jest jedną z najpopularniejszych baz danych, z jakimi współpracują skrypty PHP. Jest to oprogramowanie dystrybuowane na zasadach open source. PHP (Hypertext Preprocessor) jest językiem skryptowym przeznaczonym przede wszystkim do tworzenia dynamicznych aplikacji internetowych. 1.2. Cel ćwiczeń Celem ćwiczeń zawartych w instrukcji jest przedstawienie możliwości komunikacji pomiędzy wykonywanymi skryptami oraz bazą danych (MySQL), która zawiera informacje wykorzystywane przez aplikację WWW. 1.3. Metoda osadzania skryptów PHP w stronie internetowej. Do osadzenia skryptu PHP w stronie służą znaczniki <?php oraz. Treść skryptu należy umieścić pomiędzy tymi znacznikami. Podczas przesłania żądania od klienta do serwera z prośbą o udostępnienie zasobu zawierającego skrypt PHP, skrypt ten jest wykonywany przez serwer, a wyniki zwrócone przez skrypt zastępują treść strony ograniczoną znacznikami skryptu. Aplikacja kliencka otrzymuje zatem stronę zawierającą jedynie wyniki, a nie źródła skryptu. Prosty przykład Aby uruchomić poniższy przykład należy zalogować się do serwera i utworzyć plik php. W tym celu:\ a) uruchomić program putty.exe.\ b) W polu Host name podać adres IP serwera (dendrit.issi.uz.zgora.pl) i kliknąć przycisk Open.

c) Przy zapytaniu o nazwę użytkownika (login as) podać podyplom i wcisnąć enter. d) Przy zapytaniu o hasło (password) podać podyplom i wcisnąć enter (podczas wprowadzania hasła nie pokazują się żadne znaki). e) Po zalogowaniu się uruchomić program mc (komenda mc i enter) f) Przejść do katalogu public_html. g) Utworzyć nowy plik (Shift+F4) h) Wprowadzić treść poniższego skryptu <html> <head> <title>przykład</title> </head> <body> </body> </html> <?php echo "Cześć! Jestem skryptem PHP!"; i) Zapisać plik (klawisz F2) pod nazwą nazwisko.php i) Uruchomić przeglądarkę (Internet Explorer) i wprowadzić adres: http://dendrit.issi.uz.zgora.pl/~podyplom/nazwisko.php 2. Tworzenie połączenia z bazą danych z poziomu PHP Gdy interpreter PHP poprawnie ładuje rozszerzenia skryptom komunikowanie się z wybranymi bazami danych, możemy rozpocząć tworzenie skryptów, które operują na bazach danych. 2.1 Połączenie z serwerem MySQL Nawiązanie połączenia z serwerem bazy danych MySQL umożliwia funkcja: mysql_connect: $id = mysql_connect ( 127.0.0.1, user, haslo ); echo ($id); Serwerem bazy danych jest host o numerze 127.0.0.1 (localhost). Użytkownik bazy danych to user, a jego hasło to haslo. W przeglądarce WWW powinien pojawić się napis: resource id # 1. Jeżeli użyjemy ponownie instrukcji mysql_connect ( 127.0.0.1, user, haslo ); to interpreter nie utworzy nowego połączenia, lecz zwróci identyfikator połączenia, które już istnieje, dzięki czemu oszczędzane są zasoby komputera.

Po nawiązaniu połączenia z serwerem bazy danych, będzie ono trwało dopóki nie zostanie zakończony skrypt, który zainicjował połączenie, lub jeśli nie zostanie zamknięty funkcją mysql_close(). bool mysql_close ([resource identyfikator]); Jeżeli argument funkcji mysql_close() nie zostanie podany, funkcja zamyka ostatnie utworzone połączenie. Jeżeli interpreter PHP nie będzie mógł nawiązać połączenia z serwerem bazy danych to pojawi się komunikat o błędzie: Warning: mysql_connect () [function mysql_connect ()] : Can t connect to MySQL serwer on 127.0.0.1 in skrypt. php on line 1 Dodatkowo funkcja zwróci wartość false zamiast identyfikatora połączeń. 2.2. Przesyłanie zapytań do bazy danych Jeśli skrypt PHP uzyska połączenie z serwerem bazy danych, można rozpocząć komunikacje z serwerem za pomocą języka SQL. W PHP do wykonania zapytań języka SQL służy funkcja mysql_query() resource mysql_query(string query [. resource identyfikator] ); Metoda mysql_query() wysyła zapytanie SQL podane jako argument query do serwera MySQL, w którym połączenie jest identyfikowane przez argument identyfikator. Jeśli brakuje identyfikatora, wykonanie funkcji mysql_query() dotyczy ostatnio otwartego połączenia. 2.3. Tworzenie nowej bazy danych i tabel if (!mysql_query ( create database moja_baza )) { exit ( Wystapil blad numer (.mysql_errno(). ): <b>.mysql_error(). </b> ); Usunięcie bazy danych if (!mysql_query ( drop database moja_baza )) { exit ( Wystapil blad numer (.mysql_errno(). ): <b>.mysql_error(). </b> );

Tworzenie bazy danych z tworzeniem tabel Zdefiniujmy funkcje wykonującą zapytania SQL do bazy MySQL: <? Php // Funkcja wykonującą zapytania SQL do bazy MySQL: function zapytanie ($string_zapytania) { if (!mysql_query ($string_zapytania)) { exit ( Wystapil blad numer (.mysql_errno(). ): <b>.mysql_error(). </b> ); Nawiązanie połączenia z serwerem bazy danych MySQL umożliwia funkcja: mysql_connect: $id = mysql_connect ( 127.0.0.1, user, ); echo ($id); Utworzenie bazy zapytanie ( create database moja_baza ); Wybranie bazy moja baza jako bieżącej bazy danych zapytanie ( use moja_baza ); Utworzenie tabel: marka_sam (id int PRIMARY KEY, nazwa varchar(20) NOT NULL, kraj varchar(35) NOT NULL, data_zal char(4)) model ( id int PRIMARY KEY, nazwa varchar(20) NOT NULL, moc int NOT NULL, moment int NOT NULL, t yp varchar(20) NOT NULL, id_marki int ) zapytanie ( Create table marka_sam (id int PRIMARY KEY, nazwa varchar(20) NOT NULL, kraj varchar(35) NOT NULL, data_zal char (4)) ); zapytanie ( Create table model ( id int PRIMARY KEY, nazwa varchar(20) NOT NULL, moc int NOT NULL, moment int NOT NULL, t yp varchar(20) NOT NULL, id_marki int references marka_sam (id)) );

); 2.4. Wprowadzenie danych do tabeli marka_sam zapytanie ( Insert into marka_sam (id, nazwa, kraj, data_zal ) values (1, AUDI, Niemcy, 1960 ) ); zapytanie ( Insert into marka_sam (id, nazwa, kraj, data_zal ) values (2, BMW, Niemcy, 1930 ) ); zapytanie ( Insert into marka_sam (id, nazwa, kraj, data_zal ) values (3, Fiat, Włochy, 1920 ) ); 2.5. Pobieranie informacji z bazy danych MySQL Funkcja mysql_query() może zwrócić obiekt typu resorce, gdy wynikiem zapytania SQL (np. zapytanie typu select będzie zbiór rekordów, które zwróci serwer MySQL. Aby uzyskać dostęp do informacji należy skorzystać z funkcji z grupy mysql_fetach Zdefiniujmy skrypt wyświetlające informacje pobrane z bazy MySQL <html> <head> <title > Skrypt </title> <head> <body> // Funkcja wykonującą zapytania SQL do bazy MySQL i zwracająca wynik: function zapytanie_wynik($string_zapytania) { if (!$rezultat = mysql_query ($string_zapytania)) { exit ( Wystapil blad numer (.mysql_errno(). ): <b>.mysql_error(). </b> ); return $rezultat; zapytanie_wynik( use moja_baza); //wybor bazy danych dla dalszych operacji $wynik_sql = zapytanie_wynik( Select * From marka_sam ); // *** Tutaj należy wstawiać kolejno różne postacie funkcji mysql_fetch_...( ) określone w następnych punktach </body> </html>

Wyświetlanie wyników zapytania z zastosowaniem funkcji mysql_fetch_row( ) echo ( table border = 0 > ); echo ( <tr> <td colspan = 2 > <b> Wyniki </b> </td> < /tr> ); while ($row = mysql_fetch_row( $wynik_sql)) { echo ( <tr> <td> align = right > Id : </td> <td>.$row[0]. </td> </tr> ); echo ( <tr> <td> align = right > Nazwa : </td> <td>.$row[1]. </td> </tr> ); echo ( <tr> <td> align = right > Kraj : </td> <td>.$row[2]. </td> </tr> ); echo ( <tr> <td> align = right > Data_zalozenia : </td> <td>.$row[3]. </td> </tr> ); echo ( <tr> <td colspan = 2 > </td> < /tr> ); echo ( </table> ); W miejsce *** wstaw powyższy kod aby zobaczyć działanie funkcji mysql_fetch_row( ) Wyświetlanie wyników zapytania z zastosowaniem funkcji mysql_fetch_assoc( ) echo ( table border = 0 > ); echo ( <tr> <td colspan = 2 > <b> Wyniki </b> </td> < /tr> ); while ($row = mysql_fetch_assoc( $wynik_sql)) { echo ( <tr> <td> align = right > Id : </td> <td>.$row[ id ]. </td> </tr> ); echo ( <tr> <td> align = right > Nazwa : </td> <td>.$row[ Nazwa ]. </td> </tr> ); echo ( <tr> <td> align = right > Kraj : </td> <td>.$row[ kraj ]. </td> </tr> ); echo ( <tr> <td> align = right > Data_zalozenia : </td> <td>.$row[ data_zal ]. </td> </tr> ); echo ( <tr> <td colspan = 2 > </td> < /tr> ); echo ( </table> ); W miejsce *** wstaw powyższy kod aby zobaczyć działanie funkcji mysql_fetch_assoc( ) Wyświetlanie wyników zapytania z zastosowaniem funkcji mysql_fetch_array( ) echo ( table border = 0 > ); echo ( <tr> <td colspan = 2 > <b> Wyniki </b> </td> < /tr> ); while ($row = mysql_fetch_array( $wynik_sql, MySQL_ASSOC)) { echo ( <tr> <td> align = right > Id : </td> <td>.$row[ id ]. </td> </tr> ); echo ( <tr> <td> align = right > Nazwa : </td> <td>.$row[ Nazwa ]. </td> </tr> ); echo ( <tr> <td> align = right > Kraj : </td> <td>.$row[ kraj ]. </td> </tr> ); echo ( <tr> <td> align = right > Data_zalozenia : </td> <td>.$row[ data_zal ]. </td> </tr> );

echo ( <tr> <td colspan = 2 > </td> < /tr> ); echo ( </table> ); W miejsce *** wstaw powyższy kod aby zobaczyć działanie funkcji mysql_fetch_array( ) Wyświetlanie wyników zapytania z zastosowaniem funkcji mysql_fetch_object( ) echo ( table border = 0 > ); echo ( <tr> <td colspan = 2 > <b> Wyniki </b> </td> < /tr> ); while ($row = mysql_fetch_object( $wynik_sql)) { echo ( <tr> <td> align = right > Id : </td> <td>.$row->id. </td> </tr> ); echo ( <tr> <td> align = right > Nazwa : </td> <td>.$row->nazwa. </td> </tr> ); echo ( <tr> <td> align = right > Kraj : </td> <td>.$row->kraj. </td> </tr> ); echo ( <tr> <td> align = right > Data_zalozenia : </td> <td>.$row->data_zal. </td> </tr> ); echo ( <tr> <td colspan = 2 > </td> < /tr> ); echo ( </table> ); W miejsce *** wstaw powyższy kod aby zobaczyć działanie funkcji mysql_fetch_object( ) Dodatkowe informacje o uzyskiwanych danych Funkcja: mysql_num_row() określa liczbę zawartą w wyniku zapytania mysql_connect ( 127.0.0.1, user, haslo ); mysql_query ( use moja_baza ); $wynik_sql = mysql_query( Select * From marka_sam ); ech( Zwrócono. mysql_num_rows ($wynik_sql). rekordy/krotki ); Wynikiem wykonania skryptu jest tekst Zwrócono 3 rekordy/krotki Funkcja: mysql_num_fields() określa liczbę pól zawartą w rekordach będących wynikiem zapytania mysql_connect ( 127.0.0.1, user, haslo ); mysql_query ( use moja_baza ); $wynik_sql = mysql_query( Select * From marka_sam ); ech( Rekord danych zawiera. mysql_num_fields ($wynik_sql). pola );

Wynikiem wykonania skryptu jest tekst Rekord danych zawiera 4 pola Funkcja: mysql_num_name() określa nazwę pola rekordu danych będących wynikiem zapytania mysql_connect ( 127.0.0.1, user, haslo ); mysql_query ( use moja_baza ); $wynik_sql = mysql_query( Select * From marka_sam ); ech( Nazwa pola o indeksie 1 to. mysql_num_name ($wynik_sql, 1). ); Wynikiem wykonania skryptu jest tekst Nazwa pola o indeksie 1 to nazwa Funkcja: mysql_num_type() określa typ pola rekordu danych będących wynikiem zapytania mysql_connect ( 127.0.0.1, user, haslo ); mysql_query ( use moja_baza ); $wynik_sql = mysql_query( Select * From marka_sam ); ech( Typ pola o indeksie 1 to. mysql_num_type ($wynik_sql, 1). ); Wynikiem wykonania skryptu jest tekst Typ pola o indeksie 1 to string 3. Tworzenie formularza umożliwjającego dodawanie danych do relacji marka_sam <?php if (isset($http_post_vars['tekst1'])) { $con = mysql_connect("localhost","podyplom","podyplom"); mysql_select_db("db_podyplom"); $result = mysql_query("insert into marka_sam (id, nazwa, kraj, data_zal) values ('".$HTTP_POST_VARS['tekst1']."', '".$HTTP_POST_VARS['tekst2']."', '".$HTTP_POST_VARS['tekst3']."','".$HTTP_POST_VARS['tekst4']."')"); mysql_close($con); <html> <body> <?php $con = mysql_connect("localhost","podyplom","podyplom"); mysql_select_db("db_podyplom"); $result = mysql_query("select * from testowa"); while (($linia = mysql_fetch_array($result))) { echo "id: ".$linia['id'].". ".$linia['tekst']."</br>\n"; <form method=post> Id: <input type=text name=tekst1>

Nazwa: <input type=text name=tekst2> Kraj : <input type=text name=tekst3> Rok założenia : <input type=text name=tekst4> <input type=submit value="dodaj"> </form> </body> </html> Literatura: [1] Lis M., PHP i MySQL. Dla każdego, Wydawnictwo Helion 2005 [2] Hugh E. Williams, David Lane, PHP i MySQL. Aplikacje bazodanowe, Wydawnictwo Helion 2005 [3] Bowman J.S., Emerson S.L., Darnovsky M., Podręcznik języka SQL, WNT Warszawa, 2001 [4] Converse T., Park J., PHP5 i MySQL. Biblia, Wydawnictwo Helion 2005