Matthew M.

Matthew M.

Web Application Development

Slide Duration:

Table of Contents

Course Introduction

12m 13s

Intro
0:00
What Is PHP?
0:12
PHP Hypertext Preprocessor
0:13
Why Learn PHP?
1:09
Why Learn PHP?
1:10
Web Application: Educator Store
2:25
Web Application: Educator Store
2:26
Example of Web Application
3:18
PHP in the Educator Store
7:12
Dynamic Content Generation
7:22
Ease of Website Maintenance
7:55
Form Input Processing and Access to Advanced Functionality
9:00
What You Will Learn
9:36
What You Will Learn
9:37
Who Is This Course For?
10:56
Who Is This Course For?
10:57
How PHP & The Web Work

15m 32s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Client-Server Model
0:53
Client-Server Model
0:54
HTTP Protocol
2:15
Definition of Protocol
2:16
Hypertext Transfer Protocol (HTTP)
2:37
Uniform Resource Locators
3:46
Uniform Resource Locators (URLs)
3:47
Form of URLs
4:13
Accessing Webpages with URLs
5:13
Serving Webpages
6:14
Serving Webpages, Client Machine, and Server Machine
6:15
Static vs. Dynamic Webpages
8:30
Static Webpage
8:31
Dynamic Webpage
8:55
Server-Side Scripting
9:54
Server-Side Scripting
9:55
Static and Dynamic Webpage Coding Example
11:17
Static and Dynamic Webpage Coding Example
11:18
Serving Dynamic Webpages
13:07
Serving Dynamic Webpages
13:08
Setting Up Your Development Environment

33m 11s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Development Environments
1:04
Development Environments
1:05
Our Default Development Environment: Window 7
1:54
Remote Development
4:04
Development Machine & Remote Server
4:05
Local Development
6:54
Development Machine
6:55
Software Used In This Course
9:41
Firefox Web Browser & Firebug Add-On
9:42
XAMPP
12:15
PSPAD Text Editor
13:16
XAMPP Installation
13:49
XAMPP Installation
13:50
Verify XAMPP Install
16:26
Verify XAMPP Install
16:27
localhost
19:08
localhost and 127.0.0.1 'loopback' IP Address
19:09
Document Root
21:16
Document Root and Directory Name
21:17
Document Root for Apache in XAMPP: htdocs & Example
22:13
Text Editor Spectrum
26:12
Text Editor Spectrum: Barebones to IDE
26:13
PSPad & Example
27:02
Finding Help
30:26
Web Resources
30:27
Homework Challenge
31:36
Homework Challenge
31:37
Homework Challenge (cont.)
32:38
Homework Challenge (cont.)
32:39
Your First PHP Script

12m 41s

Intro
0:00
Lesson Overview
0:19
Lesson Overview
0:20
.php To HTML
1:00
.php To HTML
1:01
PHP Delimiters
2:20
PHP Delimiters: Opening & Closing PHP Tags
2:21
'Hello, World!' Example
4:34
Echo Statement & PHP Tags
4:35
Adding Second Heading
7:34
Homework Challenge
9:56
Homework Challenge
9:57
Basic PHP Syntax

40m 24s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
PHP Delimiters
0:38
Long and Script Form
0:39
Short and ASP Style
1:33
Example
2:01
php.ini: PHP's Configuration
3:40
php.ini
3:41
Configuration Directives
3:48
Short and ASP Style: Enabled/Disabled
4:13
phpinfo()
7:58
Statements
14:28
PHP Statements
14:29
Example: PHP Statements
14:55
Comments
16:53
PHP Comments
16:55
Single-line Comments
17:37
Multi-line Comments
18:13
Example: PHP Comments
18:47
Coding Conventions
24:26
Coding Conventions
24:27
Example: PHP Coding Conventions
26:19
Homework Challenge #1
33:51
Homework Challenge #1
33:52
Homework Challenge #1 (cont.)
35:41
Homework Challenge #1 (cont.)
35:42
Homework Challenge #2
36:09
Homework Challenge #2
36:10
Homework Challenge #2 (cont.)
38:07
Homework Challenge #2 (cont.)
38:08
Variables & Numeric Data Types

16m 38s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:12
Working With Data
0:48
8 Types of Data for PHP
0:49
Identifiers
1:40
Identifiers: Definition and Example
1:41
Variables
2:47
Variables Definition
2:48
Variables Syntax
3:06
Integer Data Type
4:44
Integer Data Type
4:45
Integer Literals
5:08
Examples
5:30
Float Data Type
6:26
Float Data Type
6:27
Float Literals
7:00
Example
7:21
Example: PHP Code Declaring Variables
8:06
Example: PHP Code Declaring Variables
8:07
var_dump() Function
9:59
var_dump()
10:00
Example: Code and Output
10:30
Example: var_dump() Function
11:19
Coding Conventions: Variables
12:32
Lower Camel Case Notation
12:33
Variable Name Lengths
13:54
Homework Challenge
14:54
Homework Challenge
14:55
String Data Type

18m 6s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
String Data Type
0:29
String Data Type
0:30
Specifying String Literals
1:03
Single-Quoted Strings
1:53
Single-Quoted Strings
1:54
Escape Sequences
2:31
Escape Sequences
2:32
Example
2:46
Escape Sequences for Commonly Used Special Characters
4:32
Double-Quoted Strings
6:04
Double-Quoted Strings
6:05
Variable Interpolation
6:44
Coding Conventions: Strings
7:54
Coding Conventions: Strings
7:55
Homework Challenge
8:54
Homework Challenge
8:55
Include Files & Web Application Introduction

38m 43s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
include Statement
0:47
include Statement: Definition
0:48
Include Statement: Syntax
2:05
include Statement: Example
2:25
include Path
6:32
Absolute and Relative Path
6:34
Specified Path
7:15
Not Specified Path
7:55
Code Reuse
9:35
Code Reuse
9:36
Example
11:11
require Statement
12:56
require Statement: Definition
12:57
require Statement: Syntax
13:32
Include versus Require
13:52
Coding Conventions
16:33
Coding Conventions
16:34
Introduction to Our Web Application
20:32
Introduction to Our Web Application
20:33
Updating Web Application
21:14
Web Application Example
22:59
Homework Challenge
35:33
Homework Challenge
35:34
Homework Challenge (cont.)
37:38
Homework Challenge (cont.)
37:39
Arrays

34m

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is an Array?
0:42
What is an Array?
0:43
Arrays in PHP
1:44
Keys and Values
2:15
Types of Arrays
3:37
Indexed Arrays & Associative Arrays
3:38
array() Construct
6:47
Declaring Arrays
6:48
Defining Indexed Array
7:00
Defining Associative Arrays
7:43
Square Bracket Syntax
8:50
Square Bracket Syntax
8:51
Accessing Indexed Arrays
9:02
Accessing Associative Arrays
9:56
Arrays Example
10:41
Indexed Arrays Example
10:45
Associative Arrays Example
13:55
Multi-Dimensional Arrays
18:28
Multi-Dimensional Arrays
18:29
Multi-Dimensional Arrays Example
18:51
Multi-Dimensional Arrays in PHP File
20:34
Coding Conventions: Arrays
27:59
Coding Conventions: Arrays
28:00
Homework Challenge #1
29:20
Homework Challenge #1
29:21
Homework Challenge #2
30:38
Homework Challenge #2
30:39
Web Application Development

27m 38s

Intro
0:00
Versions
0:14
Version 3.0
1:23
Version 3.1
8:08
Version 3.2
11:42
Version 3.3
20:27
Homework Challenge
26:31
Homework Challenge
26:32
Script Input & The GET Method

30m 18s

Intro
0:00
Lesson Overview
0:15
Lesson Overview
0:16
Providing Input to PHP
0:39
GET Method, POST Method, and Cookies
0:40
Name/Value Pairs
1:22
GET Method
1:57
HTTP GET Method
1:58
Query String
2:52
GET Method Example
3:38
GET Method Example
3:39
Review of HTML Forms
8:16
HTML Forms
8:17
Input Control and Submitted Form
9:13
<form> Tag
10:07
<form> Tag
10:08
Method
10:34
Action
11:13
Input Control Examples
11:50
Input Control Examples
11:51
Common Input Controls
17:31
Common Input Controls
17:32
Query Strings
18:52
Query Strings
18:53
Query Strings Syntax
19:12
URL Encoding
20:01
URL Syntax
20:02
Examples
21:17
Simple Form Example
22:28
urlencode() Function
24:08
urlencode() Function
24:09
Example
25:03
urlEncoding Text Example
25:54
Simple Form Example
25:55
Homework Challenge
28:46
Homework Challenge
28:47
Accessing Form Data in PHP

32m 1s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
$_GET Array
0:48
$_GET Array
0:49
Accessing the Value of a Name/Value Pair Submitted Via GET
1:04
Name Form Example
2:54
Name Form and the $_GET Array
2:55
Using Arrays with Input Controls
6:34
Using Arrays with Input Controls
6:35
Common Example
6:47
Indexed Array Form Example
8:16
Indexed Array Form Example
8:17
Associative Arrays with Input Controls
10:14
Associative Arrays with Input Controls
10:15
Associative Arrays Example
11:41
Associative Arrays Example
11:42
Echo Form Example
15:18
Echo Form Example
15:19
Outputting Arrays In String
23:42
Variable Interpolation
23:43
Outputting a Value in an Indexed Array Within a String
24:12
Simple' Syntax, 'Complex' Syntax, and 'Curly Brace' Syntax
25:00
Outputting Arrays In String Example
26:25
Outputting Arrays In String Example
26:26
Homework Challenge
29:39
Homework Challenge
29:40
Web Application Development

20m 20s

Intro
0:00
Lesson Overview
0:19
Lesson Overview
0:20
Version 3.3
0:38
Version 3.3
0:42
Version 4.0 Changelog
2:43
GET Query
2:45
Adding, Editing, and Removing
3:24
Version 4.0 Coding Example
3:55
item.php, itemID, and itemListing
4:00
Version 4.1 Changelog
10:36
Version 4.1 Changelog
10:37
Version 4.1 Coding Example
11:45
Adding Checkout and Thank You & Editing Footer and Store
11:46
Homework Challenge
18:45
Homework Challenge
18:46
Expression & Operators

31m 56s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Expressions
0:41
Expressions Definition
0:42
Example: Literals
0:55
Example: Variables
1:05
Operators
1:44
Operators Definition
1:45
Unary, Binary, and Ternary Operators
2:07
Assignment Operators
2:52
Assignment Operators
2:53
Array Assignment Operator
3:47
Arithmetic Operators
6:15
Operators for Common Arithmetic Operations
6:16
Modulus Operator
7:41
Arithmetic Operators Example
8:25
Increment/Decrement Operators
10:48
Increment/Decrement Operators
10:49
Pre- and Post- Increment/Decrement
12:43
Coding Example
15:14
Combined Assignment Operators
16:44
Combined Assignment Operators
16:45
Combined Assignment Operators Examples
18:23
Coding Example
19:39
String Operators
20:28
Concatenation Operator, String Variables, and String Literals
20:29
String Operators Example
22:41
Precedence & Associativity
23:40
Precedence & Associativity
23:41
Expression Containing Multiple Operations
23:58
Expression Containing Two Operations of Equal Precedence
25:55
Using Parentheses to Force Precedence
26:52
Precedence & Associativity Review
28:57
Homework Challenge
31:08
Homework Challenge
31:09
Web Application Development

20m 51s

Intro
0:00
Lesson Overview
0:15
Lesson Overview
0:16
Version 4.1 Review
0:33
Version 4.1 Review
0:34
Version 5.0 Changelog
1:05
Version 5.0 Changelog
1:06
Version 5.0 Example
2:19
Adding View Cart & Editing Checkout, Footer and Store
2:20
Version 5.1 Changelog
15:36
Version 5.1 Changelog
15:37
Version 5.1 Coding Example
17:33
Forwarding Order Total to Thank You Page
17:34
Homework Challenge
20:09
Homework Challenge
20:10
Boolean & Null Data Types

20m 11s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Boolean Data Type
0:38
Boolean Data Type
0:39
Two Boolean Literals
1:24
Boolean Example
1:50
Boolean Example
1:51
Comparison Operators
4:00
Comparison Operators Definition
4:01
Common Comparison Operators
4:40
Comparison Operators Example
6:49
Comparison Operators (Cont.)
10:10
Identical and Not Identical
10:11
Example: Identical and Not Identical
11:24
Null Data Type
13:36
Null Data Type Definition
13:37
Null Literal
14:08
Variable and Null Data Type
14:30
'==' Operator
15:24
Null Data Type Example
15:59
Coding Convention
18:41
Coding Convention
18:42
Homework Challenge
19:17
Homework Challenge
19:18
Type Casting

22m 41s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Type Juggling
0:54
Type Juggling
0:55
Automatic Conversion
2:23
Type Casting
3:53
Type Casting
3:54
Implicit and Explicit Type Casting
4:00
Explicitly 'cast' a Variable Example
4:16
Type Casting (cont.)
6:48
PHP Allows the Following Explicit Type Casts
6:49
The settype () Function
8:18
Type Casting Coding Example
9:00
Explicit Type Casts
9:01
String Conversions
14:52
String Conversions
15:05
Common Conversions to String
15:55
Numeric Conversions
18:18
Numeric Conversions
18:19
Boolean Conversions
20:29
Boolean Conversions
20:30
Homework Challenge
21:38
Homework Challenge
21:39
Introduction to Functions

52m 20s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
What are Functions?
0:51
Definition of Faction
0:52
PHP and Function Call
1:53
Function Calls
2:42
Function Calls
2:43
Function Arguments
3:17
Return Values
4:56
Return Values
4:57
Function Chaining
6:29
Function Chaining
6:30
PHP.net Function Reference
8:23
PHP.net & Function Prototypes
8:24
PHP.net Function Reference Example
9:29
Optional Function Arguments
12:28
Optional Function Arguments
12:29
String Functions
14:57
strtoupper() and strtolower()
14:58
implode (), str_replace(), explode(), strpos(), substr(), and strlen()
18:31
Array Functions
25:48
count()
25:49
in_array() and array_key_exists()
26:06
sort() and ksort()
26:37
Example: count() and in_array()
27:50
Example: array_key_exists()
29:53
Example: sort() and ksort()
31:20
Date & Time Functions
33:38
date() and time()
33:39
getdate()
34:49
mktime()
35:01
Date & Time Functions
35:12
Example: date() and time()
35:58
Example: getdate()
42:15
Example: mktime()
43:15
Homework Challenge #1
44:31
Homework Challenge #1
44:32
Homework Challenge #1 (Cont.)
45:28
Homework Challenge #1 (Cont.)
45:29
Homework Challenge #2
46:34
Homework Challenge #2
46:34
Homework Challenge #2 (Cont.)
48:06
Homework Challenge #2 (Cont.)
48:07
Homework Challenge #2 (Cont.)
49:17
Homework Challenge #2 (Cont.)
49:18
Homework Challenge #3
50:08
Homework Challenge #3
50:09
Constants

19m 24s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Constants vs. Variables
0:55
Constants vs. Variables
0:56
Constant Identifiers
2:28
Constant Identifiers Definition and Examples
2:29
Declaring Constants
3:47
Two Ways of Declaring Constants
3:48
Syntaxes
4:10
Major Difference in the Two Forms
4:48
Using Constants Example
6:25
Using Constants Example
6:26
Coding Conventions
11:08
Constant Names
11:09
define () Function
11:42
Meaningful Names
12:00
$_SERVER Superglobal
12:23
$_SERVER
12:24
$_SERVER ['DOCUMENT_ROOT']
13:15
$_SERVER Superglobal Example
13:52
Homework Challenge
17:40
Homework Challenge
17:41
Web Application Development

26m 29s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 6.0
1:13
Version 6.0 & Version 5.1 Review
1:14
Version 6.0 Changelog
11:24
Version 6.0 Changelog
11:25
Version 6.1 Changelog
12:00
Version 6.1 Changelog
12:01
Version 6.1 Coding Example
12:42
Version 6.1 Coding Example
12:43
Version 6.2 Changelog
15:18
Version 6.2 Changelog
15:19
Version 6.2 Coding Example
18:19
Version 6.2 Coding Example
18:20
Homework Challenge
25:24
Homework Challenge
25:25
Conditional Control Structures

18m 58s

Intro
0:00
Lesson Overview
0:26
Lesson Overview
0:27
Statement Groups
0:57
Statement Groups
0:58
Example
1:10
Conditional Control Structures
1:38
Conditional Control Structures
1:39
PHP Control Structures
1:56
if Statement
2:32
if Statement
2:33
if Statement (cont.)
3:49
if Statement Coding Example
3:50
else Statement
7:26
else Statement
7:27
if/else Statement Coding Example
8:50
isset() Construct
9:59
isset() Construct
10:00
isset() Construct Coding Example
12:00
Coding Conventions
15:13
Coding Conventions
15:14
Coding Conventions (Cont.)
16:39
Coding Conventions (Cont.)
16:40
Homework Challenge
17:25
Homework Challenge
17:26
Error Handling

19m 8s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Error Handling in PHP
0:41
Error Handling in PHP
0:42
Coding Example
1:45
error_reporting() Function
7:02
error_reporting() Function
7:03
Coding Example
8:04
Additional Error Directives
9:02
display_errors
9:13
log_errors
9:37
error_log
9:50
track_errors
10:12
Coding Examples
10:29
Error Control Operator
13:38
Error Control Operator & Coding Example
13:39
Homework Challenge
16:19
Homework Challenge
16:20
Homework Challenge (cont.)
17:58
Homework Challenge (cont.)
17:59
Logical & Ternary Operators

23m 22s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
Logical Operators
0:49
Logical Operators Definition
0:50
NOT (!)
1:08
OR ( ||, or)
1:35
AND (&&, and)
2:08
XOR (xor)
2:30
Logical Operators (cont.)
2:54
The OR and AND Logical Operators
2:55
Precedence of Logical Operators
3:35
Logical Operators Coding Example
3:58
Logical Operators Coding Example
3:59
Short-Circuit Operators
9:54
Short-Circuit Operators
9:55
Coding Example
10:49
Ternary Operator
14:07
Ternary Operator
14:08
Syntax and Example
14:24
Coding Conventions
17:36
Coding Conventions
17:37
Homework Challenge
19:08
Homework Challenge
19:09
Homework Challenge (cont.)
20:26
Homework Challenge (cont.)
20:27
Web Application Development

19m 27s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 6.2 Review
0:26
Version 6.2 Review
0:27
Version 7.0 Changelog
2:39
Version 7.0 Changelog
2:40
Version 7.0 Coding Example
4:35
Version 7.0 Coding Example
4:36
Version 7.1 Changelog
12:43
Version 7.1 Changelog
12:44
Version 7.1 Coding Example
13:52
Version 7.1 Coding Example
13:53
Homework Challenge
17:42
Homework Challenge
17:43
More Conditional Control Structure

20m 49s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
elseif Statement
0:45
elseif Statement
0:46
elseif Statement Coding Example
1:22
Multiple elseif Statements
2:16
Multiple elseif Statements
2:17
Multiple elseif Statements Coding Example
3:07
Adding an else Statement
5:44
Adding an else Statement Overview
5:45
Adding an else Statement Coding Example
6:50
switch() Statement
8:07
switch() Statement
8:08
switch() Statement (Cont.)
9:14
switch() Statement (Cont.)
9:15
switch() Statement Coding Example
11:09
default Case
14:20
default Case
14:21
default Case Coding Example
15:13
Coding Conventions
15:57
Coding Conventions
15:58
Coding Conventions (cont.)
17:10
Coding Conventions (cont.)
17:11
Homework Challenge
18:06
Homework Challenge
18:07
Homework Challenge (cont.)
19:18
Homework Challenge (cont.)
19:19
Nested Conditional Control Structures

24m 49s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Nested Control Structures
0:36
Nested Control Structures
0:37
Nested Control Structures Coding Example
2:08
Coding Conventions
6:34
Nested vs. Not Nested Control Structures
6:35
Debugging Control Structures
7:51
Debugging Control Structures
7:52
Incorrectly Specified Test Conditions and Forgetting a Break Statement
8:32
Incorrectly Placing an Opening or Closing Curly Brace
12:14
Debugging Tips
16:24
Tracing the Execution of Your Code
16:25
Adding Echo Statement
17:15
Homework Challenge
21:41
Homework Challenge
21:42
Homework Challenge (cont.)
23:08
Homework Challenge (cont.)
23:09
Web Application Development

28m 20s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 7.1 Review
0:46
Version 7.1 Review
0:47
empty () Construct
1:38
empty () Construct
1:39
empty () Construct Coding Example
2:37
Version 8.0
5:32
Version 8.0 Overview
5:33
Version 8.0 Coding Example
7:08
Version 8.0 Coding Example
7:09
Version 8.1
16:13
Version 8.1 Overview
16:14
Version 8.1 Coding Example
19:48
Version 8.1 Coding Example
19:49
Homework Challenge
26:19
Homework Challenge
26:20
Sending Email Using PHP

43m 50s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
Built-in Mail Extension
1:28
Built-in Mail Extension
1:29
SMTP Overview
2:04
SMTP Overview
2:05
SMTP - Windows
3:08
SMTP - Windows
3:09
SMTP - Linux/UNIX
4:58
SMTP - Linux/UNIX
4:59
Mail Configuration Directives
6:35
Mail Configuration Directives
6:36
Coding Example
7:48
Mail Server Authentication
10:20
Mail Server Authentication
10:21
fake sendmail Program
12:27
fake sendmail for Windows
12:28
Main 'add-on' feature
13:03
Username & Password
13:25
SMTP - XAMPP for Windows
14:07
SMTP - XAMPP for Windows
14:08
Sendmail Example
16:19
Sendmail Example
16:20
mail() Function
18:39
mail() Function
18:40
additional_headers
19:45
'From' Header
20:12
mail() Function Coding Example
21:09
mail() Function Coding Example
21:40
Web Application Development
31:43
Version 9.0 Changelog
31:44
ContactUs.php
32:52
ContactUs.php
32:53
contactInfo
33:45
Version 9.0 Coding Example
34:31
Version 9.0 Coding Example
34:32
Homework Challenge
41:32
Homework Challenge
41:33
User-Defined Functions

56m

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Defining Functions
1:29
Four Parts of Defining a Function
1:30
Functions Example 1
2:29
Function Parameters
5:29
Function Parameters
5:30
Functions Example 2
8:20
Return Statements
12:53
Return Statements
12:54
Functions Example 3
14:20
Where to Define Functions
20:34
Where to Define Functions
20:35
include_once Construct
22:10
include_once Construct
22:11
include_once Coding Example
23:55
Reasons to Use Functions
27:44
Take Advantage of Code Reuse
27:45
Improve Code Readability
29:56
Use Instead of 'content' Include Files
32:12
Web Application Development
34:42
Version 10.0 Changelog
34:43
Version 10.0 Coding Example
37:55
Version 10.0 Coding Example
37:56
Outputting HTML in Functions
47:04
Outputting HTML in Functions
47:05
Example
49:02
Coding Conventions
53:16
Coding Conventions
53:17
Homework Challenge
54:33
Homework Challenge
54:34
Variable Scope

31m 37s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is Variable Scope?
0:57
Variable Scope
0:58
Global Scope
1:15
Local Function Scope
1:50
Variable Scope Coding Example
2:26
Variable Scope Coding Example
2:27
global Keyword
8:52
global Keyword Overview
8:53
global Keyword Example
9:25
Superglobals
12:34
Superglobals
12:35
Superglobals Example
14:53
Pitfalls of Global Variables
18:34
Pitfalls of Global Variables
18:35
When to Define Variables
22:09
When to Define Variables
22:10
Putting It All Together
22:56
Putting It All Together Example
22:57
Function Scope
28:56
Function Scope
28:57
Homework Challenge
29:41
Homework Challenge
29:42
Homework Challenge (cont.)
30:59
Homework Challenge (cont.)
31:00
Web Application Development

28m 27s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 11.0 Changelog
0:56
Version 11.0 Changelog
0:57
processGetVar()
1:42
processGetVar() Overview
1:43
processGetVar() Example
2:25
emailComments()
6:35
emailComments() Overview
6:36
emailComments() Example
7:14
outputItemLink()
11:19
outputItemLink() Overview
11:20
outputItemLink() Example
11:45
calcCartTotal()
19:25
calcCartTotal() Overview
19:26
calcCartTotal() Example
21:14
Homework Challenge
25:56
Homework Challenge
25:57
Optional Parameters

19m 35s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Optional Parameters
0:26
Optional Parameters Definition
0:27
Default Values
0:53
Optional Parameters Coding Example
3:26
More on Optional Parameters
6:55
Multiple Optional Parameters
6:56
Coding Example
8:05
Homework Challenge
16:18
Homework Challenge
16:19
Web Application Development

23m 7s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Version 12.0 Changelog
0:55
Version 12.0 Changelog
0:56
Update to outputLink()
1:44
Update to outputLink()
1:45
outputLink() Coding Example
2:40
outputImg()
13:57
outputImg() Overview
13:58
outputImg() Coding Example
15:35
Homework Challenge
22:05
Homework Challenge
22:06
Introduction to Conditional Loops

57m 20s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
while Loop
0:48
Definition
0:49
Syntax and Usage
1:12
Coding Example
3:33
Looping Over Arrays
13:16
Looping Over Arrays
13:17
Coding Example
13:53
Looping Over Arrays (cont.)
16:43
Internal Array Pointer
16:44
Array Traversal Functions
17:29
current ()
17:30
next () and prev ()
18:16
reset () and end ()
19:25
key ()
19:40
Indexed Arrays: Using current () and next ()
20:40
Indexed Arrays: Using current () and next ()
20:41
Associative Arrays: Using key (), current (), and next ()
24:06
Associative Arrays: Using key (), current (), and next ()
24:07
Array Traversal Functions (cont.)
29:41
list () Construct and Example
30:07
each () Construct and Example
34:40
Lopping Over Arrays Using list(), each()
42:13
Lopping Over Arrays Using list(), each()
42:14
Control Structure Scope
50:37
Definition and Example
50:38
Control Structure Scope Coding Example
51:59
Coding Conventions
54:20
Coding Conventions
54:21
Homework Challenge
54:58
Homework Challenge
54:49
More on Conditional Loops

35m 50s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
do-while Loop
0:42
do-while Loop
0:43
Simple do-while Loop Example
1:51
Another do-while Loop Example
4:09
continue Statement
10:46
continue Statement
10:47
For Example
11:07
continue Statement Coding Example
12:44
break Statement Re-Visited
18:10
break Statement Re-Visited
18:11
break Statement In while Loops Example
19:38
Infinite Loops
23:26
Infinite Loops
23:27
Coding Example
24:57
Common Loop Pitfalls
25:59
Counter Initialization Occurs in Loop
26:30
Counter Not Incremented in Loop
29:30
Unreachable Break Statement
30:50
Coding Conventions
33:48
Do-while Statements Coding Conventions
33:49
Homework Challenge
34:28
Homework Challenge
34:29
Web Application Development

22m 7s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Version 13.0 Changelog
0:48
Updating 'viewCart.php' and calcCartTotal()
0:49
Creating isValidCart()
9:22
Adding Three New Item to the Store & Links
15:56
Version 13.1 Changelog
17:20
Updating outputItemLink() to Remove Its Global Dependency on $itemCatalog
17:21
Homework Challenge
20:34
Homework Challenge
20:35
For & Foreach Loops

29m 28s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
for Loops
0:45
for Loops
0:46
Expression 1
1:22
Expression 2
1:47
Expression 3
2:01
Simple Example
2:27
Simple Example
2:28
Notes on for Loops
8:56
Notes on for Loops
8:57
Ending Loop Using Test Condition and Break Statement
10:06
Ending Loop Using Test Condition and Break Statement
10:07
foreach Loops
12:03
foreach Loops
12:04
Indexed Array Syntax
14:10
Syntax
14:11
Example
15:23
Associative Array Syntax
18:31
Syntax
18:32
Example
19:47
Coding Conventions
25:05
for Loops
25:06
foreach Loops
25:58
Homework Challenge
26:52
Homework Challenge
26:53
Web Application Development

25m 58s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Version 14.0 Changelog
1:19
Version 14.0 Changelog
1:20
Version 14.0 Coding Example
1:57
Version 14.0 Coding Example
1:59
Version 14.1 Changelog
5:39
Version 14.1 Changelog
5:40
Version 14.1 Coding Example
7:06
Version 14.1 Coding Example
7:07
Version 14.2 Changelog
15:37
Version 14.2 Changelog
15:38
Version 14.2 Coding Example
16:25
Version 14.2 Coding Example
16:26
Homework Challenge
23:35
Homework Challenge
23:36
Conditional Loop Wrap-Up

23m 12s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Nested Conditional Loops
0:39
Nested Conditional Loops
0:40
Coding Example
1:10
continue & break Re-Visited
5:17
Continue Statements and Coding Example
5:30
Break Statements and Coding Example
11:34
Loop Debugging Tips
15:16
Add Short Debug Statement At the Very Beginning
15:17
Output a Counter Variable
18:10
Add Debug Statement At the Very End
19:20
Homework Challenge
20:20
Homework Challenge
20:21
Homework Challenge (cont.)
22:00
Homework Challenge (cont.)
22:01
Variable-Length Parameter Lists

22m 16s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Variable-Length Parameter Lists
0:34
Variable-Length Parameter Lists
0:35
Coding Example
1:51
Variable-Length Parameter Lists (cont.)
5:21
When a Parameter List is Defined For the Functions
5:22
Coding Example
6:32
Variable Type Functions
9:54
is_int (), is_float (), is_string (), and is_bool()
9:55
is_ array ()
10:50
is_null ()
11:01
Variable Type Functions Coding Example 1
11:27
is_numeric() and Example
15:57
Variable Type Functions Coding Example 2
17:12
Homework Challenge
19:35
Homework Challenge
19:36
Homework Challenge (cont.)
20:52
Homework Challenge (cont.)
20:53
Web Application Development

38m 36s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
Version 15.0 Changelog
0:33
outputLink (), outputImg (), is_array () and is_string ()
0:34
Version 15.0 Coding Example
1:31
Version 15.0 Coding Example
1:32
Version 15.1 Changelog
7:55
Removing Redundant Code and Adding New Function Called outputHtmlTag ()
7:56
Version 15.1 Coding Example
8:37
Version 15.1 Coding Example
8:38
Version 16.0 Changelog
14:55
Creating emailOrder() Using New Constants ORDER_EMAIL_FROM and ORDER_EMAIL_SUBJECT
14:56
Version 16.0 Coding Example
16:30
Version 16.0 Coding Example
16:31
Version 16.1 Changelog
32:21
Creating formatAsDollars ()
32:22
Version 16.1 Coding Example
32:57
Version 16.1 Coding Example
32:58
Homework Challenge
36:27
Homework Challenge
36:28
Miscellaneous Topics

31m 49s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
register_globals Directive
0:58
register_globals
0:59
Coding Example
2:04
$_GET vs. $HTTP_GET_VARS
4:07
$_GET vs. $HTTP_GET_VARS
4:08
register_long_arrays Directive Coding Example
5:44
Magic Constants
7:30
Magic Constants
7:31
__LINE__, __FILE__, __FIR__, and __FUNCTION__
8:16
Coding Example
9:06
exist() & die()
13:19
exist() & die()
13:20
Coding Example
14:08
Execution Operator
16:23
Execution Operator
16:24
Coding Example
17:27
Array Operators
18:23
Equality (==) and Inequality (!=, <>)
18:43
Identity (===) and Non-Identity (!==)
19:13
Union (+) Operator
19:41
Array Operators Coding Example
20:07
Variable Variables
24:13
Variable Variables
24:14
Coding Example
26:07
Variable Functions
28:02
Variable Functions
28:03
Coding Example
29:13
Loading...
This is a quick preview of the lesson. For full access, please Log In or Sign up.
For more information, please see full course syllabus of Introduction to PHP
Bookmark & Share Embed

Share this knowledge with your friends!

Copy & Paste this embed code into your website’s HTML

Please ensure that your website editor is in text mode when you paste the code.
(In Wordpress, the mode button is on the top right corner.)
  ×
  • - Allow users to view the embedded video in full-size.
Since this lesson is not free, only the preview will appear on your website.
  • Discussion

  • Download Lecture Slides

  • Table of Contents

  • Transcription

  • Related Services

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Sign up for Educator.com

Membership Overview

  • Unlimited access to our entire library of courses.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lesson files for programming and software training practice.
  • Track your course viewing progress.
  • Download lecture slides for taking notes.
  • Learn at your own pace... anytime, anywhere!

Web Application Development

Lecture Slides are screen-captured images of important points in the lecture. Students can download and print out these lecture slide images to do practice problems as well as take notes while watching the lecture.

  • Intro 0:00
  • Lesson Overview 0:12
    • Lesson Overview
  • Version 14.0 Changelog 1:19
    • Version 14.0 Changelog
  • Version 14.0 Coding Example 1:57
    • Version 14.0 Coding Example
  • Version 14.1 Changelog 5:39
    • Version 14.1 Changelog
  • Version 14.1 Coding Example 7:06
    • Version 14.1 Coding Example
  • Version 14.2 Changelog 15:37
    • Version 14.2 Changelog
  • Version 14.2 Coding Example 16:25
    • Version 14.2 Coding Example
  • Homework Challenge 23:35
    • Homework Challenge

Transcription: Web Application Development

Hello again, and welcome back to Educator.com's Introduction to PHP course.0000

In today's lesson, we are going to be continuing development of our web application, incorporating what we learned in our last lesson about foreach loops.0004

We are going to go through three different versions of the web app today.0013

In version 14.0, we are going to be replacing all of the while loops that we have had in our application,0017

that iterate over arrays, with foreach loops, because that is what foreach loops are meant for.0023

And we will see how that makes it a little bit cleaner syntax.0028

In version 14.1, we are going to be adding a department page to our website, a department.php that is going to allow us to...0032

We are also going to create an array in our catalog.php file called departments that is going to associate different items with different departments explicitly.0042

And then, when you go to department.php, looking for different departments, it is going to list all of the items in that department.0052

So, we will see how that works.0057

In version 14.2, we are going to be adding to some of our pages a left navigation bar.0059

It is going to improve our app a little bit, because typically, when you go to a store and you look at item pages on the left-hand side,0065

you can see the departments listed; so we are going to add that feature to our application.0070

And that is going to make use of a foreach loop, as well as the other changes that we are going to be making.0074

In 14.0, we are simply going to be making some changes to calcCartTotal function and our isValidCart function0081

(which we updated in our last version of the web application).0092

And then, we are also going to update viewCart.php, which uses a while loop for outputting all of the different rows for each item in the shopping cart.0094

So, each of these three different functions and pages uses while loops, and we are just going to update them to use foreach loops,0105

because they are iterating over arrays; and that is to get practice with the foreach loop.0113

So, if we go and take a look at version 13.1, which is our last version of our web app, in viewCart.php,0120

we can see that we have a while function that iterates over the itemCatalog array and pulls out the key and the value from it.0129

What we are going to do is...this is basically what foreach loops are made for; so we are going to replace this while loop0137

that uses this each function and the list function with a simpler, cleaner-looking foreach loop.0143

So, in our new version, it is going to be replaced with this simple foreach loop,0149

where we pass the array itemCatalog (the array that we are going to loop over).0155

We are going to pull the key for each element in the item catalog and set current item ID equal to that key,0159

because in our item catalog, the keys are the item ID's.0170

Then, we are going to set the variable currItem to the value of the array elements in itemCatalog.0173

And what the values are: those are the associative arrays that have the item's information (like its name, its file extension, and its price, and so forth).0180

That is the only change we are making in this file; but it is just to update it to use a foreach loop.0188

Similarly, in utilLIB.php, we have a calcCartTotal function that uses a while loop to iterate over this cartItems associative array.0194

So, in our updated version, we are just going to replace it with a foreach loop.0205

And again, we are not going to use this list construct; we are not going to use the each function.0214

Basically, what we are going to do is: provided the foreach loop with the cartItems array, we are going to say,0221

"set the variable itemID to the value of the key of each element in the array."0227

And then, we are going to create a variable called itemQty, which we are going to set0233

to the value of each element in the array that we are going to loop over.0237

Because the key for the cartItems array is the item ID, and the value is the item quantity--that is why we have named these variables itemID and itemQty.0242

This will be set to the key; this will be set to the value.0252

That is our update to calcCartTotal.0254

Similarly, if we look down at isValidCart, we have a while loop down here.0257

And actually, in this one, we are just pulling the value out of the associative array cartItems.0266

And the value we are pulling is the item quantity; so in our new version, if we look down at isValidCart,0271

we can see we use the foreach loop, but in this case we are using the indexed array syntax.0279

And as mentioned in the last lesson, you can use the indexed array syntax on an associative array if you are just interested in the value.0286

So, when we iterate over cartItems, we are going to pull out the value of each element in that array on each iteration of the loop,0292

and we are going to store that value in the variable itemQty.0299

So, on each iteration of the loop, we are going to pull the item quantity for whatever element or item we are iterating over,0302

and then we are going to perform our test that we have set up to test0308

whether any of the items in the cartItems array have a quantity greater than 0.0312

That is basically the updates to isValidCart, viewCart.php, and calcCartTotal, making use of the cleaner-looking foreach loop, instead of the while loops.0318

And that is what we had just learned in our last lesson.0330

Those are the changes that we made for version 14.0.0335

In version 14.1, we are going to do things that get a little more complicated than these simple loop updates.0340

We are going to be explicitly adding departments to our store.0347

We are going to be creating an array in catalog.php called departments, and what that array is going to do is going to be similar to the itemCatalog array.0351

It is going to be a multidimensional associative array, and what it is going to do is:0363

the key of departments is going to be...we are going to assign each department an item ID.0367

And then, we are going to assign to that item ID an array that contains information about the name of the department and all of the items in the department.0373

Then, what we are going to do is create a page called department.php.0383

And department.php is going to be like item.php, in that we are going to provide it, by a GET query string, a department ID, which is set in this departments array.0387

And then, what department.php is going to be able to do is loop over the items contained in the departments array0400

for a particular department and output a listing of each item in that department.0410

And then, after we do that, we are going to update store.php, so that it's going to include links to these new department pages.0419

Let's go take a look, first, at our old catalog.php.0428

We had recently updated it so that it has 6 items in it; and this is our itemCatalog array containing 6 items.0431

Well, in our new version, 14.1, we have our itemCatalog array, which is the same as before,0437

except now we have created an array called departments.0444

And it is a multidimensional array; the key of the highest-dimension array is the department ID.0447

So here, we are creating three departments: one department has the ID 1; one has the ID 2; one has the ID 3.0457

To each of those keys, we are associating a value that is another array.0464

It is an associative array, containing two key/value pairs.0470

One is going to be a key that represents the name of the department; in this case, department 1 is going to be the apparel department.0474

Department 2 is going to be the electronics department; department 3 will be sporting goods.0481

Then, we are also adding a key to each department's array, the key items, which is going to have another array as part of it.0487

We actually have a three-dimensional array here, and then it goes three levels deep.0496

And this array is going to contain the item numbers of all the items that go in that department.0501

So, for the apparel department, for example, the name of the department is Apparel.0507

It has a department ID 1, and then it contains the items with item ID 1001 and 1004.0511

Let's take a look at the page we are going to be creating, called department.php.0520

And actually, let's go and take a look at it.0524

This, for example, is what the department page looks like for apparel.0531

As you can hopefully see at the top of the browser here, the link is department.php, with a question mark.0535

So, we are appending a query string; in this case, we are setting the query string...having the name department ID and setting it equal to 1.0541

In this case, we want to load the apparel department.0549

So, what this script is doing is going out to that departments array and using the itemCatalog array, as well,0552

to load all of the items that are in the apparel department, and then output a row for each one of them,0558

telling you that, in the apparel department, there is a 100% cotton t-shirt and a winter jacket.0564

Let's take a look at the details behind department.php.0570

It is very similar to item.php, because it's one PHP page that we are using to display multiple departments.0573

And we do that by providing it a department ID, which it can then use to look up all of the information and items in a particular department.0580

So, the first thing we do is test to see if an item ID was provided by the GET string.0589

And we call it currDeptID; if that is true, then what we are going to do is load up the current department from the departments array.0594

So, we are going to take this department ID (in the Apparel case, it's department ID 1), and what we are going to do is load the value0605

associated with that key; so, for key 1, it is going to be this array here,0613

which is an associative array with two key/value pairs: name and items.0617

That is going to be currDept; it is going to represent all of the information about the current department.0624

Then, what we are going to do is create a short variable for all of the items that are in a department.0629

We know that, in our department array for department 1, there are 2 key/value pairs.0634

And the second key/value pair is an array called items that contains all of the items that are in the department.0643

So, what we are going to do here is create this variable called currDeptItems,0649

and we are going to use this current department that we just loaded from the departments array.0655

And we are going to load the items array for that department, which is, again,0661

an indexed array listing all of the item ID's that correspond to items in that department.0666

Then, we form some of the same functions that we did before.0672

We are outputting, as the page title, the name of the department; and we can get that because0674

we have loaded the current department from the departments array, and it has a key/value pair with the key name.0680

So, we are going to output the name as the page title.0686

Then, we are going to go down in the HTML section for outputting a department.0690

At the top of the page, we are going to output the department's name; and you can see that here, it is Apparel.0694

We do that by accessing this currDept variable we have created in our global variable section at the top.0700

We output a header row for a table, and you can see that the table has two columns.0706

It has a column called items and a column called price; so this is a section just for that row.0710

And then, what we are going to do--similar to when we output the different rows for our viewCart.php:0716

we are going to use a foreach loop to loop over the array currDeptItems, which we defined at the top,0721

which contains the item numbers of all of the different items contained in that department.0728

And then, for each item, we are going to output a row that has a link to the item and the item's price.0735

So, what we are going to do is: currDeptItems is that array taken from the third level deep in the departments array0740

that contains the strings that have the ID's of all the items in a particular department.0750

So, when we loop over this array, we are going to pull the value out of it, and each value is going to be the ID string for a particular item.0756

Then, what we are going to do is access the item catalog, which contains information about all of the items.0764

And we are going to use this current item ID that we pulled out of the departments array for this particular department to pull out that item's information.0771

So, we are going to look up the item in the item catalog, and we are going to store it in a variable called currItem.0780

Then, all we are going to do is output a link to that items page.0784

And as you can see here, we are using the outputItemLink function;0789

so this is a perfect example where you can see how functions can be reused in multiple spots.0792

We have this one functionality that has output a nice link to an item's page that contains a small image and a text link that is the name of the item.0797

Now, we can use this both in viewCart...we have the same function being used as we do in the department page.0810

So, you can see already how the functions are able to be reused in multiple spots; and that is one of the many advantages of having functions.0817

So, we simply output the item link; and then, in the second column, we output the current item's price,0826

which we can pull directly from currItem, which we loaded from the catalog.0831

And so, that is how department.php works: you provide it with a department ID; it goes out and looks up all of the items in the department.0836

Then it goes out and fetches, from the item catalog, the information about each item, and then outputs a row for each item.0845

Additionally, we have added to the homepage: these were static links, but these weren't links before.0854

So, if we look at the last version, 14.0, we can see that we hadn't explicitly defined departments yet, so Apparel wasn't really a link.0858

Now, on our new store.php, there are links to the department pages.0867

And if you click on Electronics, for example, it will take you to the electronics department, which is department ID 2.0872

And if we go and look at store.php in version 14.1, we can see that, whereas before we had just output Apparel as plain text,0881

we are outputting a link to the department.php page for the department with deptID=1.0896

And then, we are going to be using, as the name of the link, the name of the department.0905

And we do that by looking up department #1 in the departments array in catalog.php,0910

and then pulling out the value associated with the name of that department.0916

So, in this case, that shows how we have Apparel here, Electronics here, and Sporting Goods here,0921

because if we look at catalog.php, those were the names provided0926

in this department array: we have Apparel, Electronics, and Sporting Goods.0930

In version 14.2, we are going to take things a little bit further and, now that we have this departments array,0939

add a left-hand navigation to some of the pages in our website, so that when you are on, for example, the item page,0946

instead of just seeing information about the item, you can also click on the left-hand side and maybe browse to a different department.0952

We are going to add the left-hand navigation (and this is just a preference) to store.php, item.php, and department.php.0958

Now, in your application, maybe you might not want to have that on your homepage, for example.0970

But for this web application, that is just what we decided to go ahead and do.0973

And that left navigation bar is going to link to all of the different departments in the store.0977

And if we go and look at version 14.2, we can see the homepage, and you can see that it has added this left-hand navigation bar here.0985

And so, we can click on Electronics to go to the electronics department.0996

And as we can see, on the electronics department page, the left-hand navigation bar is there.1000

Let's say we want to look at the DVD player: you can also see that, because this is item.php, and (as I mentioned)1004

we have decided to add the nav bar here, instead of just seeing information about the item (for example, in the last version,1011

we just saw that, and then if we wanted to browse to a different department, we would have to hit Back),1017

now we have added this left-hand navigation, which gives us a little more flexibility in navigating throughout the store.1022

So now, we want to go to the Sporting Goods department, for example: and you can see all of the items in the sporting goods department.1027

The way that we do that is: we are adding an optional section to header.phtml.1034

And if that optional section is enabled (and we are going to get to how that works in a second), then that navigation bar is output.1042

So, if we go and look at header.phtml for the last version, 14.1, it is the same as it has been for a couple of versions now.1048

And this is what it looks like; it outputs the head of the HTML page: it outputs the header row, and then it starts the main table, and then the content pane.1061

What we are doing here is: when we add this left navigation bar, we are going to be adding another column to this main table,1073

which gives you the structure of our website.1080

For example, on the old version (actually, let's look at...), here we have the main table, and it has one cell that contains all of the content.1083

And that corresponds to this content pane that we have defined in our previous version of header.phtml.1096

Well, in the new version, now we have divided this main table that would comprise this whole section into two cells.1103

One is going to be the left nav bar, and then one is going to be the content.1110

So, this is the left navigation pane (we are going to call it), and this is the content pane.1113

When we look at the new version of header.phtml, the beginning is all going to be the same, except that, when we enter the main table,1117

instead of just going straight to beginning the content pane, we have included an if statement, where we have chosen1127

to optionally include this additional table cell that is going to output that left nav bar.1136

And what you can see is: in the left nav bar, what it does is goes through and accesses the departments array in catalog.php.1144

And in that array, we know that the department ID's are the keys of that array; the values are arrays that contain information about the department.1154

So, we are going to pull the key and value out of the departments array for each department that we have in our store.1162

It is going to pull out the department ID and put it in the variable deptID, and it is going to pull out the array1169

containing information about the department in the dept variable.1173

And then, all we are going to do is output a link to department.php that uses the query string with deptID.1177

And then, as you know, for the outputLink function, the first parameter to it is a URL.1186

And then, the second parameter is the body of the link: in this case, we want the body of the link to just be the name of the department.1192

So, we are going to access this departments array in catalog.php, and we are going to pull out the name out of there and output that.1198

And so, what happens is: this foreach loop goes over every department that we have in our store, and it is going to output a link for it.1210

Again, let's say we wanted to add another department to our store.1218

Well, if we had hard-coded this, for example, and hard-coded each link for each department1221

in the left nav pane of header.phtml, every time we had a new department, we would have to go in1226

and add a new listing for each new department.1231

Now, all we do is: when we update our data (which is contained in the departments array in catalog.php),1236

it is going to automatically pull that information and dynamically generate a left navigation bar1241

that is going to list all of the departments that we have.1247

Now, if you will notice, up here, the way that this is enabled, or we decide whether it's to be added to a page, is using this if test condition.1251

What it does is: first, it tests if a boolean flag that we are going to define, called useLeftNav, has been defined previously in the file.1263

So, we know header.phtml is included in all of our HTML and all of our PHP files to output the beginning portion of the HTML of our page.1272

Well, because it is included, we can define variables before we have included that file.1283

So, if this variable useLeftNav has been previously defined, and it is true (and when you "AND" a variable, it is just pulling1288

the value of the variable and evaluating it as a boolean value, so useLeftNav is going to be true or false)--as long as useLeftNav is set,1299

AND it is true, then this is going to work.1306

Now, because this is kind of a review, we know that the AND operator is a short-circuit operator.1309

So, when we evaluate isset, if it returns false, it is not going to try to pull the value useLeftNav and find out what its value is,1316

because if you did that, you would get an undefined variable error.1325

So, because it is a short-circuit operator, if isset returns false, it is not even going to bother to try and do that; so the order of these two does matter.1329

Now, if we go look at how this is used within our pages, if we look at item.php, for example,1337

in item.php in version 14.1, this is what the beginning section looks like when we get ready to include the HTML header file.1353

Well, in 14.2, we have added a little section here where we have created a variable useLeftNav,1365

which is going to be tested for in our included HTML header file.1372

And here, we have set it to true: so, on every one of our pages where we want to include that left nav bar,1378

we simply set this flag and set it equal to true.1382

For the three pages that we include it on (item.php, department.php, and store.php), you can see that, in version 14.2,1387

they all have this useLeftNav boolean flag set to true.1397

And here it is on department.php.1401

And so, that is how we are able to decide whether to output the left navigation bar on any individual page.1404

For the homework challenge for this lesson, I want you to just review how we change all of our while loops over to foreach loops,1417

and why we did that--because we are looping over arrays, and that is what a foreach loop is specifically made for.1424

And typically, you are not going to be using a while loop to loop over arrays.1431

The other thing is to make sure you understand how the structure of this new departments array we created works,1435

where the key of the array is the department ID, and then for the value associated with the department ID,1441

it contains information about the department, such as the name of the department and the items in it.1447

Also, make sure you understand how department.php works, by accessing the information in the departments array,1452

and also by accessing the item information in the itemCatalog array.1459

And see if you understand how it works, just like item.php, in that, instead of creating a separate page for each department,1465

just like with item.php, we have eliminated the need for creating a separate PHP or HTML page for each item.1473

By being able to dynamically generate an item's information by passing an item ID, department.php works the same way.1479

We don't have to create a separate department page for each department in the store.1486

We simply pass a department ID to it, and then it is able to go ahead and pull the information it needs to generate that department's page.1490

Also, just review the changes we made to the header.phtml to understand how we are optionally including the left nav bar, based on this useLeftNav flag.1498

And understand that that useLeftNav flag needs to be defined before we include the header.phtml file.1509

And that is what we use to decide whether, on a particular page, to output the left nav bar or not.1518

And then, also just notice, not just the while loops that we replaced with foreach, but just the prevalent use of foreach loops1524

that we have used all over our different pages, like in department.php, in header.phtml (when we loop over the different1532

departments in the departments array)--just see how the foreach is always used to loop over these different arrays.1540

That is its function, and that is what we are commonly going to be using, and you are commonly going to see.1548

That ends today's lesson; thank you for watching Educator.com, and I look forward to seeing you next time.1554

Educator®

Please sign in to participate in this lecture discussion.

Resetting Your Password?
OR

Start Learning Now

Our free lessons will get you started (Adobe Flash® required).
Get immediate access to our entire library.

Membership Overview

  • Available 24/7. Unlimited Access to Our Entire Library.
  • Search and jump to exactly what you want to learn.
  • *Ask questions and get answers from the community and our teachers!
  • Practice questions with step-by-step solutions.
  • Download lecture slides for taking notes.
  • Track your course viewing progress.
  • Accessible anytime, anywhere with our Android and iOS apps.