Præsentation er lastning. Vent venligst

Præsentation er lastning. Vent venligst

Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner,

Lignende præsentationer


Præsentationer af emnet: "Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner,"— Præsentationens transcript:

1 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner, oprettelse og kald (og variable på tværs af funktioner) echo vs return? if-else konstruktioner MySQL: Hvad returnerer mysql_query(): true/false/resultatsæt? mysql_fetch_row(), mysql_error() Dagens menu

2 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 2 Begrebsafklaring: Sprog: HTML, PHP, SQL Hardware: Browser, webserver, databaseserver, database PHP-filer på webserveren skal tale PHP med databaseserveren, SQL med databasen, og returnere HTML til browseren Hardware: Browser Webserver Database- server Database Sprog: HTML PHP SQL HTML, PHP, SQL, webserver, hvad er hvad??

3 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 3 Det nemme eksempel: Ønskes: Krig er skidt, PHP er godt Laves: Krig er skidt, PHP er godt ”; ?> HTML og PHP, baglæns fra output til input (1)

4 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 4 Det lidt sværere eksempel: Ønskes: Camilla ckj@it-c.dk Lasse xls@it-c.dk Laves: ”. $row[0]. ” ”. ” ”. $row[1]. ” ”; } ?> Camillackj@it-c.dk Lassexls@it-c.dk HTML og PHP, baglæns fra output til input (2)

5 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 5 Uklart output = ukendt proces = famlende programmering  Derfor: Hvis du er i tvivl så start bagfra Hvordan ser det endelige resultat ud (visuelt)? Hvordan ser det endelige resultat ud i kildekoden (html) Hvilke dele går tilsyneladende igen (kunne tyde på løkker) navn email Hvilke dele kommer fra databasen Camilla, ckj@it-c.dk, Lasse, xls@it-c.dk Hvilke andre dele kan identificeres? Hvordan laves det i php? Camillackj@it-c.dk Lassexls@it-c.dk HTML og PHP, baglæns fra output til input (3)

6 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 6 En variabel er en dims med et navn og en værdi (info inde i boksen). Værdien kan være En tekststreng $var = ”her er noget tekst”; Et tal $var = 36; En boolean $var = true; m.m. Quiz: Hvad er følgende? $var1 = -237; $var2 = ”945”; $var3 = $var1; $var4 = ”false”; $var5 = array(”Lasse”,”xls@it-c.dk”); Variable og strenge

7 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 7 Et array er en samling af værdier Der findes to typer arrays: Associative $arr1 = array (”navn” => ”Camilla”, ”email” => ”ckj@it-c.dk”); $arr2[”navn”] = ”Camilla”; $arr2[”email”] = ”ckj@it-c.dk”; Indexikale $arr1 = array (”Camilla”, ”ckj@it-c.dk”); $arr2[0] = ”Camilla”; $arr2[1] = ”ckj@it-c.dk”; Arrays (1)

8 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 8 Et array kan forståes som en liste: Man navigerer et array ad x-aksen, derfor er $array[1] det samme som ’ckj@it-c.dk’... Arrays kan være flerdimensionelle, fx 2D, og kan nu bedre forstås som et skema: Man navigerer først ad x-aksen, derefter ad y-aksen, derfor er $array[0][1] det samme som ’ckj@it-c.dk’... Camilla, ckj@it-c.dk Camillackj@it-c.dk Lassexls@it-c.dk Arrays (2)

9 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 9 En funktion er en samling af en eller flere processer/kommandoer. Funktioner kaldes også for procedurer. Opret en simpel procedure: function bingohat() { echo “ Krig er skidt, PHP er godt ”; } Kald/aktivér/eksekvér funktionen: bingohat(); Resultat: Krig er skidt, PHP er godt OBS: Oprettelse og kald af funktion er IKKE det samme! Funktioner (1)

10 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 10 En funktion kan tage argumenter som input function bingohat($arg1, $arg2) { echo “ Krig er “. $arg1. “, PHP er “. $ARG2. “ ”; } Argumenter kan være i form tekststrenge, variabler, arrays, m.m. $klaphat = ”godt”; bingohat(”skidt”, $klaphat); Resultat: Krig er skidt, PHP er godt Funktioner (2), argumenter

11 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 11 En funktion bør gøre brug af ENTEN echo eller return function multiplicer_ver1($tal1,$tal2) { echo ” ”. $tal1. ” gange ”. $tal2. ” er lig ”. ($tal1*$tal2). ” ”; } multiplicer_ver1(12,4); function multiplicer_ver2($tal1,$tal2) { $result = ” ”. $tal1. ” gange ”. $tal2. ” er lig ”. ($tal1*$tal2). ” ”; return $result; } $regnetal = 16; $res = multiplicer_ver1($regnetal,3); echo $res; Resultat: 12 gange 4 er lig 48 16 gange 3 er lig 48 Funktioner (3), echo eller return?

12 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 12 Hvad er forskellen på echo og return? Return en bredere anvendelig fordi echo skriver direkte til brugeren, mens return giver mulighed for videremanipulation, inden der skrives til brugeren (hvis der overhovedet skal skrives til brugeren...) Eksempel: function multiplicer_ver2($tal1,$tal2) { return ($tal1*$tal2); } $res = multiplicer_ver2(16,3); if ($res > 50) {... } else {... } Funktioner (4), echo eller return?

13 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 13 Variable eksisterer ikke både i og udenfor rammerne af en funktion Eksempel: function multiplicer_ver2($tal1,$tal2) { $resultat = $tal1*$tal2; } multiplicer_ver2(16,3); echo $resultat; Resultat: [ ] Fejl: $resultat er oprettet inde i funktionen, men ikke givet med ud ( return $resultat ), opsamlet ( $res = multiplicer_ver2(16,3) ) for herefter at være tilgængelig også udenfor... Funktioner (5), variable på tværs af funktioner

14 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 14 Quiz: Find 5 fejl !! function multiplicer_ver1($tal1,$tal22) { echo ” ”. $tal1. ” gange ”. $tal2. ” er lig ”. (tal1*$tal22). ” ”; } multiplicer_ver1($regnetal,4); function multiplicer_ver2($tal1,$tal2) { $result = ” ”. $tal1. ” gange ”. $tal2. ” er lig ($tal1*$tal2). ” ”; return $result } $regnetal = 16; multiplicer_ver1(16,3); echo $result; Funktioner (6), quiztime

15 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 15 Ofte bruges if-else blot i små passager fx ifm formvalidering Eksempel: if ($submitknap) { $pattern = " ^[A-Za-z0-9_-\.]+@[A-Za-z0-9_-]+\.[A-Za-z0-9_-\.]+$ “; $mailok = ereg($pattern,$email); if ($mailok) { // alt i orden, toget kører videre } else { // dårlig mail, fætter, prøv igen } } NB: Har brugeren klikket på submit? Se http://www.it-c.dk/people/xls/w2/ under rettelser til opgavesæt 5...http://www.it-c.dk/people/xls/w2/ If-else konstruktioner

16 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 16 Men if-else konstruktioner kan også bruges til fx at omkranse et helt script og dermed være med til at styre udfaldet af et gennemløb... Eksempel: function executeSQL($strSQL) { if (!$link = mysql_connect(......)) { echo " Ingen server. ". mysql_error()." "; return false; } else { if (!mysql_select_db(..,$link)) { echo " Ingen database. ". mysql_error()." "; return false; } else { $res = mysql_query($strSQL, $link); if (!$res = mysql_query($strSQL, $link)) { echo " Query fejlede. ". mysql_error()." "; return false; } else { return $res; } } mysql_close($link); } } If-else konstruktioner (2)

17 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 17 mysql_query() kan returnere 3 forskellige ting, alt afhængig af forespørgselstypen. Der findes grundlæggende to forskellige slags databaseforespørgsler, dem der returnerer data (”resultatsæt”) og dem, der ikke gør. Førstnævnte returner enten data eller false, sidstnævnte returnerer true eller false Eksempler på SQL-kommandoer, der returnerer data: SELECT, COUNT, DESCRIBE... Eksempler på SQL-kommandoer, der IKKE returnerer data: CREATE, INSERT, UPDATE, DELETE, DROP, ALTER... Hvad returner mysql_query() / executeSQL()?

18 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 18 Udfaldet af mysql_query bør testes, enten internt i executeSQL() eller ved kaldstedet – fx inden resultatsættet gives videre til mysql_fetch_row(). Eksempel: if ($res = executeSQL(”SELECT navn,email FROM brugere”)) { if (mysql_num_rows($res) > 0) { while ($row = mysql_fetch_row($res)) { echo... } } else { echo ” Forespørgslen returnerede ingen rækker ”; } } else { echo ” Forespørgslen fejlede... ”; } Validering af mysql_query()

19 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 19 Ved validering af mysql-operationer kan man – hvis operationen fejler – få mysql-databasens egen fejlmeddelelse vha funktionen mysql_error(). Eksempel: function executeSQL($strSQL) { if (!$link = mysql_connect(......)) { echo " Ingen server. ". mysql_error()." "; return false; } else {... Se yderligere forklaring på http://www.php.net/manual/en/function.mysql-error.php http://www.php.net/manual/en/function.mysql-error.php Fejlmeddelelser med mysql_error()

20 Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 20 W2: http://www.it-c.dk/people/xls/w2/http://www.it-c.dk/people/xls/w2/ PHP: http://www.webcafe.dk/artikler/php/http://www.webcafe.dk/artikler/php/ http://www.webcafe.dk/artikler/sql/ http://hotwired.lycos.com/webmonkey/programming/php/ http://www.zend.com/zend/tut/ MySQL: http://www.php.net/manual/en/ref.mysql.phphttp://www.php.net/manual/en/ref.mysql.php http://hotwired.lycos.com/webmonkey/99/21/index2a.html SQL: http://www.w3schools.com/sql/default.asphttp://www.w3schools.com/sql/default.asp Online resourcer


Download ppt "Lasse Steensgaard [xls]Opsamlende forelæsning på W2, 2. april 2003slide 1 HTML og PHP: Baglæs fra output til input PHP: Variable, strenge og arrays Funktioner,"

Lignende præsentationer


Annoncer fra Google