Ladda ner presentationen
Presentation laddar. Vänta.
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
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.