DAV B04 - Databasteknik KaU - Datavetenskap - DAV B04 - MGö 229 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 KaU - Datavetenskap - DAV B04 - MGö 230 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 - MGö 231 Karlstads Universitet, Datavetenskap 1
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 - MGö 232 PHP Grunderna Resultat i webbläsaren KaU - Datavetenskap - DAV B04 - MGö 233 Positiva aspekter Oberoende av webbläsarens typ/version etc. Tillgång till resurser på webbservern Ex. MySQL-databaser Saktar inte ned webbläsaren som exempelvis JavaScript kan göra (prestandakraven ligger istället på servern) KaU - Datavetenskap - DAV B04 - MGö 234 Karlstads Universitet, Datavetenskap 2
PHP Syntax Ett php-script börjar alltid med <?php (eller <?) Och slutar alltid med?> Kallas för scriptets avgränsare (delimiters) KaU - Datavetenskap - DAV B04 - MGö 235 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 KaU - Datavetenskap - DAV B04 - MGö 236 Komplexa (sammansatta) typer 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 - MGö 237 Karlstads Universitet, Datavetenskap 3
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 - MGö 238 Operatorer =, ==,!=,!, +, -, *, /, ++, --, &&, etc... $i = 1; $i = $i + 2; //$i = 3 $i++; //$i = 4 Dvs. precis som i C/C++ KaU - Datavetenskap - DAV B04 - MGö 239 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 $name = $fname $sname ; $name = $fname $sname ; //samma resultat //samma resultat KaU - Datavetenskap - DAV B04 - MGö 240 Karlstads Universitet, Datavetenskap 4
Utskrift print() eller echo() print( Hello World ); echo( Hello World ); print($fname.. $sname); Egentligen inte funktioner, utan språkkonstruktioner... print Hello World ; echo $fname.. $sname; KaU - Datavetenskap - DAV B04 - MGö 241 Reserverade ord KaU - Datavetenskap - DAV B04 - MGö 242 Selektioner if-else if ($var1 == true) else if($var2 == true) else KaU - Datavetenskap - DAV B04 - MGö 243 Karlstads Universitet, Datavetenskap 5
Iterationer while while ($expr) for for($i = 0; i < $size; $i++) KaU - Datavetenskap - DAV B04 - MGö 244 Iterationer do-while $i = 0; do while ($i>0); foreach foreach($array_expr as $value) foreach($array_expr as $key => $value) KaU - Datavetenskap - DAV B04 - MGö 245 Funktioner function add ($arg, $arg_2) echo "Example function.\n"; $retval = $arg1 + $arg2; return $retval; $sum = add(1, 2); KaU - Datavetenskap - DAV B04 - MGö 246 Karlstads Universitet, Datavetenskap 6
Koppla upp mot MySQL mysql_connect(<address>, <username>, <password>); Exempel $dbcnx = @mysql_connect("localhost", picard", password"); if (!$dbcnx) print("<p>unable to connect to the ". "database server at this time.</p>" ); exit(); KaU - Datavetenskap - DAV B04 - MGö 247 Välj databas bool mysql_select_db (string databas [, uppkoppling]) Exempel if (! @mysql_select_db( lab3_xx") ) print( "<P>Unable to locate the ". "database at this time.</p>" ); exit(); KaU - Datavetenskap - DAV B04 - MGö 248 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 - MGö 249 Karlstads Universitet, Datavetenskap 7
Kör en SQL-fråga Exempel $result = mysql_query( SELECT * FROM Supplier ); if (!$result ) print("<p>error performing query: ". mysql_error(). "</P>"); exit(); KaU - Datavetenskap - DAV B04 - MGö 250 Hantera resultatmängden Hämta resultatet rad efter rad while ( $row = mysql_fetch_array($result) ) print( <P>. $row[ snum ].. $row[ sname ]. </P> ); KaU - Datavetenskap - DAV B04 - MGö 251 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 - MGö 252 Karlstads Universitet, Datavetenskap 8
Formulär Exempel <FORM ACTION="<?php echo($php_self);?>" METHOD = POST> </FORM> KaU - Datavetenskap - DAV B04 - MGö 253 Textboxen <INPUT TYPE="text" NAME="name" SIZE="30"> KaU - Datavetenskap - DAV B04 - MGö 254 Pop-up boxen <SELECT NAME= color" SIZE="1"> <OPTION SELECTED>Blue <OPTION>Red </SELECT> KaU - Datavetenskap - DAV B04 - MGö 255 Karlstads Universitet, Datavetenskap 9
Sänd eller återställ informationen i formuläret <INPUT TYPE="submit NAME= submit > <INPUT TYPE="reset NAME= reset > KaU - Datavetenskap - DAV B04 - MGö 256 Viktigt att veta om PHP och formulär Namnet på textboxen, pop-up boxen, knapparna osv. blir automatiskt variabler i PHP! <?php if($submit) //Ok, arbeta mot databasen?> <FORM ACTION="<?php echo($php_self);?>" METHOD=POST> <INPUT TYPE="submit NAME= submit > </FORM> KaU - Datavetenskap - DAV B04 - MGö 257 Exempel på PHP och formulär KaU - Datavetenskap - DAV B04 - MGö 258 Karlstads Universitet, Datavetenskap 10
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 - MGö 259 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 ); if(ereg( ^Now, Now is the time! ) == true) print( Found ); if(ereg( Now$, Now is the time! ) == true) print( Found ); //Hittas ej KaU - Datavetenskap - DAV B04 - MGö 260 PHP och reguljära uttryck Bara bokstäver/siffror i ex. en variabel if(ereg( [A-Za-z0-9]*, $test) == true) print( Correct ); else print( Error ); * 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 KaU - Datavetenskap - DAV B04 - MGö 261 Karlstads Universitet, Datavetenskap 11
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 - MGö 262 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 Information om laborationen http://enterprise.cse.kau.se KaU - Datavetenskap - DAV B04 - MGö 263 Karlstads Universitet, Datavetenskap 12