Section 1 Get started fast with PHP and MySQL

Chapter 1 Introduction to web development with PHP

The architecture of a web application

How a client-server architecture works

How static web pages are processed

How dynamic web pages are processed

A survey of web application software

Highlights in the history of PHP

Highlights in the history of MySQL

The Product Discount application

The user interface

The HTML file

The CSS file

The PHP file

How to edit and test a PHP application

How to edit a PHP page with a text editor

How to start and stop Apache and MySQL on your own computer

How to deploy a PHP application

How to run a PHP application

How to test and debug a PHP page

How to view the source code for a web page

How to use NetBeans to develop a PHP application

How to work with PHP projects and files

How to edit and test a PHP application

How to import and configure a PHP project

Chapter 2 How to code a PHP application

Basic PHP skills

How to embed PHP in HTML

How to code comments and statements

The six PHP data types

How to declare variables and constants

How to get data from a request

How to use the built-in $_GET array

How to use the built-in $_POST array

When to use the HTTP GET and POST methods

How to work with data

How to code string expressions

How to code echo statements

How to code numeric expressions

How to use the compound assignment operators

How to use some built-in functions

How to use the filter_input() function

The Product Discount application

The user interface

The form in the HTML file

The PHP file

How to code control statements

How to code conditional expressions

How to code if statements

How to code while and for statements

How to pass control to another page

The Future Value application

The user interface

The code for the indexphp file

The code for the display_resultsphp file

How to use the PHP documentation

How to access the PHP manual

How to find the documentation you need

Chapter 3 Introduction to relational databases and MySQL

An introduction to relational databases

How a database table is organized

How the tables in a relational database are related

How the columns in a table are defined

The SQL statements for data manipulation

How to select data from a single table

How to select data from multiple tables

How to insert, update, and delete data

An introduction to MySQL

What MySQL provides

Two ways to work with MySQL

How to use phpMyAdmin

How to start phpMyAdmin

How to log in, log out, and change your password

How to import and run a SQL script that creates a database

How to review the data and structure of a table

How to run SQL statements

How to create users with limited privileges

Chapter 4 How to use PHP with a MySQL database

How to connect to a database and handle exceptions

How to connect to a database

How to handle exceptions

How to get and modify data

How to execute SELECT statements

How to work with the first row of a result set

How to work with all the rows of a result set

How to execute INSERT, UPDATE, and DELETE statements

The Product Viewer application

The user interface

The code

The Product Manager application

The user interface

The code

Expanded contents vii

Chapter 5 How to use the MVC pattern to organize your code

How to use the MVC pattern

An introduction to the MVC pattern

How to code functions

How to redirect requests

The Product Manager application

The user interface

The model

The controller

The view

The Product Catalog application

The user interface

The model

The controller

The view

Chapter 6 How to test and debug a PHP application

An introduction to testing and debugging

Typical test phases for a PHP application

The three types of errors that can occur

Common PHP errors

An easy way to trace the execution of your PHP code

How to debug with Xdebug and NetBeans

How to set and remove breakpoints

How to step through code

How to inspect variables

How to inspect the stack trace

Section 2 Master PHP programming

Chapter 7 How to work with form data

How to get data from a form

How to get data from text boxes, password boxes, and hidden fields

How to get data from a radio button

How to get data from a check box

How to get data from an array of check boxes

How to get data from a drop-down list

How to get data from a list box

How to get data from a text area

How to display data on a web page

How to format special characters

How to format line breaks

How to display data with echo and print statements

Chapter 8 How to code control statements

How to code conditional expressions

How to use the equality and identity operators

How to use the relational operators

How to use the logical operators

viii Expanded contents

How to code the selection structures

How to code if statements with else clauses

How to code if statements with else if clauses

How to use the conditional and null coalesce operators

How to code switch statements

How to use a switch statement in the controller

How to code the iteration structures

How to code while loops

How to code do-while loops

How to code for loops

How to use the break and continue statements

Chapter 9 How to work with strings and numbers

How to work with strings

How to create strings

How to use escape sequences

How to work with string length and substrings

How to search a string

How to replace part of a string

How to modify strings

How to convert strings to and from arrays

How to convert strings to and from ASCII values

How to compare strings

How to work with numbers

How to assign integers

How to assign floating-point values

How to use the math functions

How to generate random numbers

Other skills for working with strings and numbers

How to use the sprintf() function to format strings and numbers

How to convert strings to numbers

Chapter 10 How to work with dates

How to use timestamps to work with dates

How to create and format timestamps

How to work with timestamps

How to use the strtotime() function

Examples of working with timestamps

How to use objects to work with dates

How to use the DateTime class

How to use the DateInterval class

How to use the DateInterval and DateTime classes together

Examples of working with DateTime objects

Chapter 11 How to create and use arrays

How to create and use an array

How to create an array

How to add and delete elements

How to work with variable substitution

How to use for loops to work with arrays

How to create and use an associative array

How to create an associative array

How to add and delete elements

How to work with variable substitution

How to use foreach loops to work with arrays

How to use functions to work with arrays

How to fill, merge, slice, and splice arrays

How to work with queues and stacks

How to get the sum and product of elements

How to search arrays

How to sort arrays

How to modify arrays

How to work with arrays of arrays

Understanding an array of arrays

How to create and use an array of arrays

The Task List Manager application

The user interface

The code for the controller

The code for the view

Chapter 12 How to work with cookies and sessions

How to work with cookies

An introduction to cookies

How to set and get a cookie

How to enable or disable cookies

How to work with sessions

Why session tracking is difficult with HTTP

How session tracking works in PHP

How to start a session

How to set and get session variables

How to manage a session

How to end a session

The Shopping Cart application

The user interface

The controller

The model

The Add Item view

The Cart view

Chapter 13 How to create and use functions

Basic skills for working with functions

How to create and call a function

How to pass arguments by value and by reference

How variable scope works

How to provide default values for parameters

How to work with type declarations

How to use variable-length parameter lists

How to create and use a library of functions

A library of functions

How to set the include path

How function scope works

How to create and use namespaces

Advanced skills for working with functions

How to work with variable functions and callbacks

How to work with anonymous functions

How to work with closures

The Shopping Cart application

The user interface

The model

The controller

The view

Chapter 14 How to create and use objects

How to create and use classes

The code for the Category class

The code for the Product class

How to code properties

How to code constructors and destructors

How to code methods

How to create and use objects

How to code class constants, properties, and methods

How to code class constants

How to code static properties and methods

The object-oriented Product Manager application

The user interface

The model

The controller

The view

Additional skills for working with objects

How to loop through an object’s properties

How to clone and compare objects

How to inspect an object

How to work with inheritance

How to inherit a class

How to use the protected access modifier

How to create abstract classes and methods

How to create final classes and methods

How to work with interfaces

Chapter 15 How to use regular expressions, handle exceptions, and validate data

How to use regular expressions

How to create and use regular expressions

How to match characters

How to use the character class

How to create complex patterns

How to use look-ahead assertions

How to use a multiline regular expression

How to use a global regular expression

How to replace a regular expression with a string

How to split a string on a regular expression

Regular expressions for data validation

How to handle exceptions

How to create and throw exceptions

How to catch exceptions

How to catch errors

The Registration application

The user interface

The file structure

The model

The controller

The view

A long version of the Registration application

Section 3 Master MySQL programming

Chapter 16 How to design a database

How to design a data structure

The basic steps for designing a data structure

How to identify the data elements

How to subdivide the data elements

How to identify the tables and assign columns

How to identify the primary and foreign keys

How to enforce the relationships between tables

How normalization works

How to identify the columns to be indexed

How to normalize a data structure

The seven normal forms

How to apply the first normal form

How to apply the second normal form

How to apply the third normal form

When and how to denormalize a data structure

A database design tool

An introduction to MySQL Workbench

How to use MySQL Workbench to create database diagrams

Chapter 17 How to use SQL to create a database

How to work with databases

How to create a database

How to select a database

How to drop a database

How to work with tables

An introduction to MySQL data types

How to create a table

How to code a primary key

How to code a foreign key constraint

How to alter a table

How to drop a table

How to work with indexes

How to create an index

How to drop an index

How to work with users and privileges

A summary of privileges

How to create, rename, and drop users

How to grant privileges

How to revoke privileges

How to view privileges

Other skills for creating a database

How to load data from text files

How to dump a database to a SQL script

The script for the Guitar Shop database

Chapter 18 How to use SQL to work with a database

How to select data from a single table

How to select columns from a table

How to use an alias for a column

How to select rows with a LIMIT clause

How to select rows with a WHERE clause

How to use the logical operators

How to use the IS NULL operator

How to use the LIKE operator

How to sort rows with an ORDER BY clause

How to select data from multiple tables

How to code an inner join

When and how to use table aliases

How to code summary queries

How to code aggregate functions

How to group queries by column

How to code subqueries

Where to use subqueries

How to code correlated subqueries

How to insert, update, and delete rows

How to insert rows

How to update rows

How to delete rows

Chapter 19 Professional PHP for working with MySQL

Three ways to use PHP to work with MySQL

PDO (PHP Data Objects)

PHP’s mysqli extension

PHP’s MySQL extension

How to work with PDO

How to connect to a database

How to select data

How to insert, update, and delete data

How to work with prepared statements

How to set the error mode for PDO

A model in PDO

How to work with mysqli

How to connect to a database

How to select data

How to insert, update, and delete data

How to work with prepared statements

The object-oriented style compared to the procedural style

A model in mysqli

Chapter 20 A database-driven website

How to work with large text columns

A simple content management system

How to add HTML tags to text

The include files for the Guitar Shop website

The Home page

The directory structure

The utility files

The view files

The Product Catalog application

The user interface

The controller

The view

The Product Manager application

The user interface

The controller

The view

Section 4 Master the advanced skills for building websites

Chapter 21 How to create secure websites

How to use a secure connection

An introduction to secure connections

How SSL authentication works

How to get a digital secure certificate

How to request a secure connection

How to redirect to a secure connection

How to use authentication

Three types of authentication

How to store and validate a password

How to use form-based authentication

How to use basic authentication

How to work with cryptography

An introduction to four cryptography libraries

How to install the Defuse cryptography library

How to encrypt and decrypt data

A class for encrypting and decrypting data

Chapter 22 How to send email

How to send email

How email works

How to set up a test email account

How to use PHPMailer to send an email

A helper function for sending an email

How to use the helper function to send an email

The Registration application

The user interface

The controller

The views

Chapter 23 How to work with files, uploads, and images

How to work with files

How to get a directory listing

How to read and write an entire file

How to read and write part of a file

How to read and write CSV data

How to copy, rename, and delete a file

How to upload a file

HTML for uploading a file

PHP for working with an uploaded file

How to work with images

How to get information about an image

How to read and write images

How to resize an image

How to work with transparency

The Image Upload application

The user interface

The utility files

The controller

The view

Chapter 24 An eCommerce website

An introduction to the website

Prototyping and stepwise refinement

The directory structure of the website

The user interface for end users

The Catalog application

The Cart application

The Checkout and Account applications

The My Account page

The user interface for administrators

The Admin Login and Admin Menu pages

The Product Manager application

The Category Manager application

The Order Manager application

The Account Manager application

Appendix A How to set up Windows for this book

How to install Chrome and Notepad++

How to install the Chrome browser

How to install Notepad++

How to install and configure XAMPP

How to install XAMPP

How to set the default time zone for PHP

How to start and stop the Apache and MySQL servers

How to configure phpMyAdmin

How to install the book applications and databases

How to install the source code for this book

How to create and restore the databases

How to install NetBeans and Xdebug

How to install NetBeans

How to install Xdebug

Appendix B How to set up Mac OS X for this book

How to install Chrome and BBEdit

How to install the Chrome browser

How to install BBEdit

How to install and configure XAMPP

How to install XAMPP

How to set the default time zone for PHP

How to start and stop the Apache and MySQL servers

How to configure phpMyAdmin

How to install the book applications and databases

How to install the source code for this book

How to create and restore the databases

How to install NetBeans and Xdebug

How to install NetBeans

How to install Xdebug