Powering Scripts with Functions David Lash Using and writing your own functions

Download Report

Transcript Powering Scripts with Functions David Lash Using and writing your own functions

Powering Scripts with Functions

David Lash Chapter 4 Using and writing your own functions

Objectives

 Introduce this notion of a function  Some basic numeric PHP functions—E.g., sqrt(), round(), is_numeric(), and rand().

 The print()  The date() function function.

 See what we can do for ourselves David Lash

Using Some Basic PHP Functions

 PHP has a bunch of

built-in

functions.  They do things automatically for you:  For example,  print (“Hello World”); Name of function Creates output with its one

argument (or input variable).

 We will look at other functions that do things for you 3 David Lash

The

sqrt()

Function – Just to warm-up …

 sqrt() - input a single numerical argument and returns its square root.

 For example, the following  $x=sqrt(25);  $y=sqrt(24);  print "x=$x y=$y";  Will output  x=5 y=4.898979485566

$y=144; $num = sqrt($y); Returned value Function name David Lash Argument or parameter to function 4

The round() Function

 round() - rounds number to nearest integer  For example, the following  $x=round(-5.456);  $y=round(3.7342);  print "x=$x y=$y";  Will output x=-5 y=4 5 David Lash

True/false

Return values

 So far functions have either returned nothing (e.g., print() ) or a number (e.g., round() )  Functions can also return a true or false value.  True is sometimes thought of 1 and false of 0  These are called boolean returned  Why would you do this? ….  Makes testing something easy This is just an if ( got_a_number() ) { do stuff example it is not a }  Lets look at a true/false function ….

valid statement 6 David Lash

The is_numeric() Function

 is_numeric() determines if a variable is a valid number or a numeric string.

 It returns true or fals e.  Consider the following example...

if (is_numeric($input)) { print "Got Valid Number=$input"; } else { Could use to test if input was string or numeric print "Not Valid Number=$input";   } If $input was If $input was Valid Number=Happy “6” then would “Happy” : Got Valid Number=6 then would output : Not 7 David Lash

Remember this … Consider average example

Survey Form

Class Survey


Pick A Number:

Pick A Number 2:

Pick A Number 3:

David Lash 8

15.

16.

17.

18.

19.

20.

21.

22.

23.

24.

9.

10.

11.

12.

13.

14.

1.

2.

3.

4.

5.

6.

7.

8.

PHP Code

Guess the Dice Your Averages Are:

$num1 = $_POST[num1]; $num2 = $_POST[num2]; $num3 = $_POST[num3]; if ( !is_numeric($_POST[num1]) || !is_numeric($_POST[num2]) || !is_numeric($_POST[num3]) ){ print "Error please fill in numericaly values for all three inputs"; print "num1=$num1 num2=$num2 num3=$num3"; exit; } $aver = ($num1 + $num2 + $num3 ) / 3; print ""; print "num1 = $num1 "; print "num2 = $num2 "; print "num3 = $num3 "; print "
"; print "
aver = $aver"; ?> print "
";
http://condor.depaul.edu/~dlash/extra/Webpage/examples/newaverage.html

David Lash 9

The rand() Function – can be fun

 Use rand() to generate a random number.   You can use random numbers to simulate a dice roll or a coin toss or to randomly select an advertisement banner to display . rand() gen a number from 1 to max number.  E.g., $num = rand(); print ”num=$num”  Might output … num = 12 10 David Lash

The

rand()

Function - Part II

 Use the rand() to generate a number 1-6  $numb = rand();   $rnumb = ($numb % 6) + 1; print "Your random dice toss is $rnumb"; Think a second … Asks for remainder of $numb / 6 which is always 0,1,2,3,4, or 5 so you add 1 to force it to be 1,2,3,4,5, or 6  The random number generated in this case can be a 1, 2, 3, 4, 5, or 6. 11 David Lash

A Full Example ...

 Consider the following application:  Uses an HTML form to ask the end-user to guess the results of dice roll :  1  2   3 4   5 6  http://condor.depaul.edu/~dlash/extra/Webpage/examples/guessdice.php

David Lash 12

Consider the following ...

Guess the Dice

$guess = $_POST["guess"]; if ( $guess >= 1 && $guess <=6 ) { $numb = rand() % 6 + 1; print "numb=$numb
"; $dice="dice$numb.gif"; print "The Random Dice Generated Is ..."; print "";

Generate random number 1-6 Set which image to display

print "
Your Dice=$dice
"; if ( $guess == $numb ) {

Display either dice1.gif, dice2,gif, dice3.gif, dice4.gif, dice5.gif, or dice6.gif

print "
You got it right "; print "
Your Guess is $guess "; } else { print "
You got it WRONG ? ";

Check to see if got it right or wrong

print "
Your Guess is $guess "; } } else { print "Illegal Value For Guess=$guess"; } ?> David Lash 13

Objectives

 To learn to use several PHP functions useful for Web application development  Some basic numeric PHP functions—E.g., sqrt(), round(), is_numeric(), and rand().

 The

print()

function  The date() function.

 To learn to write and use your own functions David Lash

More information on the print() Function

 You don’t need to use parenthesis with print()  Double quotes means output the value of any variable: Double quotes “  $x = 10;  print ("Mom, please send $x dollars");  Single quotes means output the actual variable name  $x = 10; Single quotes ‘  print ('Mom, please send $x dollars');  To output a single variable’s value or expression, omit the quotation marks .

 $x=5;  print $x*3; 15 David Lash

Generating HTMLTags with print()

 Using single or double quotation statements can be useful when generating HTML tags  print '';  This above is easier to understand and actually runs slightly faster than using all double quotation marks and the backslash (\) character :  print ""; using \ allows “ to be output David Lash 16

Objectives

 To learn to use several PHP functions useful for Web application development  Some basic numeric PHP functions—E.g., sqrt(), round(), is_numeric(), and rand().

 The print()  The date() function function.

 To learn to write and use your own functions David Lash

The date() Function

 The date() function is a useful function for determining the current date and time $x = date('

format string'

); A string of one or more characters that defines what format the output should be.

Receives date() information in the requested format Call to the date function.

 The format string defines the format of the date() function’s output :  $day = date('d'); Request date() to return the  print "day=$day"; numerical day of the month .

 If executed on December output “ day =27”.

27, 2001, then it would 18 David Lash

Selected character formats for date()

Format String

D

Meaning

Three-letter indication of day of week (for example, Mon, Tue) d F h Numerical day of month returned as two digits (for example, 01, 02) Current month in long format (for example, January, February) Current hour in day from 01 to 12 (for example, 02, 11)

Format String

M s

Meaning

Current month of year in short three-letter format (for example, Jan, Feb) Seconds in current minute from 00 to 59 (for example, 07, 50) t U Number of days in current month (28, 29, 30, or 31) H i l L Current hour in day from 00 to 23 (for example, 01, 18). Current minute from 00 to 59 (for example, 05, 46) Current day of week in long format (for example, Sunday, Monday) Returns 1 if it is a leap year or 0 otherwise w y Y z Number of seconds since the epoch (usually since January 1, 1970) Current day of week from 0 to 6 (where 0 is Sunday, 1 is Monday, and so on) Current year returned in two digits (for example, 01, 02) Current year returned in four digits (for example, 2001, 2002) m Current month of year from 01 to 12 Day number of the year from 0 to 365 (where January 1 is day 0, January 2 is day 1, and so on) David Lash 19

More About date()

 You can combine multiple character formats return more than one format from the date()  For example ,  $today = date( 'l, F d, Y');  print "Today=$today";  On MQY 11 , 2004, would output  “Today=Tuesday, May 11, 2004”.

20 David Lash

A Full Example ...

 Consider the following Web application that uses date() sale event .

to determine the current date and the number of days remaining in a store’s  Sale runs from 12/1 until 1/10/02 21 David Lash

Receiving Code

1. Our Shop 2. 3.

4. $today = date( 'l, F d, Y');

Get a date in format day of week, month, day and year

5. print "Welcome on $today to our huge blowout sale! "; 6. $month = date('m'); 7. $year = date('Y');

Get month number 1-12, , 4 digit year and day of year

8. $dayofyear = date('z'); 9. if ($month == 12 && $year == 2001) { 10. $daysleft = (365 - $dayofyear + 10); 11. print "
There are $daysleft sales days left"; 12.} elseif ($month == 01 && $year == 2002) {

Check if its Dec 2001. Then figure out days left in year and add 10.

13. if ($dayofyear <= 10) { 14. $daysleft = (10 - $dayofyear); 15. print "
There are $daysleft sales days left"; 16. } else { 19. print "
Sorry, our sale is over."; 20. } 21. } else { 22. print "
Sorry, our sale is over."; 23. } 24. print "
Our Sale Ends January 10, 2002"; 25. ?>

If if 1/2002 already, how many days left before 1/10?

Otherwise sale is ove.

David Lash 22

The Output ...

The previous code can be executed at http://webwizard.aw.com/~phppgm/C3/date.php

David Lash 23

Create your own functions ...

Write your own function to

 group a set of statements, set them aside, and turn them into mini-scripts within a larger script.

The advantages are

 Scripts that are easier to understand and change.

 Reusable script sections.

 Smaller program size David Lash

Writing Your Own Functions

 Use the following general format

Use the keyword function here Include parentheses at the end of the function name

function function_name() {

set of statements

}

Enclose in curly brackets.

The function runs these statements when called

David Lash 25

For example …

 Consider the following : function OutputTableRow() { print 'OneTwo'; }  You can run the function by including … OutputTableRow(); 26 David Lash

As a full example …

1. 2. Simple Table Function 3. Here Is a Simple Table

4.

OutputTableRow() 5. function OutputTableRow() { function definition.

6. print '

'; 7. } 8. OutputTableRow(); 9. OutputTableRow(); 10. OutputTableRow(); 11. ?> 12.
OneTwo
Three consecutive calls to the OutputTableRow() function 27 David Lash

Would have the following output …

David Lash 28

TIP Use Comments at the Start of a Function

 It is good practice to place comments at the start of a function  For example, function OutputTableRow() { // Simple function that outputs 2 table cells print 'OneTwo'; } 29 David Lash

Passing Arguments to Functions

 Input variables to functions are called

arguments to the function

 For example, the following sends 2 arguments  OutputTableRow("A First Cell", "A Second Cell");  Within function definition can access values function OutputTableRow($col1, $col2) { print "$col1$col2"; } 30 David Lash

Consider the following code …

1. 2. Simple Table Function 3. Revised Simple Table

4.

5. function OutputTableRow( $col1, $col2 ) { 6. print "

"; OutputTableRow() Function definition Four calls to .

7. } 8.

OuputTableRow() OutputTableRow( ‘Row 1 Col 1’ , ‘Row 1 Col 2’ ); 9.

10.

OutputTableRow( ‘Row 2 Col 1’ , ‘Row 2 Col 2’ ); OutputTableRow( ‘Row 3 Col 1’ , ‘Row 3 Col 2’ ); 11.

OutputTableRow( ‘Row 4 Col 1’ , ‘Row 4 Col 2’ ); 12. ?> 13.

$col1$col2
31 David Lash

Returning Values

 Your functions can return data to the calling script.  For example, your functions can return the results of a computation.  You can use the PHP return statement to return a value to the calling script statement: return $result; This variable’s value will be returned to the calling script.

32 David Lash

Example function

1. function Simple_calc( $num1, $num2 ) { 2. // PURPOSE: returns largest of 2 numbers 3. // ARGUMENTS: $num1 -- 1st number, $num2 -- 2nd number 4. if ($num1 > $num2) { 5. return($num1); 6. } else { Return $num1 when it is the larger value.

7. return($num2); 8. } 9. } Return $num2 when it is the larger value.

What is output if called as follows:

$largest = Simple_calc(15, -22); 33 David Lash

Consider an application that …

Main form element: Starting Value: Ending Value: David Lash 34

A Full Example ...

 Consider a script that calculates the percentage change from starting to an ending value  Uses the following front-end form: Starting Value: Ending Value: http://webwizard.awl.com/~phppgm/C4/driveperc.html

David Lash 35

The Source Code

1. 2. Your Percentage Calculation 3. Percentage Calculator 4.

Calculate the percentage 5. function Calc_perc($buy, $sell) { 6. $per = (($sell - $buy) / $buy) *100; change from the starting value to the ending value.

7. return($per); 8. } 9. $start = $_POST[“start”]; $end = $_POST[“end”]; 10. print "
Your starting value was $start."; 11. print "
Your ending value was $end."; 12. if (is_numeric($start) && is_numeric($end) ) { 13. if ($start != 0) { The call to Calc_perc() returns the percentage change into $per.

14. $per = Calc_perc($start, $end); 15. print "
Your percentage change was $per %."; 16. } else { print "
Error! Starting values cannot be zero "; } 17. } else { 18. print "
Error! You must have valid numbers for start and end "; 19. } 20. ?> David Lash 36

Using External Script Files

 Sometime you will want to use scripts from external files.  Reuse code from 1 situation to another  Create header and footer sections for code  PHP supports 2 related functions: require ("header.php");

The require() function produces a fatal error if it can’t insert the specified file.

The include() function produces a warning if it can’t insert the specified file.

 include ("trailer.php"); Both search for the file named within the double quotation marks and insert its PHP, HTML, or JavaScript code into the current file .

David Lash 37

Consider the following example

1. 2. Welcome to Harry’s Hardware Heaven!

The script will output these lines when the file is included.

3.
We sell it all for you!
4.

5. $time = date('H:i'); The value of $time will be set when the file is included.

6. function Calc_perc($buy, $sell) { 7. $per = (($sell - $buy ) / $buy) * 100; 8. return($per); 9. } 10. ?> This function will be available for use when the file is included.

38 David Lash

header.php

 If the previous script is placed into a file called header.php … 1.

Hardware Heaven 2.

3. include("header.php"); 4. $buy = 2.50; 5. $sell = 10.00; Include the file header.php

6. print "
It is $time."; 7. print "We have hammers on special for \$$sell!"; 8. $markup = Calc_perc($buy, $sell); Calc_perc() is defined in 9. print "
Our markup is only $markup%!!"; header.php

10. ?> 11. David Lash 39

Would output the following ...

David Lash 40

More Typical Use of External Code Files

 More typically might use one or more files with only functions and other files that contain HTML  For example, might use the following as footer.php

.


Hardware Harry's is located in beautiful downtown Hardwareville.


We are open every day from 9 A.M. to midnight, 365 days a year.


Call 476-123-4325. Just ask for Harry.

 Can include using: 41 David Lash

Even More Practical Example

 Check out the following link http://condor.depaul.edu/~dlash/website/Indellible_Technologies.php

 Original found at perl-pgm.com

 Could hard code header in each file that needs it or …  Separate the header info into a different file (Say header.php.)  Include it everywhere needed.  E.g., Indellible Technologies David Lash 42

Here is contents of header.php


Request Information | Pre-register | CourseCatalog |  Testimonials
David Lash 43

Summary

 To learn to use several PHP functions useful for Web application development  Some basic numeric PHP functions—E.g., abs(), sqrt(), round(), is_numeric(), and rand().

 The print() function  The date() function.

 To learn to write and use your own functions  Writing own functions  returning values  Passing arguments David Lash

Here is the receiving code ...

< Receiving Script

$passwd= $_POST["pass"]; $fname= $_POST["fname"]; if ($passwd == "password" ) { print "Thank you $fname welcome
"; print "Here is my site's content"; } else { print "Hit the road jack you entered password=$passwd
"; print "Contact someone to get the passwd"; } ?> David Lash 45

Summary

 Looked at using conditional statements  if statement  elsif statement  else statement  conditional statements have different format if ( $x < 100 ) { } $x = $y + 1; $z = $y + 2;  Can do multiple tests at once: if ( $x < 100 && $name = “george” ) { $x = $y + 1; $z = $y + 2; }   Can test if variable(s) set from form if ( !$_POST[‘var1’] || !$_POST[‘var1’] ) { 46 David Lash