Powering Scripts with Functions - PowerPoint PPT Presentation

1 / 46

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.

Powering Scripts with Functions

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

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

<html>

<title>Survey Form</title>

<body>

<h1>Class Survey</h1>

<FORM METHOD="POST" ACTION="newaverage.php">

<br>Pick A Number: <BR> <input type=text name=num1>

<br>Pick A Number 2: <BR><input type=text name=num2>

<br>Pick A Number 3: <BR><input type=text name=num3>

<br><input type="submit" value="Submit">

<input type="reset" value="Erase">

</form>

</BODY>

</HTML>

PHP Code

• <html> <head> <title> Guess the Dice </title>

• <body>

• <Font size=5 color=black> Your Averages Are:</font>

• <form action="guessdice2.php" method=post>

• <?php

• \$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 "<font size=4 color=blue>";

• print "num1 = \$num1 ";

• print "num2 = \$num2 ";

• print "num3 = \$num3 ";

• print "</font> <br> <font size=4 color=red>";

• print "<br>aver = \$aver";

• print "</font> ";

• ?>

• <br>

• </form> </body> </html>

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:

• <input type="radio" name=”guess" value=”1"> 1

• <input type="radio" name=”guess" value=”2"> 2

• <input type="radio" name=”guess" value=”3"> 3

• <input type="radio" name=”guess" value=”4"> 4

• <input type="radio" name=”guess" value=”5"> 5

• <input type="radio" name=”guess" value=”5"> 6

• http://condor.depaul.edu/~dlash/extra/Webpage/examples/guessdice.php

Consider the following ...

<head> <title> Guess the Dice </title>

<body>

<?php

\$guess = \$_POST["guess"];

if ( \$guess >= 1 && \$guess <=6 ) {

\$numb = rand() % 6 + 1;

print "numb=\$numb <br>";

\$dice="dice\$numb.gif";

print "The Random Dice Generated Is ...";

print "<img src=\$dice>";

print " <br> Your Dice=\$dice <br>";

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

print "<br><font size=4 color=blue> You got it right ";

print "<br> <font size=4 color=blue> Your Guess is \$guess ";

} else {

print "<br> <font size=4 color=red> You got it WRONG ? ";

print "<br><font size=4 color=red> Your Guess is \$guess ";

}

} else {

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

}

?>

</form> </body> </html>

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 '<font color="blue">';

• This above is easier to understand and actually runs slightly faster than using all double quotation marks and the backslash (\) character :

• print "<font color=\"blue\">";

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.

Selected character formats for date()

• 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

2. <body> <font size=4 color="blue">

3. <?php

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

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

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 "<br> There are \$daysleft sales days left";

12.} elseif (\$month == 01 && \$year == 2002) {

13. if (\$dayofyear <= 10) {

14. \$daysleft = (10 - \$dayofyear);

15. print "<br> There are \$daysleft sales days left";

16. } else {

19. print "<br>Sorry, our sale is over.";

20. }

21. } else {

22. print "<br>Sorry, our sale is over.";

23. }

24. print "<br>Our Sale Ends January 10, 2002";

25. ?> </body></html>

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 '<tr><td>One</td><td>Two</td></tr>';

}

• You can run the function by including …

OutputTableRow();

As a full example …

1. <html>

3. <font color="blue" size="4"> Here Is a Simple Table <table border=1>

4. <?php

5. function OutputTableRow() {

6. print '<tr><td>One</td><td>Two</td></tr>';

7. }

8. OutputTableRow();

9. OutputTableRow();

10. OutputTableRow();

11. ?>

12. </table></body></html>

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 '<tr><td>One</td><td>Two</td></tr>';

}

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 "<tr><td>\$col1</td><td>\$col2</td></tr>";

}

Consider the following code …

1. <html>

3. <font color="blue" size=4> Revised Simple Table <table border=1>

4. <?php

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

6. print "<tr><td>\$col1</td><td>\$col2</td></tr>";

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. </table></body></html>

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: <input type="text" size="15” maxlength="20" name="start">

Ending Value: <input type="text" size="15 maxlength="20" name="end">

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: <input type="text" size="15”

maxlength="20" name="start">

Ending Value: <input type="text" size="15”

maxlength="20" name="end">

http://webwizard.awl.com/~phppgm/C4/driveperc.html

The Source Code

1. <html>

3. <font color="blue" size=4> Percentage Calculator </font>

4. <?php

7. return(\$per);

8. }

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

10. print "<br>Your starting value was \$start.";

11. print "<br>Your ending value was \$end.";

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

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

14. \$per = Calc_perc(\$start, \$end);

15. print "<br> Your percentage change was \$per %.";

16. } else { print "<br> Error! Starting values cannot be zero "; }

17. } else {

18. print "<br> Error! You must have valid numbers for start and end ";

19. }

20. ?> </body></html>

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. <font size=4 color="blue">

2. Welcome to Harry’s Hardware Heaven!

3. </font><br> We sell it all for you!<br>

4. <?php

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 …

2. <?php

5. \$sell = 10.00;

6. print "<br>It is \$time.";

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

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

10. ?>

11. </body></html>

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.

<hr>

Hardware Harry's is located in beautiful downtown Hardwareville.

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

<br>Call 476-123-4325. Just ask for Harry.

</body></html>

• Can include using:

<?php include("footer.php"); ?>

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.

<html>

<title>Indellible Technologies</title>

<tbody>

<tr>

<td valign="top"> <img src="INdelliblecolor3.gif" alt="" width="792"

height="102">

<br>

</td>

</tr>

</tbody>

</table>

<tbody>

<tr>

<td valign="bottom" bgcolor="#33ffff" align="center"><a

href="requestinfo.html">Request Information</a> | <a

href="preregister.html">Pre-register</a> |

<a href="schedule.html">CourseCatalog</a> |

</td>

</tr>

</tbody>

</table>

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

<<html> <head> <title> Receiving Script </title> <body>

<?php

\$passwd= \$_POST["pass"];

\$fname= \$_POST["fname"];

if (\$passwd == "password" ) {

print "Thank you \$fname welcome <br>";

print "Here is my site's content";

} else {

print "Contact someone to get the passwd";

}

?>

</body> </html>

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