Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

42
Creativity and Computation Lab: Module 2 Week 2: Intro to PHP

Transcript of Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Page 1: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Creativity and Computation

Lab: Module 2

Week 2: Intro to PHP

Page 2: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Today we will cover several aspects of the middleware

package PHP (PHP Hypertext Preprocessor):

• What PHP can do by itself• Accessing MySQL with PHP• Scripting with PHP to create a

database driven website

Page 3: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

We probably won’t get through everything in this

presentation today. Just relax, dive in, and absorb

as much as you can.

We’ll continue next week.

Page 4: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

If you need more info, or just help, a great place to go is the main PHP site:

www.php.net

Page 5: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

That link and others are now up on the CC Lab Site:

a.parsons.edu/~sven/cc/lab

along with your homework assignments and a bunch of PHP scripts you can cut and

paste from.

Page 6: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

First, some basic stuff about PHP:

• It’s a scripting language, just like HTML or Javascript.

• It’s saved as text, just like HTML• It’s open-source, so there is lots of

code available online• There are also many tutorials

online

Page 7: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

The main thing PHP is used for is “middleware”; to connect the

web to the database:

Page 8: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Today, instead of working directly from the command line as we did with MySQL, the PHP

files will be treated like web files and stored in your public_html directory. We will run and test

them through the normal Apache HTTP server (web).

Page 9: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

The most important thing is that you try things as we go

along. They won’t always work, but keep trying.

You will become more comfortable with coding the

more you do it.

Page 10: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Let’s dive right in. Go to the CC Lab site and get the basic PHP script (blank.php). Go to the

<a.parsons.edu> command line and create a folder in your public_html folder called

“cclab”. Store “blank.php” there and run it from a browser.

Page 11: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

When you run the file, it is blank. But notice there is PHP code in the file:

<?php?>

Page 12: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Types of comments:

in HTML:<!-- blah -->

in PHP:# blah// blah/* blah spanning two lines in PHP */

Page 13: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Why do we comment?<!-- Start of PHP -->BlahBlahBlah<!-- End of PHP -->

(to remind us of what we did)

Page 14: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

What are variables?

Variables are holders used to temporarily store values.

They exist in all prograsmming

languages.You used them in Pbasic; you will use them in

PHP.

Page 15: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Variable rules in PHP:

• Variables start with “$”• Character after “$” cannot be

number• Variable names are case

sensitive• Variables can be assigned

values using “=“ sign

Page 16: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Built-in variables in PHP:<?php

// Echo the script name.echo "You are running the file <b>$PHP_SELF</b>.<br /><br />\n";

// Echo the user's information.echo 'You are viewing this page using:<br /><b>', $HTTP_USER_AGENT, '</b><br />from the IP address ', $REMOTE_ADDR;?>

Page 17: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Strings in PHP

• $first_name = ‘Harry’• Use echo() or print() to print

out:echo “Hello, $first_name”

orecho $first_name

Page 18: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

String example:<?php// Create the variables.$first_name = ’Harry';$last_name = ’Smith';$book = ’Grand Fool of the Night';

// Print the values.echo "The book <i>$book</i> was written by $first_name $last_name.";?>

Page 19: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Concatenating strings:

In PHP, the “.” is used to concatenate strings.

echo ‘Design and ‘.’Technology’;

Will print “Design and Technology”

What will these series of commands print?

$firstname = ‘Harry’; $lastname =‘Smith’;

$fullname = $firstname.$lastname;

echo $fullname;

What about $firsthame .= “Smith”;

echo $firstname;

Page 20: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

In PHP variables aren’t specific to a string or a number:

<?php$a = "Hello World!";$b = 4;$c = 4.5;?>

The variable $a is a STRINGThe variable $b is a INTEGERThe variable $c is FLOAT

Page 21: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Single vs. double quotation marks:Use ‘single quotes’ to enclose simple strings:<?phpecho 'this is a simple string';

echo 'You can also have embedded newlines instrings this way as it isokay to do';

// Outputs: Arnold once said: "I'll be back"echo 'Arnold once said: "I\'ll be back"';

// Outputs: You deleted C:\*.*?echo 'You deleted C:\\*.*?';

// Outputs: You deleted C:\*.*?echo 'You deleted C:\*.*?';

// Outputs: This will not expand: \n a newlineecho 'This will not expand: \n a newline';

// Outputs: Variables do not $expand $eitherecho 'Variables do not $expand $either';?>

Page 22: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Double quotations:

If the string is enclosed in double-quotes ("), PHP understands more escape sequences for special characters:Escaped characterssequence meaning\n linefeed (LF or 0x0A (10) in ASCII)\r carriage return (CR or 0x0D (13) in ASCII)\t horizontal tab (HT or 0x09 (9) in ASCII)\\ backslash\$ dollar sign\" double-quote

Page 23: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

But the most important feature of double-quoted strings is the fact that variable names will be expanded:

<?php$beer = 'Heineken';echo "$beer's taste is great"; // works, "'" is an invalid character for varnames. Outputs: Heineken’s taste is greatecho "He drank some $beers"; // won't work, 's' is a valid character for varnames. Outputs: He drank some $beersecho "He drank some ${beer}s"; // worksecho "He drank some {$beer}s"; // works?> //Outputs: He drank some Heinekens

Page 24: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Conditionals and Operators

Arithmetic OperatorsExample Name Result• -$a Negation Opposite of $a.• $a + $b Addition Sum of $a and $b.• $a - $b Subtraction Difference of $a and $b.• $a * $b Multiplication Product of $a and $b.• $a / $b Division Quotient of $a and $b.• $a % $b Modulus Remainder of $a divided by

$b.

Page 25: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Comparison Operators:

Example Name Result• $a == $b Equal TRUE if $a is equal to $b.• $a === $b Identical TRUE if $a is equal to $b, and they are of the

same type. (introduced in PHP 4)• $a != $b Not equal TRUE if $a is not equal to $b.• $a <> $b Not equal TRUE if $a is not equal to $b.• $a !== $b Not identical TRUE if $a is not equal to $b, or they

are not of the same type. (introduced in PHP 4)• $a < $b Less than TRUE if $a is strictly less than $b.• $a > $b Greater than TRUE if $a is strictly greater than $b.• $a <= $b Less than or TRUE if $a is less than

equal to or equal to $b.• $a >= $b Greater than TRUE if $a is or equal to

greater than or equal to $b.

Page 26: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

HTML forms with PHP:Here’s a sample HTML form using PHP

<html><body><h4>Tizag Art Supply Order Form</h4><form action="process.php" method="post"><select name="item"><option>Paint</option><option>Brushes</option><option>Erasers</option></select>Quantity: <input name="quantity" type="text" /><input type="submit" /></form></body></html>

<--- The line that tells which php file to target. (process.php)

Page 27: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

The PHP File (of the form):

Here’s a sample PHP form which processes the data sent from the HTML form:

<html><body><?php$quantity = $_POST['quantity'];$item = $_POST['item'];echo "You ordered ". $quantity . " " . $item .

".<br />";echo "Thank you for ordering from Tizag Art

Supplies!";?></body></html>

Page 28: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

The Output

Process.php would display this to the screen:

You ordered 6 brushes.

Thank you for ordering from Tizag Art Supplies!

Page 29: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Arrays

An array is a data structure that can hold store many items. Think of it as a

storage bin with labeled compartments.

This array is called “Fruit”

0 1 2 3

apple orange pear cherry

First array entries always start with 0!

Page 30: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

How we describe arrays in code:

So we can say that Bin 0 of Fruit is apple, OR (in code):

Fruit[0] = appleFruit[1] = orangeFruit[2] = pear

“Fruit”

0 1 2 3

apple orange pear cherry

Page 31: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

(more) Arrays:

In PHP, we make Arrays like this:

$fruit = array(apple,orange,pear,cherry);

This creates the array.Now we can access the info inside the array:echo $fruit[0];

This output: apple

Page 32: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Associative Arrays use a key system:$mdays = array (

"January" => 31,"February" => 28,"March" => 31,"April" => 30,"May" => 31,"June" => 30,"July" => 31,"August" => 31,"September" => 30,"October" => 31,"November" => 30,"December" => 31);

If $mname = January, what does $mdays[$mname] = ?

Example:

echo $mdays[June];

Will output: 30

Page 33: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Now for some fancy stuff:Multidimensional Arrays

$fruits = array ( "fruits" => array("a" => "orange", "b" => "banana", "c" => "apple"), "numbers" => array(1, 2, 3, 4, 5, 6), "holes" => array("first", 5 => "second", "third"));

Lets draw out what this would look like (on the white board);

Page 34: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

How to sort arrays:

Simple arrays:sort($Fruit);Will sort alphabetically, or in asc order, if all the entries are numbers:

Fruit[0] = appleFruit[1] = cherryFruit [2] = orangeFruit[3] = pear

Associative arrays:asort($mdays);This will sort the entries in the same way, but keep the corresponding keys

Page 35: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

For and while loops

Sometimes we want to go through a lot of information quickly. Lets say we want to print out all of the elements in our fruit array to see which fruits are available.

We can do it this way:

echo Fruit[0];

echo Fruit[1];

echo Fruit[2];

echo Fruit[3];

This would print out all of our fruits, but what if we have 1000s of entries? That would be a pain, no?

Page 36: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

We use loops to make this easier..

Let’s say the Fruit array now has 2345 entries…

While loop

$i = 0; <---intializerwhile($i < 2345){ <---condition must be trueecho Fruit[$i]; $i++; <---incremetor}

This would print all entries out one by one! All loops have 3 elements: Intializer, Condition, and Incremetor.

Page 37: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

We can simplify even further to make a

FOR loop:

for($i = 0; $i < 2345; $i++) { echo Fruit[$i]; }

Notice this one has all three elements (Initializer, Condition, and Incrementor) all in the first line. It works the same way as a while loop, but is often neater and easier to read.

Page 38: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Connecting to the database:<?php // This file contains the database access information. This file also establishes a connection to MySQL and selects the database.

// Set the database access information as constants.DEFINE ('DB_USER', 'username');DEFINE ('DB_PASSWORD', 'password');DEFINE ('DB_HOST', 'localhost');DEFINE ('DB_NAME', 'sitename');

// Make the connnection and then select the database.$dbc = @mysql_connect (DB_HOST, DB_USER, DB_PASSWORD) OR die ('Could not connect to MySQL: ' . mysql_error() );mysql_select_db (DB_NAME) OR die ('Could not select the database: ' . mysql_error() );?>

Page 39: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Simple queries to the database First, formulate the question:SELECT$query="SELECT * from $tableName";

INSERT$query="INSERT INTO $tableName (color, speed) values ('$color', '$speed')";

DELETE$query="DELETE FROM $tableName WHERE id = '$id'";

UPDATE$query="UPDATE $tableName SET start_x ='$start_x',start_y = '$start_y',color = '$color',speed = '$speed' WHERE id = '$id'";

Page 40: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

It is very important that we ask if there were any errors in our query:

$result =mysql_query($query)OR die("error 3 - query failed");

If(!$result){ //if $result is NOT TRUEEcho “SOMETHING’S WRONG!”;

}

Page 41: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Do something with the results (for SELECT):// check that there are results$num_rows=mysql_affected_rows($link);// output contentif($num_rows>0){ // get info while ($myrow = mysql_fetch_array($result)) { $id=$myrow["id"]; $name=$myrow["name"]; $description=$myrow["description"]; $price=$myrow["price"]; print("$name $price $description"); }}else{ // tell user there's no info print("sorry, no records");}

Page 42: Creativity and Computation Lab: Module 2 Week 2: Intro to PHP.

Your assignment (due next week):

Write a PHP script that accesses information from a database using a while or for loop, puts the information into an array, and outputs it to a web page.

You must make the information and the page formatting somehow personal, so it is clear you did it yourself.

Store the script at:

a.parsons.edu/~user/cclab/insane.php