CSS - DynamicOS Web Academy

Programmering B
PHP
Lektion 5 och 6
Mahmud Al Hakim
Folkuniversitetet
[email protected]
Repetition och övningar
Vad menas med ”Indentering”. Ge exempel på två
nästlade for-satser som indenteras på ett lämpligt
sätt.
2. Hur fungerar funktionen Strcmp (STRing CoMPare)?
3. Fakultet är en funktion inom matematiken. För ett
heltal större än noll är fakulteten lika med
produkten av alla heltal från 1 upp till och med talet
självt.
Fakultet betecknas med ett utropstecken !
Exempel 1: 3! (tre fakultet) = 3 * 2 * 1 = 6
Exempel 2: 5! (fem fakultet) = 5 * 4 * 3 * 2 *1 = 120
A. Skriv ett program som räknar ut 10! (tio fakultet)
B. Skriv ett program som räknar ut fakultet av valfri
inmatad tal via ett formulär.
1.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
2
2
Filöverföring med FTP
FTP (File Transfer Protocol)
 Ett av de tidigaste populära
filöverföringsprotokollen för Internet.


Några välkända FTP Klienter
◦ FileZilla: http://filezilla-project.org/
◦ FireFTP: http://fireftp.mozdev.org/
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
3
FTP i FireFTP
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
4
Funktioner
En funktion är ett antal instruktioner
som fristående utför en sak.
 Funktioner används för att dela upp
programmet i mindre små delar.
 Det gör att programmeraren kan
koncentrera sig på en del i taget och
löper mindre risk att göra fel.
 Man använder även funktioner till kod
som kan återfinnas på flera ställen för att
minska duplikation av kod.

Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
5
När skall man använda funktioner?
Man skall använda funktioner så snart man
kan. Själva programmet brukar ofta vara
bara anrop till olika funktioner.
 Använd funktioner till:

◦ Alla uppgifter som kan avgränsas
◦ Alla uppgifter som är repetitiva
◦ All kod som du kan tänkas återanvända i
andra program

Försök att tänka ett program i funktioner.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
6
Funktioner – Exempel 1
/*
* print_html_header_start
* Skriver ut en html-header
*/
function print_html_header_start () {
echo "<html><head></head><body>";
}
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
7
Funktioner – Exempel 2
/*
* print_html_header_stop
* Skriver ut slut-html-taggar
*/
function print_html_header_stop ()
{
echo "</body></html>";
}
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
8
Argument till funktioner
En funktion kan ta noll eller flera
argument.
 Ett argument är ett värde som man
skickar till funktionen.
 Till exempel om man vill göra en funktion
som summerar två tal så är det bra om
den kan ta de två talen som argument.

Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
9
Argument - Exempel
<?php
function summa($tal1, $tal2){
return ($tal1 + $tal2);
}
echo summa(5,6);
?>
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
10
Returvärden
<?php
function is_logged_in ($name, $pass){
if ( ($name == "kalle") &&
($pass == "Hemligt") ) {
return true;
}else{
return false;
}
}
?>
Funktionen tar två argument, $namn och $pass och
returnerar värdet av en boolsk operation.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
11
Övningar
Skapa en PHP-funktion som tar emot två
argument och returnerar medelvärdet.
2. Skapa en PHP-funktion som tar emot tre
argument och returnerar medelvärdet.
3. Skapa ett PHP-Skript som tar emot två tal via
ett HTML-formulär och beräknar medelvärdet
av talen!
4. Skapa en PHP-funktion som tar emot två
argument via ett HTML-formulär och
returnera maxvärdet (det största talet).
1.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
12
Funktionen mail()
Funktionen mail() skickar ett e-post
meddelande.
 Funktionen behöver 4 argument:

1.
2.
3.
4.
Mottagarens e-postadress
Ämnesrubrik
Meddelandetext
Headers t.ex. From
<?php
mail("[email protected]","Hej",
"Ett meddelande","From: [email protected]");
echo "Meddelandet har skickats";
?>
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
13
Skicka ett e-postformulär via PHP
filen form.php
<body>
<form id="myform" name="myform" method="post"
action="mail.php">
<p>Namn<br />
<input name="namn" type="text" id="namn" size="50"
maxlength="50" />
</p>
<p>E-post<br />
<input name="epost" type="text" id="epost" size="50"
maxlength="50" />
</p>
<p>Meddelande<br />
<textarea name="meddelande" cols="50" rows="5"
id="meddelande"></textarea>
</p>
<p><input type="submit" name="Submit" value="Skicka" />
</p>
</form>
</body>
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
14
OBS!
Funktionsmakro
En annan PHP-fil som
kommer att ta emot
data och skicka vidare
som e-post!
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
15
Skicka ett e-postformulär via PHP
filen mail.php
<?php
// Hämta data från formuläret
$namn = $_POST['namn'];
$epost = $_POST['epost'];
$meddelande = $_POST['meddelande'];
// Några argument (parametrar)
$till = "[email protected]";
$rubrik = "Förfrågan från $namn";
$headers = "From: $epost";
mail($till, $rubrik, $meddelande, $headers);
echo "Meddelandet har skickats";
?>
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
16
Arrayer (vektorer/matriser)
En array är en variabel som kan innehålla
flera olika värden.
 En array kallas ibland även för en vektor.
 Exempel

$arr[0] = 10;
$arr[1] = 20;
$arr[2] = 30;
echo $arr[2]; // Skriver ut 30
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
17
Funktionen sort

Funktionen sort tar en array som
argument och sorterar den.
$arr[0] = "Kalle";
$arr[1] = "Fnatte";
$arr[2] = "Knatte";
$arr[3] = "Kajsa";
$arr[4] = "Joakim";
$arr[5] = "Alexander";
sort($arr);
for ($i = 0; $i <= 5; $i++) {
echo "$arr[$i]<br />";
}
Tips: http://www.w3schools.com/php/php_ref_array.asp
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
18
Matematika konstanter och
funktioner
M_PI = returnerar talet PI (π = ca 3.14159)
 M_SQRT2 returnerar kvadratroten ur 2 (ca
1.414)
 sqrt(x) returnerar kvadratroten ur ett tal.
<?php echo sqrt(9); ?>
 pow(x,y) returnerar x upphöjt till y (potens)
<?php
?>
 Läs mer här:


http://www.w3schools.com/php/php_ref_math.asp
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
19
Call by value





När man anropar en funktion skickar man vanligtvis
med ett eller flera argument.
Vi har tidigare sett att om man ändrar dessa argument i
funktionen så ändras de inte utanför funktionen.
Det är för att man lättare skall kunna flytta funktionen
mellan olika program utan att behöva vara rädd för att
den skall ändra något utanför själva funktionen.
Detta kallas för call by value.
Det vill säga att värdet i variabeln skickas till funktionen,
inte själva variabeln.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
20
Call by reference
Ibland vill man låta funktionen ändra variabler
även i världen utanför.
 Alltså om jag skickar en variabel till en funktion
och den ändras i funktionen så skall den ändras
även utanför funktionen.
 Detta förfarande kallas för call by reference.
 Det vill säga att man istället för att skicka en
kopia på värdet i en variabel så skickar man en
pekare till variablen så att det man gör med
variabeln i funktionen även händer utanför
funktionen.

Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
21
Call by reference - Exempel
<?php
function swap (&$var1, &$var2) {
$tmp = $var2;
$var2 = $var1;
$var1 = $tmp;
}
$text1 = "Text1";
$text2 = "Text2";
echo "Före swap: $text1, $text2 <br />";
swap($text1, $text2);
echo "Efter swap: $text1, $text2";
?>
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
22
Övning 1

Skriv ett program som beräknar porto för brev enligt följande taxa:
Vikt högst (gram)
20
100
250
500
Porto (kronor)
6
12
24
35
Brev över 500 gram räknas som paket.
Övning 2


Skriv ett program som läser in radien och höjden
av en cylinder och beräknar cylinderns volym.
Tips: Cylinders volym
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
23
Övning 3


Fakultet är en funktion inom matematiken. För ett
heltal större än noll är fakulteten lika med produkten
av alla heltal från 1 upp till och med talet självt.
Fakultet betecknas med ett utropstecken !
Exempel 1: 3! (tre fakultet) = 3 * 2 * 1 = 6
Exempel 2: 5! (fem fakultet) = 5 * 4 * 3 * 2 *1 = 120
◦ Skriv ett program som räknar ut 10! (tio fakultet)
◦ Skriv ett program som räknar ut fakultet av valfritt inmatat tal via
ett formulär.
24
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
24
Inlämningsuppgift 4


Skapa ett program som beräknar och skriver ut
en persons statliga inkomstskatt.
Läs in den beskattningsbara inkomsten i programmet.
Den statliga skatten beräknas enligt följande:
◦ Om inkomsten är mindre än (eller lika med) 8900 kr betalas 0 kr i
skatt.
◦ Om inkomsten är större än 8900 kr men mindre än 198700 kr betalas
100 kr i skatt.
◦ Om inkomsten är större än (eller lika med) 198700 kr betalas 100 kr +
20 % av inkomsten över 198700 kr.
Copyright, www.dynamicos.se, Mahmud Al Hakim, [email protected], 2011
25