Presentation laddar. Vänta.

Presentation laddar. Vänta.

KaU - Datavetenskap - DAV B04

Liknande presentationer


En presentation över ämnet: "KaU - Datavetenskap - DAV B04"— Presentationens avskrift:

1 KaU - Datavetenskap - DAV B04
DAV B04 - Databasteknik MySQL (-) KaU - Datavetenskap - DAV B04

2 KaU - Datavetenskap - DAV B04
Lab 3 - implementation Ni har en (tom) mySQL-databas på servern atlantis.cse.kau.se Webbgränssnitt finns på adress: atlantis.cse.kau.se/~username/phpMyAdmin/ Ett annat bra gratis gränssnitt är Navicat Ni kan också logga in manuellt med ssh: ssh atlantis.cse.kau.se –p 2244 Spara era tabeller som semikolonavgränsad text innan ni importerar dem Välj InnoDB som databasmotor för era tabeller! KaU - Datavetenskap - DAV B04

3 KaU - Datavetenskap - DAV B04
MySQL Skapades 1995 av två svenskar Används idag av t ex Yahoo, NASA och Google Ledord: prestanda och skalbarhet Finns för många plattformar Finns både en gratisversion (open-source) och en kommersiell version. KaU - Datavetenskap - DAV B04

4 Tabelltyper (motorer) i MySQL
MyISAM Default, optimerad för select- och insert-frågor Inget stöd för främmandenycklar och transaktioner InnoDB Stöd för främmandenycklar och transaktioner Bra för tabeller som uppdateras mycket Har automatisk krasch-återhämtning KaU - Datavetenskap - DAV B04

5 KaU - Datavetenskap - DAV B04
MySQL vs. Access I MySQL är det möjligt att göra COUNT(DISTINCT <kolumn-namn>) Wildcards Access * (substräng), ? (ett tecken) MySQL % (substräng), _ (ett tecken) Kommentarer skrivs efter ett #-tecken eller inom /* */ enligt C-stil KaU - Datavetenskap - DAV B04

6 Exempel: skapa tabeller
CREATE TABLE suppliers (s_num varchar(5) NOT NULL PRIMARY KEY name varchar(50) NOT NULL ); CREATE TABLE shipments (s_num varchar(5) NOT NULL, p_num, varchar(5) NOT NULL, PRIMARY KEY (s_num, p_num), FOREIGN KEY (s_num) REFERENCES suppliers (s_num) FOREIGN KEY (s_num) REFERENCES parts (p_num) KaU - Datavetenskap - DAV B04

7 Information om att skapa tabeller
De viktigaste datatyperna TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT, REAL, DOUBLE, FLOAT, DECIMAL(length,decimals), NUMERIC(length,decimals), CHAR(length), VARCHAR(length), DATE, TIME, TIMESTAMP, DATETIME, TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT, ENUM(value1,value2,value3,...) KaU - Datavetenskap - DAV B04

8 KaU - Datavetenskap - DAV B04
Ta bort tabeller (Efter allt arbete man lagt ned för att skapa tabellen...;)) drop table <tabell-namn>; Tar bort både definitionen av tabellen och alla data så var försiktig!!! KaU - Datavetenskap - DAV B04

9 Mer information om MySQL
Officiell sajt Dokumentation/tutorial Tutorial MySQL/PHP KaU - Datavetenskap - DAV B04

10 Databasprogrammering (-)
DAV B04 - Databasteknik Databasprogrammering (-) KaU - Datavetenskap - DAV B04

11 Databas-programmering
Databas-programmering Databaser accessas ofta från ett applikationsprogram. Detta kan göras på två olika sätt: Med hjälp av inbäddade SQL-uttryck. SQL-uttryck blandas med uttryck i värdspråket direkt i källkoden. En speciell förkompilerare behövs som byter ut SQL-uttrycken mot anrop till funktioner i DBHS. Med hjälp av ett Application Programming Interface (API). Programmeraren har tillgång till en mängd funktioner (ett bibliotek) som används för att anropa databasen. Ingen förkompilering behövs. KaU - Datavetenskap - DAV B04 Karlstads Universitet, Datavetenskap

12 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04

13 JDBC – Java Database Connectivity
API för att nå databaser från ett java-program Java-programmet kan använda API:t genom att importera java.sql.* Java-programmet kan sen accessa alla databaser som har en JDBC-drivrutin JDBC-drivrutinen måste laddas innan sql-metoderna används KaU - Datavetenskap - DAV B04

14 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04

15 Client/Server - arkitekturer
DB-applikationer består av fyra huvudkomponenter: databasen, transaktionslogiken, applikationslogiken och användargränssnittet. I ett client/server - system separerar man dessa komponenter i applikationen på något sätt. Two-tier arkitektur På klienten (tier 1) finns användargränssnittet och det mesta av applikationslogiken. På servern (tier 2) finns en del applikationslogik, transaktionslogiken och databasen. Ineffektiv av flera skäl: en 'tjock' klient kräver mycket resurser (diskutrymme, RAM och CPU-kraft) på klientens dator för att exekvera effektivt. Administrationen på klient-sidan blir väldigt stor. KaU - Datavetenskap - DAV B04

16 Logical two-tier client server architecture
KaU - Datavetenskap - DAV B04

17 Three Tier Client-Server Architecture
Three Tier Client-Server Architecture 1995 började en ny arkitektur användas som skulle lösa problemen med two-tier arkitekturen. Den nya arkitekturen består av tre lager (tiers) som vart och ett kan köras på olika plattformar: Klienten (tier 1) Här finns användargränssnittet. Applikations-servern (tier2) Här finns det mesta av applikationslogiken. Databas-servern (tier3) Här finns transaktionslogiken och databasen. KaU - Datavetenskap - DAV B04 Karlstads Universitet, Datavetenskap

18 Fördelar med three-tier
En 'tunn' klient, vilken inte kräver så dyr hårdvara. Många klienter kan använda samma applikations-sever, vilket betyder att mjukvaran inte behöver distribueras till användarna. Den ökade modulariteten gör det lättare att modifiera eller byta ut ett lager utan att påverka de andra lagren. Genom att separera applikationen från databasfunktionerna blir det lättare att implementera 'load balancing'. Den passar ganska naturligt in i Web-miljön: webbläsaren fungerar som den tunna klienten och Web-servern fungerar som applikations-servern. KaU - Datavetenskap - DAV B04

19 Three-tier client-server architecture
KaU - Datavetenskap - DAV B04

20 KaU - Datavetenskap - DAV B04
DAV B04 - Databasteknik PHP (-) KaU - Datavetenskap - DAV B04

21 Lab 3 - webbgränssnittet
Gränssnittet ska bestå av ett antal php-filer som accessar databasen Dessa ska ligga i katalogen public_html som finns under ert konto på atlantis.cse.kau.se Startsidan ska heta index.php (eller index.html) och nås genom adressen atlantis.cse.kau.se/~username/ Kopiera över dina php-filer till atlantis m h a t ex WinSCP (välj SSH port 2244, typ SCP) KaU - Datavetenskap - DAV B04

22 PHP Hypertext Preprocessor
Scriptspråk på serversidan Innebär att webbservern översätter php-scripten innan sidan skickas till webbläsaren, dvs. webbläsaren ser bara vanlig html-kod Ett av världens populäraste scriptspråk Har inbyggt stöd för uppemot 30 olika DBHS PHP-kod kan läggas in varsomhelst i en vanlig HTML-sida Syntaxen är väldigt lik den i C/C++/Java KaU - Datavetenskap - DAV B04

23 KaU - Datavetenskap - DAV B04
PHP Grunderna Exempel php-script på webbservern //test.php <HTML> <HEAD> <TITLE> Simple PHP Example</TITLE> </HEAD> <BODY> <P> <?php print “<B>Hello World!</B>"; ?> </P> </BODY> </HTML> KaU - Datavetenskap - DAV B04

24 KaU - Datavetenskap - DAV B04
PHP Grunderna Samma sida i webbläsaren //test.php <HTML> <HEAD> <TITLE> Simple PHP Example</TITLE> </HEAD> <BODY> <P> <B>Hello World!</B> </P> </BODY> </HTML> KaU - Datavetenskap - DAV B04

25 KaU - Datavetenskap - DAV B04
PHP Grunderna Resultat i webbläsaren KaU - Datavetenskap - DAV B04

26 KaU - Datavetenskap - DAV B04
Positiva aspekter Oberoende av webbläsarens typ/version etc. Tillgång till resurser på webbservern Ex. MySQL-databaser Speciellt lämpat för att behandla text Saktar inte ned webbläsaren som exempelvis JavaScript kan göra (prestandakraven ligger istället på servern) KaU - Datavetenskap - DAV B04

27 KaU - Datavetenskap - DAV B04
PHP Syntax Ett php-script börjar alltid med <?php (eller <?) Och slutar alltid med ?> Kallas för scriptets avgränsare (delimiters) Kommentarer görs med // (enstaka rad) eller /* */ (flera rader) KaU - Datavetenskap - DAV B04

28 Skalära (primitiva) typer
boolean, bool: {true, false} integer, int: {…-1, 0, 1, 2…} float, double, real: {..1.1, 1.2..} string: tecken inom ’ ’ eller ” ” arrayer (lista, haschtabell, samling…) där nyckeln är antingen är av typen integer eller string objekt (ej i denna kurs om ni inte absolut känner för det…) KaU - Datavetenskap - DAV B04

29 KaU - Datavetenskap - DAV B04
Variabler Börjar alltid med ett dollartecken ( $) $name, $i, $test Är typlösa 8! $name = ”Joppe”; $i = 1; $test = 4.7; $test = ”Kalle”; KaU - Datavetenskap - DAV B04

30 KaU - Datavetenskap - DAV B04
Operatorer =, ==, !=, !, +, -, *, /, ++, --, &&, || etc.... $i = 1; $i = $i + 2; //$i = 3 $i++; //$i = 4 Dvs. precis som i C/C++/Java KaU - Datavetenskap - DAV B04

31 ”Utökningar” som kan vara bra att känna till
AND, OR Punktoperatorn (.) som används för att slå ihop strängar $fname = ”Joppe”; $sname = ”Karlsson”; $name = $fname . ” ” . $sname; //Joppe Karlsson $mat = ”Spagetti”; $mat .= ” & köttfärssås” // $mat har nu värdet ”Spagetti & köttfärssås” Det finns över 100 inbyggda sträng-funktioner KaU - Datavetenskap - DAV B04

32 KaU - Datavetenskap - DAV B04
Utskrift print() eller echo() print(”Hello World\n”); echo(”Hello World\n”); print($fname . ” ” . $sname); Egentligen inte funktioner, utan språkkonstruktioner... print ”Hello World”; echo $fname . ” ” . $sname; Med ”enkelfnuttar” skrivs texten ut precis som den deklareras. Ex: Echo ’This string will $print exactly as it\’s declared’; ’ inne i strängen måste föregås av \ KaU - Datavetenskap - DAV B04

33 KaU - Datavetenskap - DAV B04
Reserverade ord KaU - Datavetenskap - DAV B04

34 KaU - Datavetenskap - DAV B04
Selektioner if-else if ($var1 == true) { //... } else if($var2 == true) { //... else KaU - Datavetenskap - DAV B04

35 KaU - Datavetenskap - DAV B04
Selektioner switch switch($category) { case “news”: //... case “weather”: //... case “sports”: //... default: //.. } KaU - Datavetenskap - DAV B04

36 KaU - Datavetenskap - DAV B04
Iterationer while for while ($expr) { //... } for($i = 0; i < $size; $i++) { //... } KaU - Datavetenskap - DAV B04

37 KaU - Datavetenskap - DAV B04
Iterationer do-while foreach $i = 0; do { //... }while ($i>0); foreach($array_expr as $value) echo $value; foreach($array_expr as $key => $value) //... KaU - Datavetenskap - DAV B04

38 KaU - Datavetenskap - DAV B04
Inkludera filer include () //inkluderar alltid filen include ”mysql_connect.php”; include_once () //inkluderar filen om den inte redan har blivit inkluderad include_once ”config.php”; KaU - Datavetenskap - DAV B04

39 KaU - Datavetenskap - DAV B04
Funktioner function add ($arg, $arg2) { echo "Example function.\n"; $retval = $arg1 + $arg2; return $retval; } $sum = add(1, 2); KaU - Datavetenskap - DAV B04

40 KaU - Datavetenskap - DAV B04
Arrayer Skapa en array så här: $state[0] = ”Delaware”; $state[1] = ”Pennsylvania”; $state[2] = ”New Jersey”; //indexnumren kan utelämnas ..eller så här: $state = array(”Delaware”, ”Pennsylvania”, ”New Jersey”) Skriv ut den så här: print_r($state); KaU - Datavetenskap - DAV B04

41 KaU - Datavetenskap - DAV B04
Associativa arrayer Skapa en array så här: $state[”Delaware”] = ”December 7, 1787”; $state[”Pennsylvania”] = ”December 12, 1787”; $state[”New Jersey”] = ”December 18, 1787”; ..eller så här: $state = array(”Delaware” => ”December 7, 1787”, ”Pennsylvania” => ”December 12, 1787”, ”New Jersey” => ”December 18, 1787”) KaU - Datavetenskap - DAV B04

42 KaU - Datavetenskap - DAV B04
Mer arrayer… Funktionen list() kan användas för att tilldela variabler värden från en array: $array(”red”,”blue”,”green”); list($color1,$color2,$color3) = $colors; Många array-funktioner finns, t ex: in_array() array_search() count() sort() KaU - Datavetenskap - DAV B04

43 KaU - Datavetenskap - DAV B04
Koppla upp mot MySQL mysql_connect(<address>, <username>, <password>); Exempel ”picard", ”password"); or die(”Could not connect to MySQL server!); KaU - Datavetenskap - DAV B04

44 KaU - Datavetenskap - DAV B04
Välj databas bool mysql_select_db (string databas [, uppkoppling]) Exempel @mysql_select_db(”katarina") or die(”Could not select database!); KaU - Datavetenskap - DAV B04

45 KaU - Datavetenskap - DAV B04
Kör en SQL-fråga mysql_query(string sql_question [, uppkoppling] ) Vad funktionen returnerar varierar: vid CREATE/INSERT/UPDATE/DROP etc. returneras true/false vid SELECT returneras en resultatmängd KaU - Datavetenskap - DAV B04

46 KaU - Datavetenskap - DAV B04
Kör en SQL-fråga Exempel $query = ”SELECT * FROM Suppliers ”; $result = mysql_query($query); if ( !$result ) { print("<P>Error performing query: " . mysql_error() . "</P>"); exit(); } KaU - Datavetenskap - DAV B04

47 Hantera resultatmängden
Hämta resultatet rad efter rad… while ( $row = mysql_fetch_array($result) ) { print( ”<P>” . $row[”snum”] . ” ” . $row[”sname”] . ”</P>”); } Alternativt: while ( list($snum,$sname) = mysql_fetch_row($result) ) { print( ”<P>” . $snum. ” ” . $sname. ”</P>”); } KaU - Datavetenskap - DAV B04

48 KaU - Datavetenskap - DAV B04
Formulär <FORM ACTION=”vad som skall hända" METHOD = POST> </FORM> där ”vad som skall hända” exempelvis kan vara att ladda in en ny sida, eller maila till någon person... KaU - Datavetenskap - DAV B04

49 KaU - Datavetenskap - DAV B04
Formulär Exempel <FORM ACTION="<?php echo $_SERVER[’PHP_SELF’]; ?>" METHOD = POST> </FORM> KaU - Datavetenskap - DAV B04

50 KaU - Datavetenskap - DAV B04
Textboxen <INPUT TYPE="text" NAME="name" SIZE="30"> KaU - Datavetenskap - DAV B04

51 KaU - Datavetenskap - DAV B04
Pop-up boxen <SELECT NAME=”color" SIZE="1"> <OPTION SELECTED>Blue <OPTION>Red </SELECT> KaU - Datavetenskap - DAV B04

52 Sänd eller återställ informationen i formuläret
<INPUT TYPE="submit” NAME=”submit”> <INPUT TYPE="reset” NAME=”reset”> KaU - Datavetenskap - DAV B04

53 Viktigt att veta om PHP och formulär
Namnet på textboxen, pop-up boxen, knapparna osv. blir automatiskt variabler i PHP! Dessa variabler har formen $_POST[’variabelnamn’] <?php if(isset($_POST[’submit’])){ //Ok, någon har tryckt på submit-knappen } ?> <FORM ACTION="<?php echo $_SERVER[’PHP_SELF’]; ?>" METHOD=POST> <INPUT TYPE="submit” NAME=”submit”> </FORM> KaU - Datavetenskap - DAV B04

54 KaU - Datavetenskap - DAV B04
Exempel formulär <?php if(isset($_POST[’submit’])) { echo ”Hi ” . $_POST[’name’] . ”!<br>”; } ?> <FORM ACTION="<?php echo $_SERVER[’PHP_SELF’]; ?>" METHOD=POST> <p> Name:<br> < INPUT TYPE=”text” NAME=”name” size=”20”> </p> <INPUT TYPE="submit” NAME=”submit” VALUE=”Go!”> </FORM> KaU - Datavetenskap - DAV B04

55 Exempel på PHP och formulär
KaU - Datavetenskap - DAV B04

56 PHP och reguljära uttryck
Reguljära uttryck kan användas för att kontrollera att det användaren matar in är i rätt form för en given kolumn exempelvis att ett Bach-nummer måste vara på formen BWV XXX(X) där X är en siffra mellan 0-9 KaU - Datavetenskap - DAV B04

57 Exempel på reguljära uttryck
Sök efter strängen ”Now” i meningen ”Now is the time!” if(ereg(”Now”, ”Now is the time!”) == true) print(”Found”); // hittas om Now finns nånstans i strängen if(ereg(”^Now”, ”Now is the time!”) == true) print(”Found”); // hittas om Now finns i början av strängen if(ereg(”Now$”, ”Now is the time!”) == true) print(”Found”); // hittas om Now finns i slutet av strängen KaU - Datavetenskap - DAV B04

58 PHP och reguljära uttryck
Bara bokstäver/siffror i ex. en variabel * står för 0 eller flera gånger + står för 1 eller flera gånger {n,m} står för att det finns mellan minst n till som mest m gånger if(ereg(”[A-Za-z0-9]*”, $test) == true) print(”Correct”); else print(”Error”); KaU - Datavetenskap - DAV B04

59 Fler reguljära uttryck
p{2} Matchar strängar som har två p i sekvens [^a-zA-Z] Matchar strängar som inte innehåller bokstäver ^.{2}$ Matchar strängar som innehåller exakt två tecken <b>(.*)</b> Matchar strängar som börjar med <b> och slutar med </b> KaU - Datavetenskap - DAV B04

60 PHP och reguljära uttryck
Sant eller falskt? ereg(”^Now [a-z ]+$”, ”Now is the time!”) ereg(”^Now [a-z ]+!$”, ”Now is the time!”) Vill man sedan inte bry sig om stora eller små bokstäver så använder man istället eregi() KaU - Datavetenskap - DAV B04

61 KaU - Datavetenskap - DAV B04
Mer information Manualer/tutorials/sökning eller Tutorial om PHP och MySQL Tutorial om html, formulär osv.. KaU - Datavetenskap - DAV B04


Ladda ner ppt "KaU - Datavetenskap - DAV B04"

Liknande presentationer


Google-annonser