KaU - Datavetenskap - DAV B04 DAV B04 - Databasteknik MySQL (-) 2018-09-20 KaU - Datavetenskap - DAV B04
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! 2018-09-20 KaU - Datavetenskap - DAV B04
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. 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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) 2018-09-20 KaU - Datavetenskap - DAV B04
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,...) 2018-09-20 KaU - Datavetenskap - DAV B04
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!!! 2018-09-20 KaU - Datavetenskap - DAV B04
Mer information om MySQL Officiell sajt www.mysql.com Dokumentation/tutorial http://www.mysql.com/doc/ Tutorial MySQL/PHP http://www.mysql.com/articles/ddws/index.html 2018-09-20 KaU - Datavetenskap - DAV B04
Databasprogrammering (-) DAV B04 - Databasteknik Databasprogrammering (-) 2018-09-20 KaU - Datavetenskap - DAV B04
Databas-programmering 2018-09-20 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. 2018-09-20 KaU - Datavetenskap - DAV B04 Karlstads Universitet, Datavetenskap
KaU - Datavetenskap - DAV B04 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 2018-09-20 KaU - Datavetenskap - DAV B04
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. 2018-09-20 KaU - Datavetenskap - DAV B04
Logical two-tier client server architecture 2018-09-20 KaU - Datavetenskap - DAV B04
Three Tier Client-Server Architecture 2018-09-20 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. 2018-09-20 KaU - Datavetenskap - DAV B04 Karlstads Universitet, Datavetenskap
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. 2018-09-20 KaU - Datavetenskap - DAV B04
Three-tier client-server architecture 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 DAV B04 - Databasteknik PHP (-) 2018-09-20 KaU - Datavetenskap - DAV B04
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) 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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> 2018-09-20 KaU - Datavetenskap - DAV B04
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> 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 PHP Grunderna Resultat i webbläsaren 2018-09-20 KaU - Datavetenskap - DAV B04
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) 2018-09-20 KaU - Datavetenskap - DAV B04
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) 2018-09-20 KaU - Datavetenskap - DAV B04
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…) 2018-09-20 KaU - Datavetenskap - DAV B04
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”; 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Operatorer =, ==, !=, !, +, -, *, /, ++, --, &&, || etc.... $i = 1; $i = $i + 2; //$i = 3 $i++; //$i = 4 Dvs. precis som i C/C++/Java 2018-09-20 KaU - Datavetenskap - DAV B04
”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 2018-09-20 KaU - Datavetenskap - DAV B04
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 \ 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Reserverade ord 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Selektioner if-else if ($var1 == true) { //... } else if($var2 == true) { //... else 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Selektioner switch switch($category) { case “news”: //... case “weather”: //... case “sports”: //... default: //.. } 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Iterationer while for while ($expr) { //... } for($i = 0; i < $size; $i++) { //... } 2018-09-20 KaU - Datavetenskap - DAV B04
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) //... 2018-09-20 KaU - Datavetenskap - DAV B04
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”; 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Funktioner function add ($arg, $arg2) { echo "Example function.\n"; $retval = $arg1 + $arg2; return $retval; } … $sum = add(1, 2); 2018-09-20 KaU - Datavetenskap - DAV B04
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); 2018-09-20 KaU - Datavetenskap - DAV B04
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”) 2018-09-20 KaU - Datavetenskap - DAV B04
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() 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Koppla upp mot MySQL mysql_connect(<address>, <username>, <password>); Exempel $db= @mysql_connect("localhost", ”picard", ”password"); or die(”Could not connect to MySQL server!); 2018-09-20 KaU - Datavetenskap - DAV B04
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!); 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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(); } 2018-09-20 KaU - Datavetenskap - DAV B04
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>”); } 2018-09-20 KaU - Datavetenskap - DAV B04
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... 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Formulär Exempel <FORM ACTION="<?php echo $_SERVER[’PHP_SELF’]; ?>" METHOD = POST> … </FORM> 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Textboxen <INPUT TYPE="text" NAME="name" SIZE="30"> 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Pop-up boxen <SELECT NAME=”color" SIZE="1"> <OPTION SELECTED>Blue <OPTION>Red </SELECT> 2018-09-20 KaU - Datavetenskap - DAV B04
Sänd eller återställ informationen i formuläret <INPUT TYPE="submit” NAME=”submit”> <INPUT TYPE="reset” NAME=”reset”> 2018-09-20 KaU - Datavetenskap - DAV B04
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> 2018-09-20 KaU - Datavetenskap - DAV B04
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> 2018-09-20 KaU - Datavetenskap - DAV B04
Exempel på PHP och formulär 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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 2018-09-20 KaU - Datavetenskap - DAV B04
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”); 2018-09-20 KaU - Datavetenskap - DAV B04
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> 2018-09-20 KaU - Datavetenskap - DAV B04
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() 2018-09-20 KaU - Datavetenskap - DAV B04
KaU - Datavetenskap - DAV B04 Mer information Manualer/tutorials/sökning www.php.net eller www.se.php.net Tutorial om PHP och MySQL http://www.mysql.com/articles/ddws/2.html Tutorial om html, formulär osv.. www.htmlgoodies.com 2018-09-20 KaU - Datavetenskap - DAV B04