Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Upload – MySQL SYSTEMY TELEINFORMATYCZNE Wykład 6 AiR 5r.

Podobne prezentacje


Prezentacja na temat: "Upload – MySQL SYSTEMY TELEINFORMATYCZNE Wykład 6 AiR 5r."— Zapis prezentacji:

1 Upload – MySQL SYSTEMY TELEINFORMATYCZNE Wykład 6 AiR 5r.

2 Upload plików Formularz

3 Dostępna jest na serwerze asocjacyjna dwuwymiarowa tablica $_FILES obrazek1obrazek2… name type tmp_name error size nazwy pól input

4

5 $filename = './zdjecia/'.$_FILES["obrazek"]["name"]; if (file_exists($filename)) echo "Plik ". $filename." istnieje"; else { echo "Plik". $filename." nie istnieje"; } $nazwa_kat = 'zdjecia'; echo " Utworzenie tablicy nazw zdjęć w katalogu: ".$nazwa_kat." "; $kat = opendir($nazwa_kat); //otwarcie katalogu do czytania while ($naz_pliku = readdir($kat)) //warunek zakończenia spisu if (($naz_pliku !=".")&&($naz_pliku !="..")) //pominięcie. i.. $tbl[ ]=$naz_pliku;//nazwy do tablicy closedir($kat); //zamknięcie katalogu //… dalej wyświetlenie tablicy i …obrazków…. ?>

6 Serwer MySQL – język zapytań Firma Oracle wersje: od 3 przez 5.1 aż do 7.1 (MySQLCluster) też wersje dla Windows

7 Konsola MySQL (lokalnie lub zdalnie) Uruchomienie wiersza polecenia (START - Uruchom… cmd – lub Programy –Akcesoria - Wiersz polecenia). Przechodzimy do foldera c:\usr\mysql\bin mysql –u root –p wpisujemy hasło i możemy używać kwerend MySQL Metody zarządzania bazą: PhpMyAdmin (przeglądarka) W skryptach PHP Pliki baz danych tworzone są zwykle w folderze mysql/data proces mysqld.exe lub mysql_nt.exe(menedżer zadań Windows).

8 Uruchomienie lokalne konsoli MySQL c:\usr\mysql\bin>mysql –u root –p Password: Zgłasza się konsola MySQL – gotowość do wpisywania poleceń: mysql> zdalnie na serwerze folder /var/lib/mysql

9 Baza danych składa się z tabel Tabele to zestaw rekordów danych elementarnych (pola rekordu) Model relacyjny Normalizacja tabel i związki między nimi (złączenia) - ERD idnazwaadres 1ABCRzeszów rekord pole

10 OPERACJE SQL NA BAZIE (kwerendy) tworzenie bazy i tabeli selekcja rekordów wstawianie rekordów modyfikacja treści rekordów modyfikacja struktury usuwanie rekordów, tabeli, bazy Poznanie języka SQL będzie nam potrzebne do wykonania opreacji na bazie w skryptach PHP

11 CREATE DATABASE nazwa_bazy; TWORZENIE BAZY będziemy tworzyć w PHPMyAdmin, ale można też wykonać kwerendą w zdalnej konsoli MySQL lub wykonać kwerendę w PHP

12 USE nazwa bazy; CREATE TABLE nazwa_tabeli (nazwapola1 typ parametry, nazwapola2 typ parametry, itd); parametry: NOT NULL - niepuste PRIMARY KEY – klucz główny AUTO_INCREMENT - autonumerowanie DEFAULT wartosc_domyślna Np. CREATE TABLE dostawcy (Id INT(10) AUTO_INCREMENT PRIMARY KEY, Nazwa VARCHAR(10), Adres VARCHAR(30)); TWORZENIE TABELI będziemy tworzyć w PHPMyAdmin ale można tez wykonać kwerendą lub w PHP wykonać kwerendy:

13 TYPY DANYCH Standard ISO SQL (1992) przewiduje około piętnastu typów danych, podzielonych na grupy: Każda tabela ma pola określonego typu – jedno z nich powinno być kluczem głównym – wartości w tym polu są unmikalne

14 VARCHAR(N) jest polem o zmiennej długości nie przekraczającej N Także BLOB (binarne), SET (zbiór). Typy tekstowe - alfanumeryczne ( String )

15 INT, BIGINT, FLOAT, DECIMAL Na ogół dostępnych jest wiele różnych typów liczbowych, różniących się możliwym zakresem wartości (INT, BIGINT, SMALLINT,...) i precyzją (FLOAT, DOUBLE PRECISION,...). Typ DECIMAL(M,D) to liczba (ułamek) dziesiętny o ustalonej liczbie cyfr dziesiętnych w części całkowitej i ułamkowej. Typy liczbowe (Numeric)

16 DATE TIME DATETIME TIMESTAMP Typy daty i godziny

17 SELECT [tabela.]{* | [lista_pól]} FROM lista_nazw_tabel [WHERE warunek] [ORDER BY.... ] /sortowanie [GROUP BY...]; /agregacja – sumowanie lub zliczanie z grupowaniem wg wybranego pola WYŚWIETLENIE (WYBÓR - SELEKCJA) REKORDÓW TABELI z wykorzystaniem klauzul [ opcja] { do wyboru albo | albo}

18 Równość:= Nierówność: <> lub != Mniejszy lub równy <= Większy lub równy>= Większy niż> Mniejszy niż< Porównanie do wzorcaLIKE A BETWEEN B AND C: wyrażenie takie jest równoważne A>=B AND A<=C o ile porównywane wyrażenia są tego samego typu. Operatory porównania w warunkach

19 select * from dostawcy where nazwa like "a%"; nazwa rozpoczyna sie od "a" select * from dostawcy where nazwa like "%al%"; nazwa zawiera frazę "al" select * from dostawcy where nazwa like "_a%"; litera "a" na drugim miejscu nazwy Metaznaki % - zastępuje dowolny ciąg znaków _ (podkreślnik) – zastępuje 1 dowolny znak Przykłady:

20 NOT : logiczna negacja. MySQL dopuszcza jako alternatywną notację wykrzyknik ( ! ). OR : logiczna alternatywa. MySQL dopuszcza alternatywną notację || AND : logiczna koniunkcja. Tu również MySQL dopuszcza notację &&. Operatory logiczne w klauzuli WHERE

21 Złożone wyrażenia logiczne, zbudowane za pomocą operatorów logicznych, zwracają: 1 jako reprezentację wartości prawdziwej, 0 jako reprezentację fałszu. Wyrażenia logiczne

22 Przykłady klauzuli WHERE.. WHERE nazwa_pola1=wartość.. WHERE n_p1=war1 AND n_p2=war2.. WHERE n_p1=war1 OR n_p2=war2.. WHERE n_p between war1 AND war2.. WHERE cena<100.. WHERE n_p LIKE '%fraza%'.. WHERE n_p1=wartosc1 OR n_p2=wartosc2

23 SELECT id, nazwa FROM dostawcy; SELECT * FROM magazyn; SELECT id_t, nazwa from magazyn WHERE cena_n>50; SELECT id_t, nazwa from magazyn WHERE cena_n between 50 and 80; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ORDER BY cena_n ; SELECT id_t, nazwa from magazyn WHERE cena_n>50 and cena_n<80 ORDER BY cena_n desc;//desc oznacza kolejność malejącą Przykłady lub użycie operatora between

24 SELECT 4*5; Można też używać kwerendę SELECT do obliczeń: SELECT nazwa, cena*5 from towary; SELECT 4*5; SELECT kat, count(id_t) from towary group by kat; Można też używać kwerendę SELECT do obliczeń: Można też wykonywać operacje na polach: Porada: wypróbowywać poprawność kwerend w MyPHPAdmin

25 Proste operatory arytmetyczne to dodawanie (+), odejmowanie (-), mnożenie (*) i dzielenie (/). Wynikiem dzielenia przez zero jest NULL. Ponadto w MySQL dostępny jest dość bogaty zestaw funkcji matematycznych (wykładnicze, logarytmiczne, trygonometryczne itp.). W wypadku błędu (nielegalnego argumentu) zwracana jest wartość NULL. Wyrażenia arytmetyczne na polach tabeli SELECT cena_netto+VAT*cena_netto AS cena_brutto FROM magazyn; alias tabela

26 mysql> SELECT SIGN(-32); -> -1 mysql> SELECT MOD(234, 10); (albo operator %) -> 4 mysql> SELECT ABS(-32); -> 32 mysql> SELECT FLOOR(1.23); -> 1 mysql> SELECT FLOOR(-1.23); -> -2 mysql> SELECT ROUND(1.298, 0); -> 1 mysql> SELECT ROUND(23.298, -1); -> 20 exp(x) ln(x) sin(x) pow(x,y) sqrt(x) pi() MySQL - FUNKCJE MATEMATYCZNE - niektóre mysql> SELECT sum(pole_liczbowe) from towary;

27 Przykłady: SELECT sum(cena*ilosc)*0.9 FROM towary; SELECT cena*0.9 AS Przecena FROM ksiazki WHERE autor='Tuwim'; SELECT cena*0.9 AS Przecena FROM ksiazki WHERE autor like 'T%'; SELECT cena, VAT, cena+VAT AS Cena_br FROM ksiazki WHERE tytul LIKE '%przygody%';

28 CURDATE() lub CURRENT_DATE : zwraca bieżącą datę w postaci YYYY-MM-DD (rok-miesiąc-dzień), lub YYYYMMDD, w pierwszym wypadku jako napis, w drugim jako liczbę całkowitą CURTIME() lub CURRENT_TIME : zwraca bieżącą godzinę w postaci HH:MM:SS (godzina:minuta:sekunda), lub HHMMSS NOW() : zwraca bieżącą datę i godzinę w postaci napisu YYYY-MM-DD HH:MM:SS Funkcje dotyczące daty i godziny

29 DATE_FORMAT(data, format) : konwertuje datę na napis, którego format można kontrolować za pomocą napisu formatującego. TIME_FORMAT(czas, format) : funkcja analogiczna do powyższej, lecz akceptująca jedynie specyfikatory formatu dotyczące godziny, minuty i sekundy. TO_DAYS(data) : zamienia datę na liczbę całkowitą oznaczającą liczbę dni od początku roku 0. Funkcja ta (oraz następna) przydają się do obliczania liczby dni jakie upłynęły między dwiema datami. FROM_DAYS(liczba_dni) : zamienia liczbę całkowitą, interpretowaną jako liczba dni od początku roku 0, na datę (napis postaci YYYY-MM-DD).

30 SELECT FROM_DAYS(734238) zwróci SELECT TO_DAYS(' ') zwróci Przykłady SELECT TO_DAYS(CURDATE())- TO_DAYS(' ') zwróci liczbę dni od początku roku do dziś ZAMIAST CURDATE() można stosować NOW()

31 INSERT INTO tabela VALUES (NULL, wartość1, wartość2...); WSTAWIENIE REKORDU Z DANYMI DO WYBRANYCH PÓL Pozostałe pola pozostaną puste, jeśli nie mają cechy WYMAGANIE – not null INSERT INTO tabela SET p_key=NULL, pole1=wartość1, pole2=wartość2...;

32 UPATE tabela SET pole=wartosc WHERE warunek_selekcji; Przykłady: UPATE klienci SET nazwisko="Kowalski" WHERE id=8; UPDATE towary SET cena_VAT=cena*1.22 WHERE cena_VAT>30 ; Modyfikacja treści REKORDÓW

33 DELETE FROM nazwa_tabeli WHERE warunki; np.: DELETE FROM dostawcy; usuwa wszystkie rekordy !!! DELETE FROM dostawcy WHERE nazwa LIKE 'ABC'; usuwa wszystkie rekordy w których polu Nazwa jest wartość 'ABC' USUWANIE REKORDÓW

34 Kwerenda ALTER TABLE tabela CHANGE | ADD | RENAME.. ; Ewentualnie w miarę potrzeby wykorzystania w projekcie – doczytać w internecie Łatwiejsza jest praca interakcyjna w phpMyAdmin host/phpmyadmin – logowanie na konta studenckie Korekta struktury tabeli (dodawanie pola, zmiana nazwy pola, zmiana typu pola itp

35 DROP TABLE nazwa_tabeli; DELETE FROM dostawcy; usuwa wszystkie rekordy !!! DELETE FROM dostawcy WHERE nazwa LIKE 'ABC'; usuwa wszystkie rekordy w których polu Nazwa jest wartość 'ABC' USUWANIE TABELI

36 SQL złączenia tabel

37 WHERE tab1.pole_klucz_glowny=tab2.pole_key_kl_obcy Szczególne znaczenie ma klauzula WHERE w postaci: Posiada ważną rolę przy konieczności wyboru danych z dwóch tabel o typie złączenia 1:N

38 Wybór danych z kilku tabel SELECT tabela1.P1, tabela2.K1,... FROM tabela1,tabela2 WHERE tabela1.key_t1=tabela2.f_key_t2 Key_t1 P1 P2 P3 P4 Key_t2 K1 K2 K3 f_key_t2 tabela1tabela2

39 id_mproducentnazwa_p 1NiemcyAUDI 2PolskaFiat 3FrancjaCitroen 4USAFord id_tmarka_idnazwa_t 11A6 21A p 52Cinquecento 62Panda 73Berlingo 83Xara 93C3 markatyp SELECT typ.nazwa_t, marka. nazwa_p FROM marka, typ WHERE marka.id_m=typ.marka_id 1:N Uwaga – wymaganie NOT NULL dla pola marka_id Złączenie tabel przez klucz główny tabeli MARKA i klucz obcy w tabeli TYP

40 PHP i MySQL Kolejność czynności: połączenie z serwerem MySQL wybór bazy wykonanie kwerendy wyświetlenie rezultatów (o ile jest to SELECT)

41 funkcja - zwraca uchwyt do zasobu– tzw. resource id lub false Przykład: $user, $password) or die ("Nie udało się"); if ($connection) echo "Połączyłeś się z bazą "; mysql_connect(host,user,password) Można pominąć wyświetlenie komunikatu błędu poprzedzając nazwę funkcji die(text) równoważne exit( ) ; Połączenie z serwerem MySQL

42 mysql_select_db( nazwa ) mysql_select_db('personel'); Wybór bazy - parametrem jest nazwa bazy

43 Operacje na bazie wykonywane PRZY POMOCY POLECEŃ SQL mysql_query (SQLstring, connection ) funkcja - wysyła zapytanie do aktywnej bazy na serwerze skojarzonym z podanym identyfikatorem połączenia - parametrem jest tekst zapytania MySQL (podany dosłownie lub wcześniej zdefiniowana zmienna tekstowa ) mysql_query() zwraca identyfikator wyniku (lub FALSE w przypadku niepowodzenia) jedynie dla zapytań typu SELECT, SHOW, EXPLAIN i DESCRIBE $wynik =mysql_query($query); Każdą kwerendę MySQL można wykonać w PHP W przypadku kwerendy SELECT zmienna $wynik jest tzw. uchwytem do zasobu - handle

44 np. dodawanie danych do tabeli 1. Tworzenie interfejsu do dodawania rekordu (formularz) Formularz HTML powinien zawierać pola wejściowe dla każdej kolumny tabeli. Nazwy pól formularza powinny być takie same jak nazwy pól tabeli. MAXLENGHT w polach formularza powinien być taki jak dla odpowiednich pól (jeśli ustalono). 2. Tworzenie skryptu PHP do wstawiania rekordów do tabeli: //... połączenie z serwerem MySQL $polecenie="INSERT into tabela VALUES (NULL,'".$_POST['p1name']. "',".$_POST['p2name']. "," itd $rezultat = m ysql_query($polecenie, $connection);

45 $query ="select id_ks, autor, tytul, cena from ksiazki where autor like '%$autor%' and tytul like '%$tytul%' "; $query ="select id_ks, autor, tytul, cena from ksiazki where autor like \ " %$autor%\ " and tytul like \ " %$tytul%\ " "; //Jeśli niepuste pola graniczne cen… if ($cena_od != 0) //to przedłużamy zapytanie $query.= "and cena between $cena_od and $cena_do"; echo "Oto postać SQL: $query "; ZMIENNA ZAPYTANIA – łańcuchowa

46 mysql_num_rows($wynik) Funkcja – zwraca liczbę znalezionych rekordów SELECT- parametrem jest wartość zmiennej rezultatu ($wynik) mysql_query Przykład: $ile = mysql_num_rows($wynik); echo "Rekordów:". $ile." "; Aby pobrać ilość wierszy przetworzonych w operacjach INSERT, UPDATE lub DELETE należy użyć funkcji mysql_affected_rows(). Pomocnicze funkcje

47 Wyświetlenie wyników kwerendy mysql_fetch_array($wynik) mysql_fetch_row ( $wynik) Funkcje ich argumentem jest zmienna będąca wynikiem zapytania, efektem jest tabela z danymi jeśli jest to zapytanie SELECT

48 mysql_fetch_array($wynik) Funkcja – zwraca tablicę (wiersz) składającą się z pól znalezionego rekordu – sekwencyjnie uruchamiana zwraca kolejne rekordy, parametrem jest zmienna rezultatu zapytania SQL. Kolejne wywołanie MYSQL_FETCH_ARRAY () zwróci następny wiersz z wyniku, lub FALSE jeżeli nie ma więcej wierszy. mysql_fetch_row ( $wynik) Zwraca tablicę zawierającą wiersz rekordu lub FALSE jeżeli nie ma więcej wierszy w wynik, pobiera jeden wiersz danych z wyniku skojarzonego z podanym identyfikatorem wyniku. Wiesz zwracany jest jako tablica. Komórki są umieszczone pod indeksami, zaczynając od 0. Kolejne wywołanie MYSQL_FETCH_ROW () zwróci następny wiersz z wyniku, lub FALSE jeżeli nie ma więcej wierszy. MYSQL_FETCH _ ROW szybsze ale mniej elastyczne od MYSQL_FETCH _ ARRAY albo alternatywnie np. mysql_fetch_array($wynik);

49 -połaczenie z Mysql – mysql_connect -otwarcie (wybór) bazy- mysql_select_db -sformułowanie zapytania$zmienna='select… -wykonanie zapytaniamysql_query -ewentualne wyświetlenie wyników zapytania z wykorzystaniem uchwytu do zasobu funkcją mysql_fetch_array A zatem...kolejność czynności

50 Przykład

51 Wyświetlenie rezultatów w pętli while

52 …lub dostęp asocjacyjny


Pobierz ppt "Upload – MySQL SYSTEMY TELEINFORMATYCZNE Wykład 6 AiR 5r."

Podobne prezentacje


Reklamy Google