Web Programming Step by Step, 2nd Edition

Lecture 6: PHP

Reading: 5.1–5.3

Except where otherwise noted, the contents of this document are Copyright 2012 Marty Stepp, Jessica Miller, and Victoria Kirst. All rights reserved. Any redistribution, reproduction, transmission, or storage of part or all of the contents in any form is prohibited without the author's expressed written permission.

Valid HTML5 Valid CSS

5.1: Server-Side Basics

URLs and web servers

http://server/path/file

Server-Side web programming

php jsp ruby on rails asp.net

What is PHP?

PHP logo

Lifecycle of a PHP web request

PHP server

Why PHP?

There are many other options for server-side languages: Ruby on Rails, JSP, ASP.NET, etc. Why choose PHP?

Hello, World!

The following contents could go into a file hello.php:

<?php
print "Hello, world!";
?>
Hello, world!

Viewing PHP output

PHP local output PHP server output

5.2: PHP Basic Syntax

Console output: print

print "text";
print "Hello, World!\n";
print "Escape \"chars\" are the SAME as in Java!\n";

print "You can have
line breaks in a string.";

print 'A string can use "single-quotes".  It\'s cool!';
Hello, World! Escape "chars" are the SAME as in Java! You can have line breaks in a string. A string can use "single-quotes". It's cool!

Arithmetic operators

Variables

$name = expression;
$user_name = "PinkHeartLuvr78";
$age = 16;
$drinking_age = $age + 5;
$this_class_rocks = true;

Types

Comments

# single-line comment

// single-line comment

/*
multi-line comment
*/

for loop

for (initialization; condition; update) {
	statements;
}
for ($i = 0; $i < 10; $i++) {
	print "$i squared is " . $i * $i . ".\n";
}

if/else statement

if (condition) {
	statements;
} else if (condition) {
	statements;
} else {
	statements;
}

while loop (same as Java)

while (condition) {
	statements;
}
do {
	statements;
} while (condition);

int and float types

$a = 7 / 2;               // float: 3.5
$b = (int) $a;            // int: 3
$c = round($a);           // float: 4.0
$d = "123";               // string: "123"
$e = (int) $d;            // int: 123

String type

$favorite_food = "Ethiopian";
print $favorite_food[2];            // h

Interpolated strings

$age = 16;
print "You are " . $age . " years old.\n";
print "You are $age years old.\n";    // You are 16 years old.

String functions

// index  0123456789012345
$name = "Stefanie Hatcher";
$length = strlen($name);              // 16
$cmp = strcmp($name, "Brian Le");     // > 0
$index = strpos($name, "e");          // 2
$first = substr($name, 9, 5);         // "Hatch"
$name = strtoupper($name);            // "STEFANIE HATCHER"
NameJava Equivalent
strlen length
strpos indexOf
substr substring
strtolower, strtoupper toLowerCase, toUpperCase
trim trim
explode, implode split, join
strcmp compareTo

bool (Boolean) type

$feels_like_summer = false;
$php_is_rad = true;

$student_count = 217;
$nonzero = (bool) $student_count;     // true
  • true and false keywords are case-insensitive

Math operations

$a = 3;
$b = 4;
$c = sqrt(pow($a, 2) + pow($b, 2));
math functions
abs ceil cos floor log log10 max
min pow rand round sin sqrt tan
math constants
M_PI M_E M_LN2

null

$name = "Victoria";
$name = null;
if (isset($name)) {
	print "This line isn't going to be reached.\n";
}

5.3: Embedded PHP

PHP syntax template

HTML content

	<?php
	PHP code
	?>

HTML content

	<?php
	PHP code
	?>

HTML content ...

Printing HTML tags in PHP = bad style

<?php
print "<!DOCTYPE html>\n";
print "<html>\n";
print "  <head>\n";
print "    <title>Geneva's web page</title>\n";
...
for ($i = 1; $i <= 10; $i++) {
	print "<p class=\"count\"> I can count to $i! </p>\n";
}
?>

PHP expression blocks

<?= expression ?>
<h2> The answer is <?= 6 * 7 ?> </h2>

The answer is 42

Expression block example

<!DOCTYPE html>
<html>
	<head><title>CSE 190 M: Embedded PHP</title></head>	
	<body>
		<?php for ($i = 99; $i >= 1; $i--) { ?>
			<p> <?= $i ?> bottles of beer on the wall, <br />
				  <?= $i ?> bottles of beer. <br />
				  Take one down, pass it around, <br />
				  <?= $i - 1 ?> bottles of beer on the wall. </p>
		<?php } ?>
	</body>
</html>

Common errors: unclosed braces, missing = sign

	<body>
		<p>Watch how high I can count:
			<?php for ($i = 1; $i <= 10; $i++) { ?>
				<? $i ?>
		</p>
	</body>
</html>

Complex expression blocks

	<body>
		<?php for ($i = 1; $i <= 3; $i++) { ?>
			<h<?= $i ?>>This is a level <?= $i ?> heading.</h<?= $i ?>>
		<?php } ?>
	</body>

This is a level 1 heading.

This is a level 2 heading.

This is a level 3 heading.