Powering Scripts with Functions

1 / 46

# Powering Scripts with Functions - PowerPoint PPT Presentation

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() function The date() function.

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.

## PowerPoint Slideshow about 'Powering Scripts with Functions' - joan-craft

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

### 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() function
• The date() function.
• See what we can do for ourselves
Using Some Basic PHP Functions
• PHP has a bunch of built-in functions.
• They do things automatically for you:
• For example,
• print (“Hello World”);
• We will look at other functions that do things for you

Creates output with its one argument

(or input variable).

Name of function

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);

Function

name

Argument or parameter

to function

Returned value

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 outputx=-5 y=4
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

if ( got_a_number() ) { do stuff

}

• Lets look at a true/false function ….

This is just an example it is not a valid statement

The is_numeric() Function
• is_numeric() determines if a variable is a valid number or a numeric string.
• It returns true or false.
• Consider the following example...

if (is_numeric(\$input)) {

print "Got Valid Number=\$input";

} else {

print "Not Valid Number=\$input";

}

• If \$input was“6” then would : Got Valid Number=6
• If \$inputwas “Happy” then would output: Not Valid Number=Happy

Could use to test if input was string or numeric

Remember this … Consider average example

Survey Form

# Class Survey

Pick A Number:

Pick A Number 2:

Pick A Number 3:

PHP Code
• Guess the Dice
• \$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

The rand() Function – can be fun
• Userand()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

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";
• The random number generated in this case can be a 1, 2, 3, 4, 5, or 6.

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

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
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 "";

print "
";

if ( \$guess == \$numb ) {

print "
You got it right ";

print "

} else {

print "
You got it WRONG ? ";

print "

}

} else {

print "Illegal Value For Guess=\$guess";

}

?>

Generate random number 1-6

Set which image to display

Display either dice1.gif, dice2,gif, dice3.gif,

dice4.gif, dice5.gif, or dice6.gif

Check to see if got it right or wrong

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
• You don’t need to use parenthesis with print()
• Double quotes means output the value of any variable:
• \$x = 10;
• print ("Mom, please send \$x dollars");
• Single quotes means output the actual variable name
• \$x = 10;
• print ('Mom, please send \$x dollars');
• To output a single variable’s value or expression, omit the quotation marks.
• \$x=5;
• print \$x*3;

Double quotes “

Single quotes ‘

Generating HTMLTags withprint()
• 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

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
The date() Function
• The date() function is a useful function for determining the current date and time
• The format string defines the format of the date() function’s output:
• \$day = date('d');
• print "day=\$day";
• If executed on December 27, 2001, then it would output “day=27”.

Request date() to return the

numerical day of the month.

• You can combine multiple character formats return more than one format from thedate()
• For example,
• \$today = date( 'l, F d, Y');
• print "Today=\$today";
• On MQY 11, 2004, would output
• “Today=Tuesday, May 11, 2004”.
A Full Example ...
• Consider the following Web application that uses date() to determine the current date and the number of days remaining in a store’s sale event.
• Sale runs from 12/1 until 1/10/02
Receiving Code

1. Our Shop

2.

3.

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

5. print "Welcome on \$today to our huge blowout sale! ";

6. \$month = date('m');

7. \$year = date('Y');

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) {

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. ?>

Get a date in format day of week,

month, day and year

Get month number 1-12, ,

4 digit year and day of year

Check if its Dec 2001.

Then figure out days left in year

If if 1/2002 already, how many days

left before 1/10?

Otherwise sale is ove.

The Output ...

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

• Write your own function to
• group a set of statements, set them aside, and turn them into mini-scripts within a larger script.
• Scripts that are easier to understand and change.
• Reusable script sections.
• Smaller program size
• Use the following general format

function function_name() {

set of statements

}

Include parentheses

at the end of the

function name

Use the keyword function here

The function runs

these statements

when called

Enclose in curly

brackets.

For example …
• Consider the following:

function OutputTableRow() {

print 'OneTwo';

}

• You can run the function by including …

OutputTableRow();

As a full example …

1.

2. Simple Table Function

3. Here Is a Simple Table

4.

5. function OutputTableRow() {

6. print '

';

7. }

8. OutputTableRow();

9. OutputTableRow();

10. OutputTableRow();

11. ?>

12.

 One Two

OutputTableRow()

function definition.

Three consecutive calls

to the OutputTableRow()

function

TIPUse 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';

}

Passing Arguments to Functions
• Input variables to functions are calledarguments 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";

}

Consider the following code …

1.

2. Simple Table Function

3. Revised Simple Table

4.

5. function OutputTableRow( \$col1, \$col2 ) {

6. print "

";

7. }

• OutputTableRow( ‘Row 1 Col 1’ , ‘Row 1 Col 2’ );
• OutputTableRow( ‘Row 2 Col 1’ , ‘Row 2 Col 2’ );
• OutputTableRow( ‘Row 3 Col 1’ , ‘Row 3 Col 2’ );
• OutputTableRow( ‘Row 4 Col 1’ , ‘Row 4 Col 2’ );

12. ?>

13.

 \$col1 \$col2

OutputTableRow()

Function definition.

Four calls to

OuputTableRow()

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.

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 {

7. return(\$num2);

8. }

9. }

What is output if called as follows:

\$largest = Simple_calc(15, -22);

Return \$num1 when it is the larger value.

Return \$num2 when it is the larger value.

Consider an application that …

Main form element:

Starting Value:

Ending Value:

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

The Source Code

1.

3. Percentage Calculator

4.

7. return(\$per);

8. }

9. \$start = \$_POST[“start”]; \$end = \$_POST[“end”];

10. print "

11. print "

12. if (is_numeric(\$start) && is_numeric(\$end) ) {

13. if (\$start != 0) {

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. ?>

Calculate the percentage

change from the starting

value to the ending value.

The call to Calc_perc()

returns the percentage

change into \$per.

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:

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.

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.

Consider the following example

1.

2. Welcome to Harry’s Hardware Heaven!

3.
We sell it all for you!

4.

5. \$time = date('H:i');

8. return(\$per);

9. }

10. ?>

The script will output

these lines when the

file is included.

The value of \$time will be set

when the file is included.

This function will

be available for

use when the file

is included.

• If the previous script is placed into a filecalled header.php …

1. Hardware Heaven

2.

5. \$sell = 10.00;

6. print "
It is \$time.";

7. print "We have hammers on special for \\$\$sell!";

9. print "
Our markup is only \$markup%!!";

10. ?>

11.

Calc_perc() is defined in

More Typical Use ofExternal 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:

Even More Practical Example
• Check out the following linkhttp://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 …
• Include it everywhere needed.
• E.g.,

Indellible Technologies

 height="102">

 href="requestinfo.html">Request Information | href="preregister.html">Pre-register |

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
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 "Contact someone to get the passwd";

}

?>

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’] ) {