Prezentacja MySQL PolakRafał KlajaPiotrK3

Modelowanie i tworzenie baz danych na przykładzie MySQL (narzędzia, techniki, dostęp do bazy danych).

Wydział Mechaniczny Politechniki Krakowskiej

Rok Akademicki 2011/2012, Grupa 13K3

Rafał Polak i Piotr Klaja


Krótko o MySQL

MySQL jest systemem do zarządzania relacyjnymi bazami danych. Wywodzi się z języka SQL lecz pisany był z myślą o szybkości w działaniu. Nie był przez większość czasu kompatybilny ze standardem SQL – przez dłuższy czas nie obsługiwał nawet transakcji. Powodowało to wrogie nastawienie wielu programistów. MySQL obecnie obsługuje większą część obecnego standardu ANSI/ISO SQL. Wprowadza również swoje rozszerzenia i nowe elementy języka.

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

Język SQL jest językiem deklaratywnym. Decyzję o sposobie przechowywania i pobrania danych pozostawia się systemowi zarządzania bazą danych (DBMS).

W wersji 5 dodano między innymi:

  1. procedury składowane 1(ang. stored procedures) – obecne od wersji 5.0,

  2. wyzwalacze 2(ang. triggers) – obecne od wersji 5.0.2

  3. widoki3

  4. kursory 4 obecne od wersji 5.1

  5. partycjonowanie tabel – od wersji 5.1

  6. harmonogram zadań – od wersji 5.1

co zbliża najnowsze wersje MySQL do PostgreSQL 5pod względem funkcjonalności.

MySQL zawiera wsparcie dla replikacji bazy danych i wielojęzyczności co umożliwia dla każdej tabeli, a nawet każdego pola można ustawić własne ustawienie kodowania znaków. W najnowszej wersji rozwojowej 5.6 wprowadzono kilka istotnych zmian poprawiających skalowalność i niezawodność środowiska, oraz wprowadzających nowatorskie rozwiązania, np.:

  1. semi-synchroniczna replikacja

  2. replikacja wielowątkowa

  3. rozbudowane możliwości monitorowania przez tzw. PERFORMANCE_SCHEMA

  4. interfejs API typu NoSQL z wykorzystaniem memcached

  MySQL jest dostępny na licencji GPL, jednakże można nabyć również wersje licencjonowane komercyjnie. Biblioteki klienckie są również dostępne na licencji GPL lub komercyjnej. Istnieje wymóg nabycia licencji komercyjnej jeśli zamierzamy dystrybuować aplikację komercyjną (niezgodną z licencją GPL), wraz z zintegrowaną bazą MySQL.

Zmiana licencji nastąpiła od wersji 4.1 (i późniejszych) i była jednym z powodów rezygnacji w PHP z domyślnie włączonej obsługi MySQL na rzecz SQLite 6(oczywiście obsługę MySQL można samemu w PHP włączyć).

GNU General Public License – licencja wolnego i otwartego oprogramowania stworzona w 1989 roku przez Richarda Stallmana i Ebena Moglena na potrzeby Projektu GNU, zatwierdzona przez Open Source Initiative.

Celem licencji GNU GPL jest przekazanie użytkownikom czterech podstawowych wolności:

  1. wolność uruchamiania programu w dowolnym celu (wolność 0)

  2. wolność analizowania, jak program działa i dostosowywania go do swoich potrzeb (wolność 1)

  3. wolność rozpowszechniania niezmodyfikowanej kopii programu (wolność 2)

  4. wolność udoskonalania programu i publicznego rozpowszechniania własnych ulepszeń, dzięki czemu może z nich skorzystać cała społeczność (wolność 3).

Tylko jeżeli program spełnia wszystkie cztery wolności jednocześnie, wówczas, według FSF, może być uznany za Wolne Oprogramowanie. Wystarczy, że nie spełnia dowolnej z nich, a nie może być tak kategoryzowany (jest oprogramowaniem zamkniętym).

Historia MySQL z grubsza (…)

MySQL rozwijany jest przez firmę Oracle. Wcześniej przez większość czasu jego tworzeniem zajmowała się szwedzka firma MySQL AB. MySQL AB została kupiona 16 stycznia 2008 roku przez Sun Microsystems, a ten 27 stycznia 2010 roku przez Oracle. W międzyczasie Monty Widenius (współtwórca MySQL) stworzył MariaDB - forka (alternatywną wersję) opartego na licencji GPL. MariaDB jest oparta na tym samym kodzie bazowym co MySQL i dąży do utrzymania kompatybilności z jej poprzednimi wersjami.

Instalacja MySQL i phpMyAdmin

Instalacja pod Ubuntu Server

Przechodzimy do konsoli naszego Linuxa i logujemy się na konto „super użytkownika”.

Jeżeli zaczynamy od zera, instalujemy kolejno pakiety z wykorzystaniem polecenia apt-get install, wówczas nie będzie system od nas wymagał hasła. Podczas instalacji z konta użytkownika należy podać także przedrostek sudo apt-get install. Podane poniżej pakiety można zainstalować jednocześnie wpisując nazwę pakietów po znaku spacji.

Wymagane pakiety:

  1. apt-get install apache2

  2. apt-get install php5

  3. apt-get install mysql-server

  4. apt-get install libapache2-mod-auth-mysql

  5. apt-get install php5-mysql

  6. apt-get install phpmyadmin

Konfigurowanie serwera MySQL rozpoczynamy od podania hasła dla super użytkownika (Root), które następnie potwierdzamy wpisując ponownie.

Przy instalacji phpMyAdmin’a należy podać, jaki serwer ma zostać skonfigurowany, by współpracował z phpMyAdmin. Z reguły są do wyboru dwa. My wybieramy Apache2. Zatwierdzamy zapytanie konfiguratora o połączenie z bazą danych, podajemy hasło (najlepiej identyczne jak podaliśmy do serwera MySQL).

Wynik działania serwera Apache widać już po wejściu w przeglądarkę i wpisaniu localhost/ lub 127.0.0.1 . W moim przypadku, gdyż serwer znajduje się w sieci lokalnej i jest autonomiczny dostęp do niego otrzymujemy przez ip lokalne (domyślnie 192.168.0.(ip_uzytkownika_sieci)).

W całym głównym folderze Apache2 działa interpretator języka PHP. Aby przejść do phpMyAdmin wpisujemy po slashu /phpmyadmin/

Jeżeli zmieniliśmy folder główny stron WWW, dla serwera Apache2 wówczas musimy nadać dowiązanie dla phpMyAdmin, by był widoczny także w innym folderze. Domyślny folder Apache2 jest to /var/www . Po zmianie na dowolny folder w pliku konfiguracyjnym serwera nadajemy dowiązanie:

ln –s /usr/share/phpmyadmin /home/banzamel/phpmyadmin

(tylko i wyłącznie w przypadku mojego prywatnego serwera, drugi parametr jest adresem folderu docelowego, musi być to folder udostępniony do publikacji przez serwer).

Instalacja pod Windows

Instalacja pod systemem Windows jest o wiele prostsza, jednakże korzystanie z zainstalowanego i włączonego serwera, może być nieco uciążliwa.

Do naszej dyspozycji mamy wiele programów. Poniższe 3 są najbardziej popularne i posiadają wszystkie niezbędne pakiety do w pełni działającego serwera.

  1. Xampp

    1. Do pobrania z : http://www.apachefriends.org/en/xampp.html

  2. Wamp

    1. Do pobrania z: http://www.wampserver.com/en/

  3. WebServ

    1. Do pobrania z: http://www.webserv.pl/?page=download

    2. Nie jest już wspierany i rozbudowywany

Podstawy Zapytań

Jak to już bywa w MySQL, oparty jest on o strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz umieszczonych w nich danych. MySQL ma być przede wszystkim szybki i łatwy w obsłudze.

Aby biegle się poruszać po bazie danych, nie ważne czy właśnie ją kreujemy czy modyfikujemy, lub zwyczajnie wyciągamy niezbędne dla nas informację, potrzebujemy do tego wiedzy, która umożliwi nam zbudowanie odpowiednio krótkiego, treściwego oraz trafionego zapytania SQL. W kodzie php wszystkie zapytania kierowane do serwera bazodanowego są zawarte w funkcji:

mysql_query(„Gdzie tutaj wpisujemy kod sql”);

Poniżej przedstawię i omówię podstawowe elementy składowe każdego zapytania kierowanego do serwera bazy danych. Pamiętajcie by zapytania budować w miarę możliwości rzadko, oraz by były one proste i przejrzyste. Zwiększymy wówczas możliwości naszego serwera i unikniemy problemów z przepustowością.

Nigdy nie pisz nieskończonych pętli kierowanych do bazy, lub bezpośrednio na bazie!

CREATE DATABASE or CREATE TABLE - polecenie to pozwala tworzyć nowe bazy danych, jak i zarówno tabele znajdujące się z bazie. Jeżeli chcemy wstawić nowe pole do tabeli, używamy polecenia ADD.

CREATE TABLE `projekt_zespolowy`.`tymczasowa` (

`Imię` CHAR( 100 ) NOT NULL ,
`Nazwisko` CHAR( 100 ) NOT NULL ,
`Telefon` INT( 13 ) NOT NULL ,
`ID` INT NOT NULL ,
PRIMARY KEY ( `ID` )

ENGINE = MYISAM ;

ALTER TABLE – zmienia właściwości istniejącej tabli stworzonej instrukcją CREATE TABLE. Instrukcja może być wykonywana tylko przez właściciela schematu. W którym znajduje się dana tabela. Przykład dodania nowego pola do tabeli:

ALTER TABLE `uzytkownik` ADD `nowe pole` INT NOT NULL AFTER `id`;

ALTER TABLE `uzytkownik` DROP `nowe pole`;

DROP TABLE - usuwa tabelę stworzoną instrukcją CREATE TABLE. Instrukcja może być wykonywana tylko przez właściciela schematu, w którym znajduje się dana tabela. Jednakże samo polecenie drop można wykorzystywać do usuwania innych obiektów znajdujących się w bazie danych.

  1. CASCADE – powoduje usunięcie wraz z kasowaną domeną, tabelą , kolumną, widokiem, schematem czy uprawnieniami, wszystkich innych obiektów które z nich korzystają.

  2. RESTRICT – oznacza że usuwana domenatabela , kolumnawidokschemat nie może być w danej chwili używany przez jakikolwiek obiekt w bazie. Przy kasowaniu uprawnień RESTRICT nie usuwa uprawnień jeśli spowoduje to usunięcie jakiegoś obiektu.

DROP TABLE `uzytkownik` RESTRICT;

SELECT - służy do wybierania wierszy i kolumn z jednej lub kilku tabel. Może być używany jako osobna instrukcja lub  jako zapytanie lub podzapytanie w innych poleceniach.

SELECT `[funkcja]`,`[predykat]`, `[kolumny]` FROM `nazwa tabeli` WHERE `spełniony warunek` ;

  1. Funkcje MIN, MAX, SUM COUNT itd.

  2. Predykat stosujemy do ograniczenia liczby wyświetlanych rekordów.

  3. Kolumny - możemy także wybrać poszczególne pole które chcemy wyświetlić. Domyślnie ALL lub ‘*’ wyświetli wszystkie pola rekordu.

  4. WHERE – wpisanie warunku który musi spełniać dane pole w rekordzie ( `Imię` LIKE a% - oznacza imię rozpoczynające się na małe a).

  5. GROUP BY grupuje wszystkie wyrzucone rekordy według podanych argumentów

  6. UNION łączy wyniki z dwóch różnych zapytań.

  7. EXEPT i EXEPT ALL powoduje iż wszystkie wiersze z wyniku zapytania 1 zostaną wyeliminowane z wyniku, a duplikaty pojawią się tylko raz. Z operatorem ALL duplikaty pojawiają się wielokrotnie.

  8. INTERSECT powoduje iż każdy wiersz pojawiający się  na wyjściu zapytania 1 i zapytania 2 jest tylko raz wynikiem

  9. ORDER BY sortuje rosnąco lub malejąco rekordy według jednej lub kilku kolumn. Klauzula ta nie jest obowiązkowa, ale często używana w celu wyświetlenia   danych w określonym porządku.

    1. ASC – rosnąco

    2. DESC – malejąco

  10. HAVING pozwala określić, które ze zgrupowanych rekordów mają być wyświetlone. Po zgrupowaniu rekordów klauzulą GROUP BY pokazywane są te rekordy, które spełniają kryteria klauzuli HAVING.

DELETE – służy do usuwania rekordów z tabeli (każdego rodzaju). Wykonawca musi mieć uprawnienia DELETE (nadaje się je instrukcją GRANT)  dla danej tabeli.

DELETE FROM `nazwa tabeli` WHERE `spełniony warunek`=`2`;

INSERT INTO – wstawia rekordy do tabeli. Muszą one być tego samego typu jak typ kolumny do której są wstawiane. Wykonawca musi mieć uprawnienia INSERT (nadaje się je instrukcją GRANT)  dla każdej modyfikowanej kolumny.

  1. VALUES pozwala na wpisanie wartości jakie mają być zapisane do poszczególnych pól w tabeli, bardzo ważna jest kolejność w tym przypadku wprowadzania danych, odpowiadająca podanym polom po nazwie tabeli.

  2. Można od razu podać nazwę pola i bezpośrednio przypisać wartość.

INSERT INTO `użytkownik` (id, imie) VALUES (139,`Tadeusz`);

UPDATE – służy do zmiany danych w jednej lub kilku kolumnach tabeli . Instrukcja ta działa na wszystkich rodzajach tabel. Wykonawca musi mieć uprawnienia UPDATE dla każdej modyfikowanej kolumny. 

UPDATE `użytkownik` SET Imię=`Tadeusz` WHERE ID=2;

Nadawanie Kluczy

Klucz Główny Tabeli

Klucz główny tabeli jest unikalny i nadawany poprzez dyrektywę PRIMARY KEY(`ID`). Przy użyciu zautomatyzowanej funkcji w MySQL AUTO_INCREMENT jest automatycznie zwiększany przy dodawaniu nowego rekordu i nigdy się nie cofa automatycznie. Oznacza to, że po usunięciu wiersza zostaje luka w numeracji.

Nadanie klucza głównego w tabeli:

CREATE TABLE IF NOT EXISTS `użytkownik`

(`ID` int(11) NOT NULL AUTO_INCREMENT,

`Imię` char(100) COLLATE utf8_polish_ci DEFAULT NULL, PRIMARY KEY (`ID`))

Klucz Obcy Tabeli

Klucz obcy tabeli nie jest unikalny, ale nadawany poprzez dyrektywę FORIEGHT KEY(`ID`). Wiąże on rekord lub rekordy z jednej tabeli z rekordem w drugiej tabeli. Możemy uzależnić rekordy między sobą poprzez nadanie CASCADE lub RESTRICT

Nadanie klucza obcego w tabeli:

ALTER TABLE `użytkownik`

ADD FOREIGN KEY ( `ZBAK_1_ID` ) REFERENCES `projekt_zespołowy`.`zbanowani` (`id`)

ON DELETE CASCADE ON UPDATE CASCADE ;

Przykładowa Baza Danych

Kod MySQL

Plik baza_danych.sql

-- phpMyAdmin SQL Dump

-- version 3.4.5

-- http://www.phpmyadmin.net

--

-- Host: localhost

-- Czas wygenerowania: 14 Lis 2011, 00:30

-- Wersja serwera: 5.5.16

-- Wersja PHP: 5.3.8

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

SET time_zone = "+00:00";

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

--

-- Baza danych: `projekt_zespolowy`

--

-- --------------------------------------------------------

--

-- Struktura tabeli dla `uzytkownik`

--

CREATE TABLE IF NOT EXISTS `uzytkownik` (

`ID` int(11) NOT NULL AUTO_INCREMENT,

`Imie` char(100) COLLATE utf8_polish_ci DEFAULT NULL,

`Nazwisko` char(100) COLLATE utf8_polish_ci NOT NULL,

`Login` char(100) COLLATE utf8_polish_ci NOT NULL,

`Adres` text COLLATE utf8_polish_ci NOT NULL,

`Telefon` int(12) NOT NULL,

`Data_Rejestracji` char(100) COLLATE utf8_polish_ci NOT NULL,

`Haslo` char(100) COLLATE utf8_polish_ci NOT NULL,

`UZYK_1_ID` int(11) NOT NULL,

PRIMARY KEY (`ID`),

KEY `UZYK_1_ID` (`UZYK_1_ID`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--

-- Struktura tabeli dla `zbanowani`

--

CREATE TABLE IF NOT EXISTS `zbanowani` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`Zb_Imie` char(100) COLLATE utf8_polish_ci NOT NULL,

`IP` char(15) COLLATE utf8_polish_ci NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_polish_ci AUTO_INCREMENT=1 ;

--

-- Ograniczenia dla zrzutów tabel

--

--

-- Ograniczenia dla tabeli `uzytkownik`

--

ALTER TABLE `uzytkownik`

ADD CONSTRAINT `uzytkownik_ibfk_1` FOREIGN KEY (`UZYK_1_ID`) REFERENCES `zbanowani` (`id`) ON DELETE CASCADE ON UPDATE CASCADE;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

Kod PHP

Plik index.php

  1. <?php

  2.         session_start();

  3. if(!isset($_SESSION["zalogowany"])) $_SESSION["zalogowany"]=0;

  4.  

  5.         require "connection.php";

  6.         connection();

  7.         created();

  8.         require "logowanie.php";

  9.         require "rejestracja.php";

  10. ?>

  11.  

  12. <!DOCTYPE html

  13.         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

  14.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  15. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">

  16. <head>

  17.         <title>Logowanie do systemu</title>

  18. </head>

  19.  

  20. <body>

  21.         <table>

  22.         <tr>

  23.                 <? logowanie(); ?>

  24.         </tr>

  25.         <tr>

  26.                 <? rejestracja(); ?>

  27.         </tr>

  28.         </table>

  29.     <? echo $_SESSION['zalogowany']; ?>

  30.  

  31. </body>

  32. </html>

Plik connection.php (połączenie z bazą)

  1. <?php

  2. /******************************************************

  3. * connection.php

  4. * po³±czenie, aktualizacja i tworzenie bazy danych MySQL

  5. ******************************************************/

  6.  

  7. function connection() {

  8.     // serwer

  9.     $mysql_server = "localhost";

  10.     // admin

  11.     $mysql_admin = "root";

  12.     // has³o

  13.     $mysql_pass = "amdduron8";

  14.     // nazwa bazy danych

  15.     $mysql_db = "projekt_zespolowy";

  16.     // nawi±zywanie po³±czenia z serwerem

  17.     $connect = @mysql_connect($mysql_server, $mysql_admin, $mysql_pass)

  18.     or die('Brak polaczenia z serwerem MySQL.');

  19.          mysql_query("SET NAMES 'latin2'");

  20.     // laczymy sie z baza danych

  21.                 if(!mysql_select_db($mysql_db))

  22.         {

  23.                 $sql = 'CREATE DATABASE projekt_zespolowy';

  24.                         if (mysql_query($sql, $connect)) {echo "Baza zostala pomyslnie utworzona<br /><br />";}

  25.                         else { echo 'Blad podczas tworzenia bazy: ' . mysql_error() . "\n";}

  26.         }

  27.         else

  28.         {

  29.                 mysql_select_db($mysql_db)

  30.                         or die('Blad wyboru bazy danych.');

  31.         }

  32.                

  33.                 return $connect;               

  34. }

  35.  

  36. function disconnect() {

  37.     // serwer

  38.     $mysql_server = "localhost";

  39.     // admin

  40.     $mysql_admin = "root";

  41.     // has³o

  42.     $mysql_pass = "";

  43.     // nazwa bazy danych

  44.     $mysql_db = "projekt_zespolowy";

  45.     // nawi±zywanie po³±czenia z serwerem

  46.     $connect = @mysql_connect($mysql_server, $mysql_admin, $mysql_pass) ;

  47.         mysql_close($connect);

  48. }

  49.  

  50. function created() {

  51.  

  52. $uzytkownicy = 'CREATE TABLE uzytkownik (id int NOT NULL AUTO_INCREMENT, Imie char(100) DEFAULT NULL, Nazwisko char(100) DEFAULT NULL, Login char(100) NOT NULL, Adres text NOT NULL, Telefon int(12) NOT NULL, Data_Rejestracji char(100) NOT NULL, Haslo char(100) NOT NULL, UZYK_1_ID int(11) NOT NULL,  PRIMARY KEY(id))';

  53. $zbanowani = 'CREATE TABLE zbanowani (id int NOT NULL AUTO_INCREMENT, Zb_Imie char(100) NOT NULL, IP char(15) NOT NULL, PRIMARY KEY(id))';

  54.  

  55. //mysql_query('DELETE from uzytkownik');

  56. //mysql_query('DELETE from zbanowani');

  57.  

  58.  

  59. mysql_query("SELECT * FROM uzytkownik")

  60.                 or mysql_query($uzytkownicy);

  61. mysql_query("SELECT * FROM zbanowani")

  62.                 or mysql_query($zbanowani);

  63.  

  64. }

  65.  

  66. ?>

Plik logowanie.php

  1. <?php

  2. /******************************************************

  3. * logowanie.php

  4. * formularz logowania do serwisu

  5. ******************************************************/

  6.  

  7. function logowanie() {

  8.  

  9. $login = trim($_REQUEST['login']);

  10. $pseudonim = trim($_REQUEST['pseudonim']);

  11. $haselko = trim($_REQUEST['haselko']);

  12.  

  13. if($login != 'tak')

  14.         {       

  15.         echo '

  16.                 <form action="index.php" method="post">

  17.                 <input type="hidden" name="login" value="tak" />

  18.                 <td> Login <input type="text" size="18" maxlength="50" name="pseudonim" value=""> </td>

  19.                 <td> Haslo <input type="password" size="18" maxlength="50" name="haselko" value=""></td>

  20.                 <td><input type="submit" value="Zaloguj" class="dolacz" /></td>

  21.                 </form>';

  22.         }

  23.        

  24. if($login == 'tak')

  25.         {

  26.                 $dane = mysql_query("SELECT * FROM uzytkownik")

  27.                         or die("Blad zapytania");

  28.                 $good = 0;

  29.                 while($rek = mysql_fetch_assoc($dane))

  30.                {

  31.                     if($rek['Login']==$pseudonim && $rek['Haslo']==md5($haselko))

  32.                                 {       

  33.                                         $good = 1;

  34.                                 }

  35.                       if($good==1) break;

  36.               }

  37.               if($good==0) echo '<strong>Podales bledny Login lub Haslo</strong>';

  38.                 else {

  39.                         $_SESSION['zalogowany'] = 1;

  40.                         $_SESSION['login'] = $pseudonim;

  41.                         echo '<script language="JavaScript" type="text/javascript"> location.href="page.php"; </script>';       

  42.                 }

  43.         }

  44. }

  45. ?>

Plik rejestracja.php

  1. <?php

  2. /******************************************************

  3. * rejestracja.php

  4. * formularz rejestracyjny

  5. ******************************************************/

  6.  

  7. function rejestracja() {

  8.  

  9. $rejekt = trim($_REQUEST['rejekt']);

  10. $imie = trim($_REQUEST['imie']);

  11. $nazwisko = trim($_REQUEST['nazwisko']);

  12. $email = trim($_REQUEST['email']);

  13. $telefon = trim($_REQUEST['telefon']);

  14. $pseudo = trim($_REQUEST['pseudo']);

  15. $haslo = trim($_REQUEST['haslo']);

  16. $haslo2 = trim($_REQUEST['haslo2']);

  17.        

  18. if($rejekt != 'tak')

  19.         {       

  20.         echo '

  21.                 <form action="index.php" method="post">

  22.                 <input type="hidden" name="rejekt" value="tak" />

  23.                 <td> Imie <input type="text" size="18" maxlength="50" name="imie" value=""></td>

  24.                 <td> Nazwisko <input type="text" size="18" maxlength="50" name="nazwisko" value=""></td>

  25.                 <td> Adres E-mail<input type="text" size="18" maxlength="50" name="email" value=""></td>

  26.                 <td> Telefon<input type="text" size="12" maxlength="12" name="telefon" value=""></td>

  27.                 <td> Login <input type="text" size="18" maxlength="50" name="pseudo" value=""></td>

  28.                 <td> Haslo <input type="password" size="18" maxlength="50" name="haslo" value=""></td>

  29.                 <td> Powtórz Haslo<input type="password" size="18" maxlength="50" name="haslo2" value=""></td>

  30.                 <td> <input type="submit" value="Do³±cz" class="dolacz" /> </td>

  31.                 </form>';

  32.         }

  33.        

  34. if($rejekt == 'tak')

  35. {

  36.         if( $imie != NULL && $nazwisko != NULL && $email != NULL && $telefon != NULL && $pseudo != NULL && $haslo != NULL && $haslo2 != NULL) {

  37.                if( $haslo == $haslo2) {

  38.                         $haslo = md5($haslo);

  39.                         zapisz_dane_uzytkownika($imie, $nazwisko, $email, $telefon, $pseudo, $haslo);

  40.                 }

  41.                 else echo '<br /><strong> Wpisz poprawnie has³o</strong>';      

  42.         }

  43.         else echo '<br /><strong> Nie wype³ni³eœ(aœ) wszystkich wymaganych pól</strong>';

  44.         odswiez_start();

  45. }

  46.  

  47. } //zamkniecie funkcji powyzej

  48.  

  49. function zapisz_dane_uzytkownika($imie, $nazwisko, $email, $telefon, $pseudo, $haslo) {

  50.        

  51.         $today = date("m.d.y");

  52.         mysql_query("INSERT INTO uzytkownik SET Login='$pseudo', Imie='$imie', Nazwisko='$nazwisko', Adres='$email', Haslo='$haslo', Telefon='$telefon', Data_Rejestracji='$today' ")   

  53.                                 or die('Blad zapytania');       

  54. }

  55.  

  56. function odswiez_start() {

  57.                echo '<script language="JavaScript" type="text/javascript"> location.href="page2.php"; </script>';

  58. }

  59.  

  60. ?>

Plik page.php

  1. <?php

  2.         session_start();

  3. if(!isset($_SESSION["zalogowany"])) $_SESSION["zalogowany"]=0;

  4. if ($_SESSION["zalogowany"]==0) exit;

  5.  

  6.         require "connection.php";

  7.         connection();

  8.         require "usuwanie.php";

  9.  

  10. ?>

  11. <!DOCTYPE html

  12.         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

  13.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  14. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">

  15. <head>

  16.         <title>Logowanie do systemu</title>

  17. </head>

  18.  

  19. <body>

  20.         <h1>Zalogowales sie</h1>

  21.     <table>

  22.         <tr><td><? $zalog = $_SESSION['zalogowany'];

  23.                 echo "Twoj Login to: ".$_SESSION['login'].$zalog;

  24.                                         usuwanie() ?>

  25.         </td></tr>

  26.     </table>

  27.     <? echo $_SESSION['zalogowany']; ?>

  28. </body>

  29. </html>

Plik usuwanie.php

  1. <?php

  2. /******************************************************

  3. * usuwanie.php

  4. * formularz usuwania do serwisu

  5. ******************************************************/

  6.  

  7. function usuwanie() {

  8.  

  9. $usun = trim($_REQUEST['usun']);

  10.  

  11. if($usun != 'tak')

  12.         {       

  13.         echo '

  14.                 <form action="page.php" method="post">

  15.                 <input type="hidden" name="usun" value="tak" />

  16.                 <td> <input type="submit" value="Usun" /></td>

  17.                 </form>';

  18.         }

  19.        

  20. if($usun == 'tak')

  21.         {

  22.                 $dane = mysql_query("SELECT * FROM uzytkownik")

  23.                         or die("Blad zapytania");

  24.                 while($rek = mysql_fetch_assoc($dane))

  25.                {

  26.                     if($rek['Login']==$_SESSION["login"])

  27.                                 {       

  28.                                         $Login = $_SESSION["login"];

  29.                                         mysql_query("DELETE FROM uzytkownicy WHERE Login='$Login'");

  30.                                 }

  31.                 }

  32.                 echo '<script language="JavaScript" type="text/javascript"> location.href="index.php"; </script>';

  33.         }

  34. }

  35. ?>

Plik page2.php

  1. <!DOCTYPE html

  2.         PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"

  3.         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

  4. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">

  5. <head>

  6.         <title>Logowanie do systemu</title>

  7. </head>

  8.  

  9. <body>

  10.         <h1>Zostałeś Zarejestrowany Poprawnie</h1>

  11.     <script language="JavaScript" type="text/javascript"> location.href="index.php"; </script>

  12. </body>

  13. </html>

Podsumowanie

Język zapytań MySQL służący do komunikacji z DBMS jest niezbędny w serwisach internetowych i jednocześnie bardzo prosty do opanowania. Choć posiada swoją konkurencję cieszy się ogromną popularnością właśnie, dzięki prostocie oraz szybkości w działaniu.


  1. To jeden z elementów implementacji bazy danych. Procedura jest umiejscowiona bezpośrednio w systemie bazy danych, a nie po stronie klienta. Pozwala to na zmniejszenie liczby kroków wymiany danych pomiędzy klientem a systemem zarządzania bazą danych, co może przyczynić się do wzrostu wydajności systemu.

  2. Jest to procedura wykonywana automatycznie jako reakcja na pewne zdarzenia w tabeli bazy danych.

  3. Inaczej perspektywa, logiczny, osadzony na serwerze baz danych obiekt. Umożliwia dostęp do podzbioru kolumn i wierszy tabel lub tabeli na podstawie zapytania w języku SQL, które stanowi część definicji tego obiektu.

  4.  W systemach zarządzania bazą danych jest to tymczasowa struktura służąca do pobierania wyniku zapytania SQL. Kursor umożliwia pobieranie rekordów sekwencyjnie, po jednym lub więcej na raz, a także przemieszczanie się po wynikach zapytania.

  5. Jeden z trzech najpopularniejszych wolnodostępnych systemów zarządzania relacyjnymi bazami danych. Jest w pełni zgodny ze standardem SQL

  6. To system zarządzania bazą danych oraz biblioteka C implementująca taki system, obsługująca język SQL (ang. Structured Query Language). Została stworzona przez Richarda Hippa i jest dostępna na licencji public domain. Projekt został rozpoczęty w roku 2000. Biblioteka implementuje silnik SQL, dając możliwość używania bazy danych bez konieczności uruchamiania osobnego procesu RDBMS. W wielu zastosowaniach, a w szczególności w systemach wbudowanych, takie rozwiązanie jest najpraktyczniejsze.


Wyszukiwarka

Podobne podstrony:
prezentacja finanse ludnosci
prezentacja mikro Kubska 2
Religia Mezopotamii prezentacja
Prezentacja konsument ostateczna
Strategie marketingowe prezentacje wykład
motumbo www prezentacje org
lab5 prezentacja
Prezentacja 18
Materialy pomocnicze prezentacja maturalna
Prezentacja na seminarium
Lato prezentacja 3
Prezentacja1
Prezentacja 2 analiza akcji zadania dla studentow
prezentacja soc rodziny

więcej podobnych podstron