course slides -- powerpoint
DESCRIPTION
TRANSCRIPT
![Page 1: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/1.jpg)
Introduction to Web Programming with PHP Scripting Language for
Applications in Agricultural Climatology
Title
![Page 2: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/2.jpg)
Course Outline
• Background & Introduction• Resources Setup• Input• Comment & Output• Data Type• Variable Scope• Control Flow• Function• File• Input (combo box)• Project Exercises
![Page 3: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/3.jpg)
BackgroundWhy web programming Broader impact
Increasing use of internet Exclusivity
Restriction & monitoring ability Increasing interests in dynamic web, ie:
Simple conversion (Rothamsted Research, England)
Water balance (University of Georgia)
Why PHP? Efficient delivery
No compiler (developer) No installation (user)
Potential link to database (ie. Mysql)
Open source & flexible syntaxSource: International Telecommunication Union (ITU)http://www.itu.int/ITU-D/ict/statistics/maps.html
![Page 4: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/4.jpg)
About PHPPhp• Recursive acronym: Hypertext Preprocessor• Open source scripting language suited for web application• Server side execution rather than client-side (ie. JavaScript)• Requirement: Server (web host) supports PHP• Characteristic: somewhat flexible syntax
ServerClient
javascript
browser
php
web-host
![Page 5: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/5.jpg)
Server & File TransferExample of Php-enabled server• HPRCC - SSH approach• AgilityHoster - FTP approach
File transfer methods• SSH
– SSH - Secure Shelln, a network protocol that allows data to be exchanged using a secure channel between two networked devices
– SSH is used primarily on Linux and Unix based systems to access shell accounts.
– SSH is a replacement for telnet and other insecure remote shells
• FTP– FTP – file transfer protocol– FTP is built on a client-server architecture
![Page 6: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/6.jpg)
ResourcesFor this course, you will also set up resources for writing
php codes• File transfer:WSFTP
• Text editor: Texpad
• Download the resources
Setting up WSFTP– Enter new profile name, ie: php training agilityhoster– Enter host name/address: customizedname.agilityhoster.com– UserID: -- should be automatically filled– Password: enter the custom password you set up previously– The Ftp is ready to do file transfer– Create a folder in your hardrive to store all your web/php files
![Page 7: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/7.jpg)
Basic syntax & first exerciseBasic syntax• start and end processing instruction
• Semicollon (;) after each statement, case insensitive!
First exercise (hello world!)
<?php?>
<html> <head> <title>PHP Test</title> </head> <body> <?php echo "<p>Hello World</p>"; ?> </body></html>
http://www.php.net/manual
![Page 8: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/8.jpg)
Input (basic)Required HTML form
Functions:• isset - Determines if a variable is set and is not NULL. • $_POST['variable'] is an associative array of variables passed to the
current script via the HTTP POST method.• $_POST is a superglobal contains information pertinent to any
parameters passed using the POST method.– POST is a preferred option (the other option is GET) as it can handle considerably
more data– A POST request includes a message body in addition to a URL used to specify
information for the action being performed. – Example of URL encoding is as follow:
Name: Jonathan Doe
Age: 23
Formula: a + b == 13%!
Encoded as:
Name=Jonathan+Doe&Age=23&Formula=a+%2B+b+%3D%3D+13%25%21
http://www.php.net/manual
![Page 9: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/9.jpg)
Input (syntax)Syntax (example):
View this example
<html> <head> <title>PHP Test</title> </head> <body> <?php if (isset($_POST['submit'])) { echo "Hi, " . $_POST['name']. "! <br/>"; } ?> <form action="formexample.php" method ="post"> <p> Name: <br/> <input type = "text" name="name" size ="20" maxlength ="40" value="" /> </p> <input type="submit" name = "submit" value"Go!" /> </form> </body></html>
http://www.php.net/manual
![Page 10: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/10.jpg)
Comments & OutputComments
Output
Print– displaying output to screen
– return boolean
Single line// comment
Multi line /* comment comment */
<?php print ("test print"); print "test print";?>
http://www.php.net/manual
![Page 11: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/11.jpg)
Output (cont'd)Output
echo– displaying output to screen
– return void
– identical to print• theoretically echo would be faster (efficient) as it returns nothing, however, the
difference is impossible to notice. The decision to use is rather stylistic concern.
printf()– displaying formatted output to screen
– example: printf("01.2f", 43.2); // 43.20
– for description of format variables, go to: http://us.php.net/manual/en/function.sprintf.php
sprintf() – identical to printf(), but the output is assigned to a string variable
– example:
$var = sprintf("%01.2f",43.2);echo "$var"; //43.20 http://www.php.net/manual
![Page 12: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/12.jpg)
Data typesBoolean (true or false)$variable = false; // $variable is false
$variable = 0; // $variable is false
$variable = true; // $variable is true
$variable = 1; // $variable is true
$variable = 5; // $variable is true
Any non-zero value – true
IntegerWhole number, no fractional parts
Maximum supported integer size is typicalla 2^31
FloatFloating-point number -- contains fractional parts.
StringSequence of character treated as a contiguous group
http://www.php.net/manual
![Page 13: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/13.jpg)
Data types (cont'd)ArraySeries of similar items.
Index collection of data values.
Each index (key) references to a corresponding value.
Example:
member[0] = "John";
member[1] = "Marry";
member[2] = "Suzzie";
http://www.php.net/manual
![Page 14: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/14.jpg)
Data types (cont'd)ObjectMust be explicitly declared:
Class -- attribute, function
Class definition serves as template and cannot itself be manipulated.
Instead, objects are created based on this template -- use 'new' keyword.
soybean object is created and can then it attribute can be set by making us of the method setGroup()
Class plant { private $group; function setGroup($status){ $this->group = $status; } }$soybean = new plant;
$soybean->setGroup("dicots");
http://www.php.net/manual
![Page 15: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/15.jpg)
Type casting
Converting one type to the other
example:$variable1 = 13;$variable2 = (double) $variable1; // 13.0
$variable1 = 4.2;$variable2 = (int) $variable1; // 4 (truncated, not round)
http://www.php.net/manual
![Page 16: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/16.jpg)
Variables ScopeLocal VariablesA variable declared in a function is considered local.
It can only be referenced in that function.
When you exit the function in which a local variable has been declared, that variable and its corresponding value are destroyed.
View this example
$x = 2;function assignx(){ $x = 0; echo "x inside function is $x <br>";}assignx();echo "x outside function is $x <br>";
http://www.php.net/manual
![Page 17: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/17.jpg)
Variables Scope (cont'd)Global VariablesGlobal variables can be accessed in any part of the program
To modify global variabl, it must be explicitly declared to be a global in the function in which itis to be modified.
View this example
$x = 2;function assignx(){ Global $x; $x = 0; echo "x inside function is $x <br>";}assignx();echo "x outside function is $x <br>";
http://www.php.net/manual
![Page 18: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/18.jpg)
Variables Scope (cont'd)Static VariablesStatic variable does not lose its value when the function exists.
View example without static
View example with static
function keep_track(){ Static $count = 0; $count++; echo "$count <br>";}
keep_track();keep_track();keep_track();
http://www.php.net/manual
![Page 19: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/19.jpg)
Variables Scope (cont'd)Superglobal VariablesPredefined variables
View example
HTTP_USER_AGENT
provide user's browser information
For more examples of similar superglobal variables, go to:
http://us3.php.net/manual/en/reserved.variables.server.php
echo "Your browser is: $_SERVER['HTTP_USER_AGENT']";
http://www.php.net/manual
![Page 20: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/20.jpg)
Operators
For list of operators in php, go to:
http://us3.php.net/manual/en/language.operators.php
The list includes:
arithmetic operators (*, /, +, -)
string operator, ie concatenate with "."
logical operators (&&, ||)
equality operators (==, !=)
http://www.php.net/manual
![Page 21: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/21.jpg)
Control flowConditionalControlling the flow of execution depending on the specified condition
defined by expression
Exercise 1: if statement – thermal time calculation
Exercise file
View output
if (expression){ statement;}
if (expression){ statement;}else { statement;}
if (expression){ statement;}else if (expression){ statement;}else{ statement;}
http://www.php.net/manual
![Page 22: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/22.jpg)
Control flow (cont'd)ConditionalUse as variant of if-else combination when need to compare with large number of values
switch($catagory){ case "1": statement1; break; case "2": statement2; break; case "3": statement3; break;case "4": statement4; break;}
http://www.php.net/manual
![Page 23: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/23.jpg)
Control flow (cont'd)While loopSpecifies a condition that must be met before execution is terminated
View example
*We will be using 'while loop' in the final project exercise, to read weather data
while (expression){ statements;}
//Example: incremental value
global $i;$i = 0;while ($i <= 5){ echo "$i <br>"; $i++;}
http://www.php.net/manual
![Page 24: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/24.jpg)
Control flow (cont'd)For loopStatement which allows code to be repeatedly executed
View example
*We will be using 'for loop' in the final project exercise, to perform calculation of cumulative thermal time
for (expression1; expression2; expression3){ statements;}
//Example: Incremental values
global $i;for ($i=0; $i<=5; $i++){ echo "$i <br>";}
http://www.php.net/manual
![Page 25: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/25.jpg)
FunctionsConsist of: (1) Function definition, (2) Function implementation
View example function geo_distance_exercise view output
function definition------------------------function function_name (parameters){ statements;}
//function definition: converting degrees to radiansfunction rad($deg_in){ $result = $deg_in *(pi()/180); return $result;}
//function implementation: converting degrees to radians$radvalue = rad(30.0);echo "radvalue= $radvalue <br>"; //radvalue= 0.523598775598
function implementation---------------------------------//value-returning function:$value = function_name(parameters);
//non-returning function:function_name(parameters);
http://www.php.net/manual
![Page 26: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/26.jpg)
ArraysSeries of similar items, accessible via index
Index can be integer or string
Array size is accessible by using 'count()' function
//Basic syntax to access array's item$array_name[index] = array value
Exercise 2: array Exercise fileView output
http://www.php.net/manual
![Page 27: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/27.jpg)
FileServerClient
php codes
files
php codes
files
File Reading & Writing
Steps:
(1) Connecting file handler to a file
(2) Capturing file content
(3) Closing file (ending file handler connection to a file)
http://www.php.net/manual
![Page 28: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/28.jpg)
File ReadingFile Reading
//assigning file handler to a file$file_handler = fopen("filename","mode");
//capturing file content$var = fgetcsv($file_handler,1000,",");
//closing filefclose($file_handler);
1000 - maximum char per line
mode:r = read onlyw = write onlyrt = read only, text file
more on modes:http://us3.php.net/manual/en/function.fopen.php
http://www.php.net/manual
![Page 29: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/29.jpg)
File Reading (cont'd)File Reading ExerciseExercise file
View output
Create "input_files" directory in the ftp folder
Create date.txt file with the following content:
1020303045
http://www.php.net/manual
![Page 30: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/30.jpg)
File WritingFile Writing
File Writing Exercise
Exercise file
View output
Create "output_files" directory in the ftp folder
//assigning file handler to a file$file_handler = fopen("filename","mode");
//writing filefwrite($filehandler,"$variable_to_write");
//closing filefclose($file_handler);
mode:w = write only, wt = write only, text file, a = append
more on modes:http://us3.php.net/manual/en/function.fopen.php
http://www.php.net/manual
![Page 31: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/31.jpg)
File Reading – Multiple ColumnsMultiple columns of data are common, ie: weather data
File Reading Example – Multi Columns
View code
View output
Trick:Create an intermediate 'clean' file (two reading steps)The 'clean' file has a consistent delimited, ie: one spaceUser ereg_replace() function to clean extra white spaces
$originalvar = "10 20";$cleanvar = ereg_replace(' +', ' ', $originalvar);echo "$cleanvar"; // 10 20
10 2020 4030 6030 6045 90
File to read: data2.txt
http://www.php.net/manual
![Page 32: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/32.jpg)
Combo boxExample
View this example
View code
Month:<select name="month">
<option value="1">Jan</option><option value="2">Feb</option><option value="3">Mar</option><option value="4">Apr</option><option value="5" Selected>May</option><option value="6">Jun</option><option value="7">Jul</option><option value="8">Aug</option><option value="9">Sep</option><option value="10">Oct</option><option value="11">Nov</option><option value="12">Dec</option>
</select>
http://www.php.net/manual
![Page 33: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/33.jpg)
Project ExerciseGoal
Reading weather file from long-term weather data from NASA
Eventually calculate cumulative thermal time (GDU) for a user-given starting and ending dates
Preparation
Download new weather data from NASA site *,
or use the existing weather data for Lincoln, NE
* Required lat & long input
Online resource for finding lat long of a location: itouchmap
Save weather file as text file under your input_files folder
http://www.php.net/manual
![Page 34: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/34.jpg)
Project Exercise 1Objective
Reading weather file (NASA-DSSAT format) Output tmax, tmin, and tmean for the first 10 days
Topics covered
- Form
- Combo box
- File reading
- For loop
- While loop
- If statement
- String manipulation (ereg_replace)
- Functions (date->doy conversion)
http://www.php.net/manual
![Page 35: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/35.jpg)
Project Exercise 1 (cont'd)
View output
weather data: Lincoln, NE lat: 40.82, long: -96.65, 1997-2008
To skip a header line, you can assign it to a dummy variable $header = fgets($file_handler);
Additional cleaning step would be needed if there is extra whie space to the left of the first column of the data. You can use the ltrim approach:Example: $array_output[$i] = ltrim($array_output[$i]);
The goal is to read tmax and tmin. However, the data contains other weather variables (ie. solar radiation, rh, ect). You can assign dummy variables for the extra variables, or it doesn't hurt to assign each to uniqe variable (in case you would need it for something else)
Particular important variable is tmean, not in the data, it's calculated as:Tmean = 0.5 * (Tmax + Tmin)
http://www.php.net/manual
![Page 36: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/36.jpg)
Project Exercise 2Objective
Reading weather file (NASA-DSSAT format) Output tmax, tmin, and tmean for the first 10 days from a defined
starting date
Topics covered
- Form
- Combo box
- File reading
- For loop
- While loop
- If statement
- String manipulation (ereg_replace)
- Functions (date->doy conversion)
http://www.php.net/manual
![Page 37: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/37.jpg)
Project Exercise 2 (cont'd)
View output
Table of day of year vs date
Use practically all the component from the previous exercise
For day selection combo box, you can use for loop, ie from i=1 to i=31View Example
The conversion from Date to DOY is needed because the user input is date while the weather data is index by year and DOY.View Date to DOY function
Use if statement to identify starting point (year & doy) to start displaying the output, within a for loop going thru the whole index of data.ie:for ($i=0; $i<=$array_size; $i++){ if (($year_array[$i] == $yearinput) && ($doy_array[$i] >= $doyinput) && ($doy_array[$i] < $doyval+9)) { //put output statement here }}
Use $_POST['var'] to capture form inputs$yearval = $_POST['year'];$monthval = $_POST['month'];$dayval = $_POST['day'];
http://www.php.net/manual
![Page 38: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/38.jpg)
Project Exercise 3Objective
Reading weather file (NASA-DSSAT format) Output tmax, tmin, and tmean, thermal time, and cumulative thermal
time for a given range between starting and ending dates
Topics covered
- Form
- Combo box
- File reading
- For loop
- While loop
- If statement
- String manipulation (ereg_replace)
- Functions (date->doy conversion)
http://www.php.net/manual
![Page 39: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/39.jpg)
Project Exercise 3 (cont'd)Everything the same as the previous exercise, except:(1) add inputs in the forms also for the ending date (2) add text inputs for 'tbase' and 'topt'
tbase = temperature below which plant growth/development rate equals zerotopt = temperature at which plant growth/development rate is maximal and thereafter it is to continue at such maximal rate
Modify if statement to identify both starting and ending point (year & doy) to start displaying the output & calculating thermal time & it's cumulative value
ie:if (($year_array[$i] >= $yearval) && ($doy_array[$i] >= $doyval) && ($year_array[$i] <=
$yearendval) && ($doy_array[$i] <= $doyendval))
Use the previous thermal time algorithm, but should applied as a function (see example)
To calculate cumulative thermal time, use the following accumulation algorithm:$cvalue = $cvalue + $value_array[$i];
To obtain final cumulative thermal time value, you can use max function:$CTTfinal = max($cval_array));
View output
http://www.php.net/manual
![Page 40: course slides -- powerpoint](https://reader034.vdocuments.mx/reader034/viewer/2022042613/546b3082af795995648b4789/html5/thumbnails/40.jpg)
Misc. DefinitionsUniform Resource Locators (URLs)• URLs provide the hypertext links between one document and another.
It specifies where an identified resource is available and the mechanism for retrieving it.
Hypertext Markup Language (HTML)• WWW documents contain a mixture of directives (markup), and text or
graphics. It provides a means to describe the structure of text-based information in a document—by denoting certain text as links, headings, paragraphs, lists, et.
• The World Wide Web is composed primarily of HTML documents transmitted from Web servers to Web browsers using the Hypertext Transfer Protocol (HTTP).
http://www.php.net/manual