CSE 190M Web Programming

Lecture 6: Intro to PHP

Reading: 5.1 - 5.2

Except where otherwise noted, the contents of this document are Copyright 2012 Marty Stepp, Jessica Miller, Victoria Kirst and Roy McElmurry IV. 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

The display property

h2 { display: inline; background-color: yellow; }

This is a heading

This is another heading

property description
display sets the type of CSS box model an element is displayed with

Displaying block elements as inline

<ul id="topmenu">
	<li>Item 1</li>
	<li>Item 2</li>
	<li>Item 3</li>
</ul>
#topmenu li {
	display: inline;
	border: 2px solid gray;
	margin-right: 1em;
}

Exercise: Beer Blog

We will develop on this beer blog page.

  • The header logo image is not there, make it so.
  • The navigation links are not right, fix them.

The visibility property

p.secret {
	visibility: hidden;
}

Since nobody can see this anyway: ca-ca poo-poo pee-pee!!!

property description
visibility sets whether an element should be shown onscreen;
can be visible (default) or hidden

The opacity property css3

body     { background-image: url("images/marty-mcfly.jpg"); background-repeat: repeat; }
p        { background-color: yellow; margin: 0; padding: 0.25em; }
p.mcfly1 { opacity: 0.75; }
p.mcfly2 { opacity: 0.50; }
p.mcfly3 { opacity: 0.25; }

Marty McFly in 1985

Marty McFly in 1955 fading away, stage 1

Marty McFly in 1955 fading away, stage 2

Marty McFly in 1955 fading away, stage 3

property description
opacity how not-transparent the element is; value ranges from 1.0 (opaque) to 0.0 (transparent)

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";
}

Exercise: Beer Blog Anthem

We will work our way toward the ideal solution to this problem as we learn more and more about PHP.

  • Use PHP to reduce the redundancy in the beer blog's anthem.

if/else statement

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

while loop (same as Java)

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

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

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

Interpreted 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

PHP syntax template

HTML content

	<?php
	PHP code
	?>

HTML content

	<?php
	PHP code
	?>

HTML content ...

Exercise: Beer Blog Anthem 2

We will work our way toward the ideal solution to this problem as we learn more and more about PHP.

  • Generalize the anthem to have as many number of beers on the wall as we like.
  • Generalize the anthem to any kind of beverage using interpreted strings.

5.3: Embedded PHP

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";
}
?>

Exercise: Beer Blog Anthem 3

We will work our way toward the ideal solution to this problem as we learn more and more about PHP.

  • Improve the internal correctness of our PHP solution with mode switches.

PHP expression blocks

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

The answer is 42

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.

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>