creativity and computation lab: module 2 week 2: intro to php

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

Upload: ashlee-barker

Post on 26-Dec-2015

223 views

Category:

Documents


1 download

TRANSCRIPT

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