1 / 20

Dagens menu

Dagens menu. 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:

lula
Download Presentation

Dagens menu

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Dagens menu 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() Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 1

  2. HTML, PHP, SQL, webserver, hvad er hvad?? Sprog: HTML PHP SQL Hardware: Browser Webserver Database-server Database 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 Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 2

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

  4. HTML og PHP, baglæns fra output til input (2) Det lidt sværere eksempel: Ønskes: <table> <tr><td>Camilla</td><td>ckj@it-c.dk</td></tr> <tr><td>Lasse</td><td>xls@it-c.dk</td></tr> </table> Laves:<table> <? $result = mysql_query(”SELECT navn,email FROM table1”); while ($row = mysql_fetch_row($result) { echo ”<tr><td>” . $row[0] . ”</td>” . ”<td>” . $row[1] . ”</td></tr>”; } ?> </table> Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 4

  5. HTML og PHP, baglæns fra output til input (3) • 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) <tr><td>navn</td><td>email</td></td></tr> • 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? Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 5

  6. Variable og strenge • 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”); Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 6

  7. Arrays (1) • 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”; Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 7

  8. Arrays (2) 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’... Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 8

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

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

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

  12. Funktioner (4), echo eller return? • 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 { ...} Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 12

  13. Funktioner (5), variable på tværs af funktioner 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... Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 13

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

  15. If-else konstruktioner 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... Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 15

  16. If-else konstruktioner (2) 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 "<p>Ingen server.<br>" . mysql_error() ."</p>"; return false; } else { if (!mysql_select_db(..,$link)) { echo "<p>Ingen database.<br>" . mysql_error() ."</p>"; return false; } else { $res = mysql_query($strSQL, $link); if (!$res = mysql_query($strSQL, $link)) { echo "<p>Query fejlede.<br>" . mysql_error() ."</p>"; return false; } else { return $res; } }mysql_close($link); }} Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 16

  17. Hvad returner mysql_query() / executeSQL()? • 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... Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 17

  18. Validering af mysql_query() 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 ”<p>Forespørgslen returnerede ingen rækker</p>”; }} else { echo ”<p>Forespørgslen fejlede...</p>”;} Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 18

  19. Fejlmeddelelser med mysql_error() 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 "<p>Ingen server.<br>" . mysql_error() ."</p>"; return false; } else { ... Se yderligere forklaring på http://www.php.net/manual/en/function.mysql-error.php Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 19

  20. Online resourcer W2: http://www.it-c.dk/people/xls/w2/ 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.php http://hotwired.lycos.com/webmonkey/99/21/index2a.html SQL: http://www.w3schools.com/sql/default.asp Lasse Steensgaard [xls] Opsamlende forelæsning på W2, 2. april 2003 slide 20

More Related