introduction to web programming with php scripting language for applications in agricultural...

41
Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

Upload: josephine-barnett

Post on 26-Dec-2015

224 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

Introduction to Web Programming with PHP Scripting Language for

Applications in Agricultural Climatology

Title

Page 2: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

Course Outline

• Background & Introduction• Resources Setup• Input• Comment & Output• Data Type• Variable Scope• Control Flow• Function• File• Input (combo box)• Project Exercises

Page 3: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

Server Set UpFor this course, you will set up an account with AgilityHoster.com• Go to the setup page • Follow the steps below

– Choose 'Free hosting' plan, continue, sign up, enter personal info, continue,

– Click link to login, enter username and password given in the email, enter the member page (menu on top and left with account statistic at the bottom left of the page).

– Go to WebsiteManager– Select SubDomain Manager– Enter a subdomain name: ie your personalized name (it will

take 5 minutes to get set up)– Setup ftp: go to website manager, ftp manager, enter cutsom

ftp name: ####_name, andpassword.

Page 7: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 8: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 9: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 10: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 11: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 12: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 13: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 14: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 15: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 16: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 17: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 18: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 19: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 20: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 21: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 22: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 23: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 24: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 25: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 26: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

FunctionsConsist of: (1) Function definition, (2) Function implementation

View example

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 27: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 28: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 29: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 30: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 31: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 32: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 33: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

Combo boxExample

View this example

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 34: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 35: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 36: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 37: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 38: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 39: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 40: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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 41: Introduction to Web Programming with PHP Scripting Language for Applications in Agricultural Climatology Title

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