Matthew M.

Matthew M.

Web Application Development

Slide Duration:

Table of Contents

Section 1: Advanced PHP with MySQL
Course Introduction

13m 36s

Intro
0:00
Advanced PHP w/ MySQL
0:13
Course Introduction
0:14
Course Content
0:59
Web Application: Educator Store
1:45
Web Application: Educator Store
1:46
Object-Oriented Programming
6:09
Object-Oriented Programming Overview
6:10
MySQL
6:50
MySQL Overview
6:51
Example: Command Prompt & MySQL
8:34
What You Will Learn
9:34
What You Will Learn
9:35
Course Prerequisites
11:52
Course Prerequisites
11:53
Advanced Course Development Environment

18m 46s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Development Environment Setup
1:36
Firefox Web Browser, XAMPP, and PSPad Text Editor
1:37
Course Directory Structure
4:36
Course Directory Structure
4:37
phpDocumentor
7:23
phpDocumentor Overview
7:24
Parsing Source Code
7:44
docs Subdirectory
9:06
Asvanced PHP Course Documentation Example
10:21
Previous Educator PHP Students
14:14
Lib Directory Changes
14:38
Images Directory Changes
14:57
VERSION Constant
15:40
Comments Noting a Specific Version Number
17:04
Homework Challenge
17:30
Homework Challenge
17:31
Introduction to File I/O

35m 37s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
File I/O
1:34
File I/O Overview
1:35
Performing file I/O: 3 Steps
1:52
File Permissions
2:28
Read Permission & Write Permission
2:29
fopen()
4:47
fopen()
4:48
Two Required Parameters
5:01
Successful fopen(): File Handle and Resource
5:21
FALSE and E_WARNING Error
6:00
Example
6:39
File Paths
7:10
File Paths
7:11
File Access Modes
9:18
File Access Modes
9:19
Coding Example: fopen()
10:31
Using Relative and Absolute Path & Non-Existent File
10:32
File Pointers
15:55
File Pointers
15:56
Example File
16:11
Opening a File with fopen() Using 'r' as the Access Mode
16:22
fgets()
17:55
fgets() Overview
17:56
Coding Example: fgets() - Reading a Line at a Time
18:26
feof()
20:10
feof() Overview
20:09
Coding Example: feof()
20:50
fclose()
23:43
fclose() Overview
23:44
Coding Example: fclose()
25:02
Coding Example: Current Stock
26:10
Coding Example: Current Stock
26:11
trim ()
31:39
trim () Overview and Example
31:40
Homework Challenge
33:35
Homework Challenge
33:36
Web Application Development

36m 36s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Version 1.0 Changelog
0:31
catalog.php
0:32
Function Library: fileLIB.php
5:00
Version 1.1 Changelog
27:12
createItemDataArray() and createDeptDataArray()
27:13
outputSimpleItemLink() and outputSimpleDeptLink()
32:06
HTTP & the POST Method

34m 36s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
HTTP Model
1:28
HTTP Model
1:29
Client-Server Model 2 Steps Process
2:00
HTTP Messages
2:23
HTTP Messages
2:24
HTTP Requests
3:09
HTTP Requests
3:10
Example: HTTP Request Header
3:17
Coding Example: HTTP Requests
4:29
HTTP Responses
7:15
HTTP Responses
7:16
Example: HTTP Response (Header & Body)
8:00
header()
11:47
header() Overview
11:48
Coding Example: header
14:02
Coding Example: header() Error
14:52
GET Method
18:55
GET Method
18:56
Coding Example: GET Method
20:13
POST Method
21:09
POST Method
21:10
Coding Example: Sample Form Using the POST Method
23:50
Accessing POST Data in PHP
26:38
Accessing POST Data in PHP
26:39
Coding Example: Accessing POST Data via $_POST
28:15
GET vs. POST
29:54
GET vs. POST
29:55
Example: Accessing POST Data via $_POST
31:20
Example: Accessing POST Data via $_POST
31:21
Homework Challenge
33:00
Homework Challenge
33:01
Web Application Development

14m 11s

Intro
0:00
Version 2.0 Changelog
0:09
Updating the Site's Current Form to Use the POST Method
0:10
Creating Admin Website
2:55
Dynamically Generated Department List
12:40
Writing to Files

17m 38s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Review of File I/O
0:40
Review of File I/O
0:41
fwrite()
1:38
fwrite()
1:39
fputs()
2:20
'r+'
2:31
Coding Example: fwrite()
2:59
fopen() Access Modes
8:41
'a' and 'a+'
8:42
'w' and 'w+'
11:34
Homework Challenge
14:47
Homework Challenge
14:48
Web Application Development

28m 14s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Updated Open File Functions
0:19
openItemsDataFile ( ), openDeptsDataFile ( ), and openLastAddedFile ( )
0:20
insertItem()
6:25
insertItem() Overview
6:26
Functions: createItemDataString ( ) and updateLastItemAdded ( )
7:07
addItemToDepartment ()
16:03
addItemToDepartment () Overview
16:04
Functions: createDeptDataString ( ) and updateDepartment ( )
17:55
HTTP POST: File Uploads

22m 51s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
POST Data Encoding
1:13
POST Data Encoding
1:14
When Data is Included in the Body of the HTTP POST Request and is of the Content Type
1:31
When Uploading Files Using HTTP POST
3:17
Uploading Files
6:22
Uploading Files
6:23
If Encoding Type is Not Set to Multipart/Formdata
9:27
$_FILES Superglobal
10:59
$_FILES Superglobal
11:00
Structure of $_FILES
12:15
Structure of $_FILES: Name, Type, tmp_name, Error, and Size
12:16
Coding Example: $_FILES Superglobal
13:34
Moving an Uploaded File
15:39
Introduction to Moving an Uploaded File
15:40
move_uploaded_file ( ): Definition and Example
16:40
Homework Challenge
21:19
Homework Challenge
21:20
Web Application Development

15m 30s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Uploading Item Image File
1:22
Uploading Item Image File
1:23
Uploading Item Image File (cont.)
2:43
Altering insertItem ( )
2:44
Helpfer Functions: getFileExtension ( ) and moveUploadedFile ( )
4:30
isValidItem ( )
13:03
Introduction to Object-Oriented Programming

32m 44s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Object-Oriented Programming
0:56
Introduction to Object-Oriented Programming
0:57
Associative Arrays
5:27
Associative Arrays
5:28
Classes
7:27
Classes Overview
7:28
Defining Classes
8:24
Defining Classes
8:25
Declaring Class Properties
9:25
Coding Example: Classes
10:11
Objects
12:18
Objects Overview
12:19
Classes vs. Objects
12:49
Classes vs. Objects
12:50
Instantiating Classes
14:58
Instantiating Classes
14:59
Coding Example: Instantiate an Item Object
16:30
Object Properties
19:21
Access and Set an Object's Property
19:22
Coding Example: Set & Access the Properties of an Item Object
24:23
Homework Challenge
30:22
Homework Challenge
30:23
Web Application Development

17m 47s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 5.0 Overview
0:50
Version 5.0 Overview and Examples
0:51
Outputting Object Properties
12:38
Outputting Object Properties
12:39
Array Object Properties
14:18
Access and Set Array Value
14:19
Object Methods

39m 57s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Object Methods
0:52
Definition of Object Methods
0:53
Calling Object Methods
3:25
Calling Object Methods
3:26
Coding Example: Simple Object Methods
4:44
Object Methods and Return Values
7:02
$this Variable
10:06
$this Variable: Definition and Example
10:07
$this Variable (cont.)
15:51
$this Variable (cont.)
15:52
Getters & Setters
21:21
Getters & Setters Methods
21:22
Object Methods In Strings
25:46
Object Methods In Strings
25:47
Coding Example: Outputting Method Return Values in Strings
27:41
Using $this to Call Other Methods
28:49
Using $this to Call Other Methods
28:50
Homework Challenge
34:18
Homework Challenge: 1-3
34:19
Homework Challenge (cont.)
36:20
Homework Challenge: 4-6
36:21
Homework Challenge (cont.)
37:52
Homework Challenge: 7-10
37:53
Web Application Development

17m 30s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 6.0 Overview
0:40
Version 6.0 Changes & Examples
0:41
Item Methods
0:53
Item Class Definition: getImageFilename()
0:54
Coding Example: getImageFilename()
1:58
Department Methods
7:33
addItem(), removeItem(), and isItemInDept() Method
7:34
addItemtToDepartment() & buildDeptObject() Functions
11:46
A Default Value Needed to Be Set for $items
16:26
Object Constructors

22m 20s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Object Constructors
0:32
Introduction to Object Constructors
0:33
Coding Example: Object Constructors
1:43
Defining Constructors
3:26
Defining Constructors
3:27
Coding Example: Constructors with No Arguments
4:24
Constructor Arguments
8:09
Constructor Arguments
8:10
Coding Example: Constructor Arguments
9:49
Important Notes
16:13
Important Notes
16:14
Homework Challenge
17:35
Homework Challenge: 1 - 4
17:36
Homework Challenge (cont.)
19:13
Homework Challenge: 5 - 9
19:14
Homework Challenge (cont.)
21:40
Homework Challenge: 10 and 11
21:41
Web Application Development

16m 19s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
Version 7.0 Overview
0:39
Version 7.0 Overview
0:40
Item Constructor
2:19
Item Constructor
2:20
Department Constructor
7:47
Department Constructor
7:48
Customer Constructor
12:23
Customer Constructor
12:24
More Magic Methods

53m 37s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
Magic Methods
1:12
Magic Methods
1:13
Destructors
2:45
Destructors Overview
2:46
Coding Example: Calling Destructors
4:30
Coding Example: Object Destructor
9:19
_to String ()
16:12
_to String () Overview
16:13
Coding Example: _to String () Magic Method
18:10
Access Modifiers
21:23
Introduction to Access Modifiers
21:24
Access Modifiers: Public
21:39
Access Modifiers: Private
22:18
Access Modifiers: Protected
22:41
Object Properties and Methods
23:06
Coding Example: Public Access Modifiers
26:48
Coding Example: Private Access Modifiers
28:30
_get()
31:37
_get() Overview
31:38
Coding Example: _get () Magic Method
33:30
_set ()
36:23
_set () & the Magic Method
36:24
Using Getters & Setters
44:37
Coding Example: Using Getters & Setters
44:38
Homework Challenge
50:33
Homework Challenge: 1 - 6
50:34
Homework Challenge (cont.)
51:41
Homework Challenge: 7 - 12
51:42
Web Application Development

31m 12s

Intro
0:00
Version 8.0 Review
0:12
Version 8.0 Review
0:13
private Object Properties
1:15
private Object Properties
1:16
Coding Example
2:54
_toString() Methods
6:51
_toString() Methods
6:52
Coding Example
8:09
DataFile Class
13:27
DataFile Class & I/O Operations
13:28
Using DataFile Class: Instantiate a DataFile, DataFile open () Method, and DataFile close () Method
18:09
Homework Challenge
29:35
Homework Challenge
29:36
Classes vs. Objects

37m 49s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
Class vs. Object Review
0:58
Class vs. Object Review
0:59
Static Properties
2:42
Static Properties
2:43
Scope Resolution Operator (::)
5:26
Scope Resolution Operator (::) & Static Property
5:27
Coding Example: Accessing a Static Property Using the Scope Resolution Operator
7:57
Coding Example: Accessing a Static Property in a Class Definition
10:33
Coding Example: Using a Static Property as an Instance Counter
14:18
Static Methods
18:51
Static Methods Overview
18:52
Coding Example: Static Methods
21:39
Classes vs. Objects
26:28
Classes vs. Objects: Diagrams
26:29
Class Constants
30:24
Class Constants Definition
30:25
Coding Example: Using Class Constants
31:55
Homework Challenge
34:01
Homework Challenge: 1 - 5
34:02
Homework Challenge (cont.)
35:25
Homework Challenge: 6 - 10
35:26
Web Application Development

21m 7s

Intro
0:00
Version 9.0 Overview
0:12
Version 9.0 Changes & Examples
0:13
Output Class
1:08
Output Class & Static Methods
1:09
outputHtmlSelector ( ) Method
2:43
outputItemSelector ( ) Method
4:53
outputDeptSelector ( ) Method
6:42
buildObject() Methods
11:54
buildObject() Methods & Examples
11:55
Exceptions

22m 43s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
try Blocks
0:44
try Blocks Definition
0:45
catch Blocks
2:03
catch Blocks: Definition and Syntax
2:04
Coding Example: try/catch Blocks
3:48
When an Exception Object is Caught & Error Handling
5:59
Exception Class
7:02
Exception Class
7:03
Coding Example: Using try/catch to Catch an Exception Thrown from a Method
8:04
Re-Throwing Exceptions
16:39
Re-Throwing Exceptions
16:40
Coding Example: Re-throwing an Exception
17:21
Homework Challenge
20:40
Homework Challenge: 1 - 5
20:41
Homework Challenge (cont.)
22:17
Homework Challenge: 6
22:18
Web Application Development

22m

Intro
0:00
Version 10.0 Overview
0:11
Updating addItem.php, addItemToDept.php, and error.php
0:12
Updating DataFile Class: open ( ) Method & try/catch blocks
7:45
Version 10.1 Overview
13:37
Version 10.1 Changes & Examples
13:38
Updating DataFile Class: close ( ) Method & logWarning ( )
20:17
Cookies

39m 47s

Intro
0:00
Lesson Overview
0:09
Lesson Overview
0:10
What is a Cookie?
1:15
Definition of Cookie
1:16
HTTP - A Stateless Protocol
2:17
HTTP - A Stateless Protocol
2:18
Purpose of Cookies
4:10
Set - Cookie Header
6:21
Introduction to Set - Cookie Header
6:22
Coding Example: Set - Cookie Header
7:38
Cookie Header
9:45
Introduction to Cookie Header
9:46
Example: Cookie Header
10:27
setcookie()
12:33
Introduction to setcookie()
12:34
Example: Using setcookie
13:54
Cookies Attributes
15:48
Cookies Attributes Overview
15:49
Common Cookies Attributes: Domain
16:24
Common Cookies Attributes: Path
17:04
Common Cookies Attributes: Expires
19:34
Coding Example: Setting Cookie Attributes
20:58
$_COOKIE Superglobal
27:03
$_COOKIE Superglobal
27:04
Coding Example: Accessing Cookies from PHP Using $_COOKIE
29:45
Security Implications
34:44
Security Implications
34:45
Homework Challenge
36:10
Homework Challenge: 1 - 4
36:11
Homework Challenge (cont.)
37:47
Homework Challenge: 5 - 7
37:48
Web Application Development

39m 11s

Intro
0:00
Lesson Overview
0:17
Lesson Overview
0:18
instanceof Operator
1:34
instanceof Operator
1:35
Objects with Object Properties
2:53
Objects with Object Properties
2:54
Version 11.0 Overview
6:41
Version 11.0 Changes: Cart and CartItem Classes
6:42
Version 11.0 Coding Example
10:40
Version 11.1 Overview
31:03
Version 11.1 Changes & Examples
31:04
Introduction to Sessions

46m 8s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
What is a Session?
0:53
What is a Session?
0:54
Client-Side Sessions
3:51
Client-Side Sessions
3:52
Server-Side Sessions
5:04
Server-Side Sessions
5:05
Session IDs
6:26
Session IDs
6:27
The SID is Used by the Server to:
7:08
A Client Passes an SID to the Server with Each HTTP Request Via:
8:15
Sessions in PHP
12:19
Sessions in PHP
12:20
session_start()
14:40
session_start() Overview
14:41
Coding Example: Using session_start () to Continue a Session
18:03
$_SESSION Superglobal
22:06
$_SESSION Superglobal Overview
22:07
Coding Example: Setting a Session Variable via $_SESSION
25:22
Accessing Session Data
28:08
Accessing Session Data
28:09
Deleting Session Data
31:43
Deleting Session Data
31:44
Coding Example: Deleting Session Data
32:16
Configuring PHP Sessions
36:14
session.cookie_lifetime, session.cookie_domain, and session.cookie_path
36:15
Coding Example: Configuring PHP Sessions
37:28
Configuring PHP Sessions (cont.)
40:56
session.use_cookies, session.use_trans_sid, and session.use_only_cookies
40:57
Coding Example: Configuring PHP Sessions
42:25
Homework Challenge
42:55
Homework Challenge: 1 - 5
42:56
Homework Challenge (cont.)
44:10
Homework Challenge: 6 - 10
44:11
Homework Challenge (cont.)
45:27
Homework Challenge: 11 - 13
45:28
Web Application Development

11m

Intro
0:00
Version 12.0 Overview
0:12
Version 12.0 Changes Part I: Updating 'viewCart.php' & 'checkout.php'
0:13
Version 12.0 Changes Part II
5:03
Destroying Sessions

29m 59s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Destroying Sessions
1:02
Destroying Sessions
1:03
session_destroy()
2:10
session_destroy() Overview
2:11
Coding Example: Setting a Session Variable and Destroying a Session
3:18
Deleting Session Cookies
8:38
Deleting Session Cookies
8:39
Coding example: Deleting Session Cookies
9:17
Review of Steps
21:07
Review of Steps
21:08
Garbage Collection
21:50
Garbage Collection Overview
21:51
Coding Example: Garbage Collection
24:30
Homework Challenge
26:28
Homework Challenge: 1 - 4
26:29
Homework Challenge (cont.)
28:16
Homework Challenge: 5 - 9
28:17
Web Application Development

19m 14s

Intro
0:00
Lesson Overview
0:13
Lesson Overview
0:14
_autoload()
0:46
Introduction to _autoload ()
0:47
Version 13.0 Overview
4:06
_autoload () and SessionManager Class
4:07
Updating 'viewCart.php' & 'checkout.php'
11:16
Introduction to Databases

21m 24s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
Flat Files
1:09
Flat Files: Definition and Example
1:10
Problems Associated with Using Flat Files as a Database
2:15
Relational Databases
3:29
Relational Databases
3:30
Relational Database Management System (RDBMS)
3:50
Tables
7:43
Tables
7:44
Columns
9:24
Columns
9:25
What is SQL?
10:45
Introduction to Structured Query Language
10:46
Standard Data Types of SQL
12:23
Primary Keys
13:19
Primary Keys
13:20
Primary Key Examples
16:36
Primary Key Examples
16:37
Introduction to MySQL

28m 11s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
What is MySQL?
1:33
MySQL
1:34
MySQL Monitor
5:16
MySQL Monitor Overview
5:17
XAMPP & MySQL
5:58
In the MySQL Command: hostname, username and -p
7:05
Connecting to a MySQl Server
9:52
Connecting to a MySQl Server
9:53
Using MySQl Monitor
13:48
Using MySQl Monitor
13:49
GRANT Command
15:10
GRANT SQL Command
15:11
Privileges & Objects
18:18
Username, Hostname, and Password
19:37
Specifying Objects
20:05
Creating a PHP User Account
21:41
Creating a PHP User Account Overview
21:42
Meaning of all & *.*
23:35
Example: Creating a PHP User Account
23:48
Required Homework
26:27
Required Homework: 1 - 5
26:28
Required Homework (cont.)
27:28
Required Homework: 6
27:29
Creating Databases & Tables

23m 1s

Intro
0:00
Lesson Overview
0:08
Lesson Overview
0:09
Creating a Database
1:40
Introduction to Creating a Database
1:41
Example: Creating a Database
3:33
CREATE TABLE Command
6:43
CREATE TABLE Command
6:44
Data Types
7:39
Numeric Data Types: INT, INT UNSIGNED, and DECIMAL
7:40
String Data Types: CHAR (M), VARCHAR (M), and TEXT
9:23
Colum Attributes
11:00
PRIMARY KEY Attribute
11:01
AUTO INCREMENT Attribute
11:35
Items Table
13:07
Items Table
13:08
Useful Commands
17:04
SHOW TABLES Command & DESCRIBE Utility Statement
17:05
Example: Creating an Items Table
17:58
Required Homework
20:51
Required Homework: 1 - 6
20:52
Required Homework (cont.)
21:55
Required Homework: 7 - 9
21:56
SQL Command: INSERT

27m 11s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
INSERT Command
1:20
SQL INSERT Command
1:21
Specifying Values
3:16
Columns with Numeric Data Types
3:17
Columns with String Data Types
3:34
Columns with AUTO INCREMENT
4:07
Inserting Items
5:21
Inserting Items
5:22
Example: Inserting Items
7:03
SQL Text Files
14:04
SQL Monitor Client
14:05
MySQL Monitor & the < Operator
15:15
Example
17:35
Required Homework
22:32
Required Homework: 1 - 6
22:33
Required Homework (cont.)
24:19
Required Homework: 7 - 10
24:20
SQL Command: SELECT

24m 57s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
SELECT Command
0:42
SELECT Command: Definition and Syntax
0:43
Results of a SELECT Query
1:53
To Specify the Retrieval of All Columns from a Table
3:06
Example: SELECT Command
4:18
WHERE Clause
7:11
WHERE Clause
7:12
A SELECT Query with WHERE Clause has the Following Syntax
8:10
A Where Condition can Contain both Logical and Comparison Operators
9:44
Literal Values
13:24
Literal Values
13:25
Example: Literal Values
14:18
ORDER BY Clause
15:31
ORDER BY Clause & SELECT Query
15:32
Ascending and Descending Order
17:30
An ORDER BY Clause can Specify Multiple Columns to Order the Rows by
18:01
Example: SELECT Query with WHERE and ORDER BY Clause
20:32
Homework Challenge
21:59
Homework Challenge
22:00
Homework Challenge (cont.)
23:54
Homework Challenge
23:55
Using PHP from MySQL

32m 43s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
PHP/MySQL Architecture
0:56
PHP/MySQL Architecture
0:57
MySQLi Extension
3:05
MySQLi Extension
3:06
Steps to Using MySQL from PHP
5:53
Four Steps to Using MySQL from PHP
5:54
Step # 3
7:18
Connecting to a Database
8:12
To Connect to a MySQL Database
8:13
To Test for Connection Errors
10:20
Running an SQL Statement
11:54
Running an SQL Statement
11:55
Example
13:30
Processing the Results
15:58
For non-SELECT Queries
15:59
MySQLi Object Property: affected_rows
16:19
For INSERT Statements on Tables with an AUTO_INCREMENT Column
18:07
Closing the Connection
19:45
Closing the Connection
19:46
Coding Example
21:24
Coding Example: Using MySQL from PHP
21:25
Homework Challenge
29:00
Homework Challenge: 1 - 4
29:01
Homework Challenge (cont.)
31:10
Homework Challenge: 5 - 9
31:11
Web Application Development

30m 30s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
sprintf()
1:28
sprintf() Overview
1:29
Example
1:56
INSERT Statements with sprintf()
5:15
INSERT Statements with sprintf()
5:16
Version 14.0 Overview
10:00
Version 14.0 Changes & Examples Part 1
10:01
Version 14.0 Changes & Examples Part 2
21:58
SELECT QUERIES from PHP

24m 22s

Intro
0:00
Lesson Overview
0:14
Lesson Overview
0:15
SELECT Queries
1:21
SELECT Queries
1:22
MySQLi_Result Class
3:17
MySQLi_Result Class: num_rows
3:18
MySQLi_Result Class: fetch_assoc ( ) and fetch_object ( )
3:59
fetch_assoc()
5:17
fetch_assoc() Overview
5:18
Coding Example: Using fetch_assoc()
9:00
stdClass Objects
12:46
stdClass Objects
12:47
fetch_object()
14:19
fetch_object() Overview
14:20
Coding Example: Using fetch_object()
16:45
Freeing Result Set Memory
18:42
Freeing Result Set Memory
18:43
Coding Example: Using free ( )
20:01
Homework Challenge
22:07
Homework Challenge: 1 - 5
22:08
Web Application Development

17m 6s

Intro
0:00
Version 15.0 Overview
0:13
Version 15.0 Changes & Examples Part 1
0:14
Version 15.0 Changes & Examples Part 2
8:43
Linking Tables

24m 32s

Intro
0:00
Lesson Overview
0:16
Lesson Overview
0:17
A Departments Table
1:08
Departments Table
1:09
How Could We Model This in a Table: Option 1
1:26
How Could We Model This in a Table: Option 2
3:12
Database Normalization
4:37
Database Normalization
4:38
Foreign Keys
8:47
Foreign Keys
8:48
Linking Table
11:26
Linking Table
11:27
Multiple Column Primary Keys
15:30
Multiple Column Primary Keys
15:31
Example
18:51
Required Homework
22:34
Required Homework: 1 - 3
22:35
Required Homework (cont.)
24:10
Required Homework: 4
24:11
Web Application Development

24m

Intro
0:00
Version 16.0 Overview
0:11
Version 16.0 Changes
0:12
Version 16.0 Coding Examples
4:12
Version 16.0 (cont.)
18:30
Version 16.0 Changes & Examples Part 2
18:31
SQL Command: DELETE

10m 33s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
DELETE Statement
0:30
DELETE Statement & Its WHERE Clause
0:31
Delete All Rows From a Table
2:57
Using DELETE from PHP
4:04
Using DELETE from PHP Overview
4:05
Coding Example: Using DELETE from PHP
6:37
Homework Challenge
8:53
Homework Challenge: 1 - 4
8:54
Web Application Development

16m 2s

Intro
0:00
Version 17.0 Overview
0:11
Version 17.0 Changes
0:12
Version 17.0 Coding Example
2:51
Transactions
12:50
Database Transaction
12:51
Steps in Using Transactions
14:00
SQL Command: UPDATE

32m 14s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
UPDATE Statement
0:54
UPDATE Statement & Its WHERE Clause
0:55
Example: UPDATE Statement
3:32
Using UPDATE from PHP
5:21
Using UPDATE from PHP Overview
5:22
Coding Example: Using UPDATE from PHP
6:53
htmlspecialchars()
9:04
htmlspecialchars()
9:05
Encoding Special Characters
9:23
Coding Example: htmlspecialchars()
13:41
addslashes()
20:40
addslashes()
20:41
Coding Example: addslashes()
22:52
Homework Challenge
27:55
Homework Challenge: 1 - 2
27:56
Homework Challenge (cont.)
30:14
Homework Challenge: 3 - 5
30:15
Homework Challenge (cont.)
30:41
Homework Challenge: 6 - 9
30:42
Web Application Development

12m 33s

Intro
0:00
Version 18.0 Overview
0:12
Version 18.0 Changes
0:13
Version 18.0 Coding Example
1:24
SQL: Joins

42m 16s

Intro
0:00
Lesson Overview
0:11
Lesson Overview
0:12
DATETIME Data Type
1:52
DATETIME Data Type
1:53
Modeling Orders
5:12
Modeling Orders
5:13
Customers Table
10:46
Customers Table
10:47
Example
16:18
Example: Order Table in MySQL
16:19
Joins
22:26
Joins Overview
22:27
Inner Join
23:09
Example: Joins
24:11
Join Conditions
28:14
Join Conditions
28:15
Example
28:32
Join Queries
30:00
Example: Join Conditions in MySQL
30:36
Implicit Joins
34:42
Implicit Joins
34:43
Example: Implicit Joins
35:57
Aliases
37:28
Introduction to Aliases
37:29
Example: Aliases
38:55
Required Homework
40:32
Problem 1
40:33
Problem 2
41:01
Problem 3
41:17
Web Application Development

29m 34s

Intro
0:00
Lesson Overview
0:12
Lesson Overview
0:13
Inserting Orders
0:44
Inserting Orders
0:45
Version 19.0 Overview
3:45
Version 19.0 Changes & Example Part 1
3:46
Version 19.0 Changes & Example Part 2
13:18
Version 19.1 Overview
21:10
Version 19.1 Changes
21:11
Version 19.1 Coding Example
22:18
User Authentication

26m 13s

Intro
0:00
Lesson Overview
0:10
Lesson Overview
0:11
User Authentication
1:31
User Authentication
1:32
Authentication with Sessions
2:34
Authentication with Sessions
2:35
Four Steps in Authentication via Sessions
2:50
Using Sessions to Restrict Access
3:58
Using Sessions to Restrict Access
3:59
Coding Example: Restricted Access Area
4:47
Authentication Methods
5:54
Authentication Methods Overview
5:55
Coding Example: Authentication Methods
7:31
Logging Out
9:57
Logging Out
9:58
Coding Example: Log Out
10:47
Users Table
13:50
Users Table
13:51
Example: Creating a Users Table
15:08
Password Hashing
17:30
Password Hashing
17:31
PHP and MySQL Built-in Hash Functions: sha1 ( ) and md5 ( )
18:43
Coding Example: Password Hashing
19:27
Required Homework
24:41
Required Homework: 1 - 4
24:42
Web Application Development

14m 36s

Intro
0:00
Version 20.0 Overview
0:13
Version 20.0 Changes & Examples Part 1
0:14
Version 20.0 Changes & Examples Part 2
5:05
Version 20.0 Changes & Examples Part 3
7:29
Version 20.0 (cont.)
8:31
Version 20.0 Changes & Examples Part 4
8:32
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 Advanced 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

Lecture Comments (1)

0 answers

Post by Richard Rupsis on February 23, 2012

Download Training Files: Starting with Web Application
version 9.0 all 'Output.php' files start with short
tag '<?' instead of '<?php' which will cause errors
if you don't have your ini file set for short tag.

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
  • Version 9.0 Overview 0:12
    • Version 9.0 Changes & Examples
  • Output Class 1:08
    • Output Class & Static Methods
    • outputHtmlSelector ( ) Method
    • outputItemSelector ( ) Method
    • outputDeptSelector ( ) Method
  • buildObject() Methods 11:54
    • buildObject() Methods & Examples

Transcription: Web Application Development

Hello again, and welcome back to Educator.com's Advanced PHP with MySQL course.0000

In today's lesson, we are going to be continuing development of our web application,0005

incorporating what we learned in our last lesson about static methods and class constants.0008

In version 9.0, which is the version of the web application that we are updating to,0015

we are going to be creating an entire new class called Output, which we are going to use0019

to contain some static functions that are helper methods that are used to perform some simple, useful HTML output functions.0023

We are also going to be changing: previously, we had a buildItem object and a buildDept object function in our file library0033

that are used to build up a Department object or an Item object from a string that is read from items.txt or departments.txt.0041

We are going to be moving that functionality into each respective class, and calling it a buildObject method.0049

For example, Item is going to have a buildObject method now; it is going to become a static method.0057

And it is going to perform the same functionality, but it is going to be a static method within the Item class; likewise for the Department class.0062

First, we have the Output class that we have created, and it contains a couple of static methods for performing some common HMTL output tasks.0070

For example, a dropdown menu is a common HTML output.0080

And what we are going to be doing in this version is: we want to select an item from the database, maybe on an admin page.0087

And actually, I will just go to the page that I am going to show you.0093

In our administrator website, for example, what we are doing is creating dropdown boxes0098

that allow us to select the Item that want to add to the Department, and the Department we want to add it to.0106

Previously, we just had a text box where we were able to enter the item ID.0112

Well, now what we are doing is dynamically generating these select boxes by reading from our store database,0115

from those flat files, and then generating those; and we are using these static functions to do that.0122

We have a general static function that we are creating called outputHtmlSelector, which just will return a well-formed select tag0129

containing all of the options that you specify for it.0137

We are going to look at that more in a second.0139

And then, we have two specific static functions for outputting a Department selector,0141

to select any of the different Departments in the store, and also an Item selector, to select any of the different Items in the store.0148

And both of these methods call this generic outputHtmlSelector method, in order to be able to do that.0156

If we go take a look at our new Output class, we can see (for example): we have an outputHtmlSelector class method.0164

It is a static method, and what it does is builds up a select tag.0177

You provide it two parameters; one is the name of the select tag (and the select tag is an input tag, so it has a name,0183

so that when you submit the form that it is on, it is going to associate whatever option is selected with this name).0189

So, it is going to associate the value of the option selected with this name.0195

You pass it the name; then, we also pass it an array of options, which is going to include0198

the value that we want to include in the value attribute of each option, as well as the text that we would like to include.0203

For example, if we look at our administrator website, here what we have (let's look at the source code)--0211

we can see that the output of this function is: we create a select tag with name itemID.0224

And then, for each option value, we have read from the database (and we'll go over that in a second) the item ID.0231

And then, we have output the name of the item and its item number as the text of the option tag.0238

For example, here...the format that the options array needs to be in is an associative array0252

where the keys are the values that you want to include as the value attribute of each option,0260

and the values of the array are the text that you want in the body of each option.0266

You can pass it any name in any array of any value and option body text pairs.0271

It will go ahead and generate all of those options within a select tag.0282

It will close it out, and then it will return that whole string--the select tag with all the different options in it.0286

What we do is make use of this in two other static methods.0294

One is called outputItemSelector, and what we do for that one is load all the items from the database.0297

This getItems method, as we know, returns an indexed array of Item objects--of all of the Items in our database.0303

And then, what we are going to do is build up an options array to pass to this outputHtmlSelector method that we just looked at.0310

What we do is: the keys of this options array are what we want as the values for each option tag.0317

So, what we are doing is: for each item that we pull from the database, we are setting the key in this options array equal to its item ID.0324

And then, we are setting its value equal to a string that contains both the item's ID and the item's name.0333

When we look at it, you can see that we have the item ID (which is 1001), and then the name.0340

And so, we do that for each item in the store, and it is going to build up this options array.0350

And then, we call that static method; and here we are using the self keyword.0356

And as we learned in the last lesson, that is how you call a static method from within another method of the same class.0360

We have self, followed by the scope resolution operator, followed by the name of the static method we are calling (in this case, outputHtmlSelector).0373

We want that select tag's name to be itemID, so that when the form gets submitted,0381

whatever value is chosen is going to be associated with the name itemID.0387

And then, we are going to pass it this array of options that we built up, which contains values for the option tags,0391

which are the items' ID's, as well as what text to output, which is a combination of the item ID and the item name.0396

Now, we have also done basically the same thing for departments.0403

We load all the departments from the database into an array, and then we build up an options array.0408

And what we do is set the key of each option array to be the department ID of each department.0414

And then, the text that we are going to have for each department is going to be the department's ID, followed by the name.0419

And then again, we call this static outputHtmlSelector that is in the same class as this method is defined in.0425

So, we use self and the scope resolution operator.0435

We give it the name deptID; that is the name we want the select tag to have.0438

It is the value we want for its name attribute.0441

And then, we pass it this options array we have generated that contains the department ID's as the values,0443

and then a string of the department ID and the department name as the text.0450

So, when we go and look at this, we can see that our output is the department ID, followed by the department name.0456

And so, what we can do now is: instead of just knowing what an item ID is and having to type it,0464

we are able to (and this will change any time we add a new item to the database)...it is going to automatically update it to this select box,0469

because this select box calls getItems, which draws from the database.0477

For example, let's just show what this looks like first.0481

If we look at our store, in the Sporting Goods department we have two items: a baseball bat and a basketball.0486

Now, let's say, just for fun, we want to add the winter jacket to that Sporting Goods department.0491

Well, we simply select Winter Jacket and Sporting Goods, Add to Department.0496

It is going to say, "Winter Jacket was successfully added to Sporting Goods."0501

If we go back and refresh our Sporting Goods page, we can see that Winter Jacket is now in that department.0504

It is the same functionality we have had before, but we have made it easier to use.0509

Now, let's say we go ahead and add another item to the website.0513

Let's see, a soccer ball--$25...a description...pick a random image...I'll just give it the image of the basketball, since that is one we have on here.0518

Add the item to the store; the item was successfully added--it has been assigned a new number.0539

If we go back and we look at the store, we can view our cart; we can see that this soccer ball item has been added--it's item 1007.0544

However, you would think it would be in the Sporting Goods department;0555

but when we go to Sporting Goods, it is not in there, because we have not added it.0557

With our new interface, now when we click Add Item to Department, it is going to automatically load that new item.0560

Refresh the page, and now we can see that Soccer Ball has been added to the list.0567

We dynamically generated this list, where we can select any item we want from the store.0571

It is quite a neat feature; and we can add it to our Sporting Goods department and click Add to Department.0577

Go back and refresh our Sporting Goods page; we can see that that new item has been added.0583

So, we have taken the same functionality, but we have made use of the static functions0587

that we have included in this Output class to dynamically generate these select tags.0592

And so, what this Output class is, if we look at the source for it, is simply just a class of public static functions that you call using the...0601

Actually, I haven't shown you how to do that.0616

If we go look at Add Item to Department, previously we just had text fields for the item ID and the department ID.0618

Now, instead of outputting a text field, we output these select boxes.0628

So, if we go down here, we can see, in the same spot: we are calling these static methods defined in the Output class.0632

We are saying, "Call the static method outputItemSelector defined in the Output class, and output the result of that method."0639

In this case, it is going to be a select tag.0648

We do the same thing down here for the department: call the static method and outputDeptSelector in the Output class, and return an outputted value.0650

And here, again, the way we access static methods from outside the class definition is by typing0659

the name of the class, followed by the scope resolution operator,0665

and then the name of the function that we want to call and its parentheses, and if optional, any parameters.0669

That is how we make use of this Output class.0677

And these are functions that we could have just added to our...for example, we already have an outputLIB file;0680

we could have added these functions to here, as well.0689

But sometimes you will see that classes are defined with just a bunch of static methods in them; it is a different way of doing things.0691

And so, we are showing you that you can have some output functions, just as regular functions defined in the file library;0700

or you can have them defined as static methods within, for example, an Output class.0707

The other main thing that we did in this version of the web application is: we didn't get rid of, but we moved,0715

the buildDepartmentObject and buildItemObject methods that were in our file library.0722

We made them static methods called buildObject within the Item and Department class.0731

For example (let's close this), in our previous version of the web application, in our file library,0738

we had buildDepartmentObject that would take an array of information extracted from a line in departments.txt.0745

It would create a new Department object, and by reading the information from the array, it would set the ID of the department.0755

It would set the name of the department; and then, it would loop over each of the different ID's and add those to the department, using the addItem method.0773

Similarly, for buildItemObject, we would pass it an array of information extracted from a line in items.txt.0782

And we would simply build up an Item object using the Item constructor, and then return it.0789

What we do in the new version is (you will see in our file library): those functions no longer exist.0795

And if we go, for example, and look at item.php in our Item class, we can see we have a new function called buildObject.0801

It is a static function that returns an Item object, or false if there is an error.0810

And it takes a string, which is an Item string.0814

So, what we have done is: we have added the part that...0816

Before, what we had been doing is reading from the items.txt file, using the explode function0822

to take all of the data fields into an array, and then passing it to our buildItemObject function.0828

Now, we are just making it so that we are passing a line directly to this buildObject method.0833

We pass it an Item string, which if you remember...these Item strings that we output in our file0838

are generated by the __toString method that we had added in a previous version of the web application.0845

And that defines the way that an object will be represented as a string, and that is how we store them in our file.0851

Whereas __toString converts an Item object to a string, this buildObject is going to take that Item string and turn it into an Item object.0858

And so, we have this static method buildObject.0869

And you just simply pass it an Item string; it calls explode on the Item data.0872

And then, it goes ahead and builds the object and returns it.0878

Now, one thing that you may notice is that the other thing that we have done is:0881

we have moved the data separator constants from config.php into the Item class.0884

For example, if we look at the Item source code, we can see that now there is a constant declaration here:0892

const keyword, followed by the constant name DATA_SEPARATOR, and then followed by its value.0899

Here, instead of having a constant defined in config.php that is called ITEMS_DATA_SEPARATOR,0905

we just define a data separator function within an Item class.0913

And then, when we reference it, we reference it using the scope resolution operator.0916

And the way you do that is: in this case, we have not used the self method; we have just done the class name, which is another way of doing things.0929

You have the class name, followed by the scope resolution operator, followed by the name of the constant that we are getting.0941

And so, that is how we are able to access that class constant.0947

We have done the same thing for our Department object.0951

If we look at the source code for it, the Department object had two DATA_SEPARATOR constants.0955

One was to separate each of the data fields; and then, as we know,0961

all of the item ID's in the department are separated by commas, so we have an itemID separator.0964

We have created constants, moved them out of config.php, and moved them into the Department class;0969

and then, we have also created this static buildObject function that takes in a Department string0975

that was created from the __toString method of the Department object.0981

We explode that string, based on the data separator.0985

We go ahead and start building up the Department object, and then we explode that third field, which is the comma-delimited list of item ID's.0989

And then, we add each item to the object, and we return the department.0998

What we have done is taken that method that was in our function library and moved it into our class library.1001

And in a way, it kind of makes sense, because it is something that is related to a Department object.1009

And one of the points of having classes to locate common functionality related to a common theme or subject into one area1014

(in this case, our Department class): if we have a function1024

that is going to build a Department object, it makes sense to have it in the Department class.1026

In this case, we make it static so that you don't have to have an instance of the class created,1032

because all we want to do is: we already have a Department string, and we just want to build an object from that.1037

So, we don't need to access instance variables, so we have created the static method.1042

If we go and take a look, there are a couple of different methods where we have made use of this new function; and we will take a look at some of those.1047

For example, if we go to itemExists, what you can see is: what we have done is:1054

in this function, we loop over each line of the file, and we test to see if the itemID in each line is the itemID that we are looking for.1065

And this method takes a string that is an item ID that you are searching for.1073

What we do now is: we read a line from the file, and then we call this static method buildObject on Item, and we pass it the line.1078

Now, that line represents an Item object string.1086

As long as that Item object string is well-formed, meaning it comes from the __toString method of the Item, this will return OK.1089

And what that is going to do is: it will create that new item, and then we can access the itemID in that Item object we have built up,1097

compare it to the itemID that we are looking for, and if it is the right one, then we can break out of the loop and say,1104

"OK, the item has been found; exist equals true."1108

Then, the same thing for departmentExists...1112

We have also used it, for example, in getDepartment, getDepartments, getItem, and getItems.1115

For example, in getDepartment, we are extracting a line from departments.txt, and we are building a Department object out of it and returning that.1125

What we do is: we read each line from the departments.txt file.1135

We go ahead and call our new static method buildObject; we pass it the line and the file,1140

which is a string representation of a Department object.1145

This static method will build a Department object out of it; it will return it into this department variable.1148

We test to see if the ID of that department is the ID that we are looking for; and if so, it has been found.1155

And then, we can just simply return this department variable, because that contains the object that was built by buildObject.1162

And so, that is how these getDepartment, getItem, getDepartments, and getItems methods work:1169

by using these new static methods that we have incorporated into the class.1177

We have taken buildItemObject and buildDepartmentObject, moved them into their respective classes,1181

renamed them buildObject (and the reason we are not calling it buildDepartmentObject is: the way you would call it1187

would be Department::buildDepartmentObject, and it is kind of redundant, so we are just saying Department::buildObject),1194

and then we are able to pass it a Department string.1200

This buildObject is the analog of the __toString method we created in a previous version of the web application.1202

And in that case, we used to have a createItemDataString, createDeptDataString--we moved that into the class and made that into the __toString method.1208

So, we are taking a common functionality related to a department and related to an item, and focusing it,1217

and putting it all in that one class, so that it is in a related spot.1221

And so, what this shows us is an example of a static method, because this buildObject is declared as a static method.1229

And it shows how we have, for example, our Department class and our Item class:1238

unlike the Output class that only has static methods in it, our Item class and our Department class have instance methods.1243

They have instance properties.1248

Well, now we have added constants to them, and then we have added the static method buildObject.1250

So, this shows how we can have an object that has instance methods and instance properties, and also can have a static method to be called.1254

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

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.