460 likes | 628 Views
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.
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> <head> <title>Survey Form</title> </head> <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
More information on the print() Function • 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.
More About 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 1. <html> <head><title> Our Shop </title> </head> 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 and add 10. 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
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
Writing Your Own Functions • 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> 2. <head><title> Simple Table Function </title> </head> <body> 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> 2. <head><title> Simple Table Function </title> </head> <body> 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> 2. <head><title> Your Percentage Calculation </title></head><body> 3. <font color="blue" size=4> Percentage Calculator </font> 4. <?php 5. function Calc_perc($buy, $sell) { 6. $per = (($sell - $buy) / $buy) *100; 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: require ("header.php"); 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'); 6. function Calc_perc($buy, $sell) { 7. $per = (($sell - $buy ) / $buy) * 100; 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.
header.php • If the previous script is placed into a filecalled header.php … 1.<html><head><title> Hardware Heaven </title></head> <body> 2. <?php 3. include("header.php"); 4. $buy = 2.50; 5. $sell = 10.00; 6. print "<br>It is $time."; 7. print "We have hammers on special for \$$sell!"; 8. $markup = Calc_perc($buy, $sell); 9. print "<br>Our markup is only $markup%!!"; 10. ?> 11. </body></html> Include the file header.php Calc_perc() is defined in header.php
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 … • Separate the header info into a different file (Say header.php.) • Include it everywhere needed. • E.g., <include “header.php”> <html> <head> <title>Indellible Technologies</title> </head> <body text="#000000" bgcolor="#ffffff" link="#000099" vlink="#990099" alink="#000099"> <?php include "header.php" ?>
Here is contents of header.php <table cellpadding="0" cellspacing="0" border="0" width="100%"> <tbody> <tr> <td valign="top"> <img src="INdelliblecolor3.gif" alt="" width="792" height="102"> <br> </td> </tr> </tbody> </table> <table cellpadding="0" cellspacing="0" border="0" width="792"> <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> | <a href="comments.html">Testimonials</a><br> </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 "Hit the road jack you entered password=$passwd<br>"; 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’] ) {