1 / 46

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

joan-craft
Télécharger la présentation

Powering Scripts with Functions

An Image/Link below is provided (as is) to download presentation 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. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Powering Scripts with Functions David Lash Chapter 4 Using and writing your own functions

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  19. Selected character formats for date()

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

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

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

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

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

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

  26. For example … • Consider the following: function OutputTableRow() { print '<tr><td>One</td><td>Two</td></tr>'; } • You can run the function by including … OutputTableRow();

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

  28. Would have the following output …

  29. 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>'; }

  30. 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>"; }

  31. 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()

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

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

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

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

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

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

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

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

  40. Would output the following ...

  41. 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"); ?>

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

  43. 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> | &nbsp;<a href="comments.html">Testimonials</a><br> </td> </tr> </tbody> </table>

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

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

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

More Related