205 videos, 12h 48m

PHP Programming Basics

Show videos in one column
Show videos in split view
Mark multiple complete (member-only)
Add multiple to a playlist (member-only)
Change speed.5x1x1.5x2x3x


  1. 25:59Series Introduction and Your First PHP Script
    1. 3:02Welcome to PHP Programming Basics
    2. 5:14What programming is and tips for following along
    3. 1:59Overview of the AMP stack (Apache, MySQL, and PHP)
    4. 2:20How to install Acquia Dev Desktop on a Mac
    5. 2:42How to install Acquia Dev Desktop on Windows
    6. 2:55How to import a default Drupal site on Dev Desktop
    7. 4:06Setting up our example folder and creating our first web page
    8. 3:41Creating our first PHP script and the structure of a simple PHP statement
  2. 45:57Working With Strings and Variables in PHP
    1. 1:46What an IDE is and the benefits of using one
    2. 2:12How to work with white space and comments
    3. 4:41How to work with strings
    4. 2:44How to use a variable
    5. 7:04How to work with string, number and boolean variables
    6. 5:56How to identify and fix common syntax errors
    7. 2:49How a PHP function is structured and how to use strstr()
    8. 3:03How to use the string functions nl2br(), trim() and strlen()
    9. 1:38Practical uses for strstr(), nl2br(), trim() and strlen()
    10. 3:39How to use additional string functions like str_replace() and strip_tags()
    11. 3:03How to use the date() function to display a readable date
    12. 6:01How to read a PHP.net function page
    13. 1:21String function challenges
  3. 31:55How to Work With Arrays in PHP
    1. 5:39How to work with simple arrays and use var_dump()
    2. 4:12How to work with associative arrays
    3. 8:09How to work with multi-dimensional arrays
    4. 7:44How to use array functions like asort(), array_pop() and array_rand()
    5. 4:52How to work with array-like objects
    6. 1:19Array function challenges
  4. 40:08Logic, Control Structures and Looping
    1. 1:30What logic is and how we're approaching learning it
    2. 3:32How to use an "if" control structure
    3. 4:35How to use an "if ... elseif" control structure
    4. 6:08Incorporating what we know about arrays and control structures in a random generator script
    5. 5:51Adding additional elements of randomness to our random generator script
    6. 3:36How to use a "foreach" loop
    7. 6:43How to use a foreach loop to generate an HTML table from an array
    8. 4:37How to use a "while" loop
    9. 1:00How to use a "for" loop and how it compares to "while"
    10. 2:36How to modify PHP settings with the php.ini file and stop runaway scripts
  5. 74:49Creating Custom Functions and Working With External Data
    1. 1:13Why separating data from logic is important
    2. 6:12How to use include() and include_once()
    3. 1:55Moving our data into a user-friendly text file
    4. 3:54How to use an output buffer to store data from an external file as a string
    5. 5:34How to create a parser that converts a comma-separated string (CSV) into an array
    6. 3:09How and why to create a simple custom function
    7. 1:35How to create a function that accepts parameters
    8. 4:05How to create a function that has optional parameters and build a virtual dice roller
    9. 1:46A deeper explanation of the purpose of custom functions
    10. 4:14How to work with references in a function (i.e. variables with an ampersand)
    11. 1:39A quick summary of what we've covered so far, and what's to come
    12. 3:22How to wrap existing code in a function
    13. 5:38How to generalize our random text generator code to make it more powerful
    14. 3:24Using our random text generator script to create a virtual Twister spinner
    15. 4:12Wrapping our people parser in a function, reviewing the code and identifying improvements
    16. 7:38Reviewing our generalized parsing function, part 1
    17. 5:57Reviewing our generalized parsing function, part 2
    18. 6:32Exploring our generalized table rendering function
    19. 2:50Re-using our table rendering function and evaluating our changes
  6. 22:34Troubleshooting errors and using operators
    1. 2:32Accidentally assigning a variable instead of comparing it
    2. 2:54Troubleshooting a missing closing bracket
    3. 1:34Troubleshooting a missing opening bracket
    4. 2:11Troubleshooting a missing parenthesis
    5. 1:20Troubleshooting the "Wrong parameter count" error
    6. 3:32How to use assignment and string operators
    7. 2:40How to use comparison operators
    8. 1:47How to use arithmetic and incrementing operators
    9. 2:03How to use logical operators
    10. 2:01How to use array operators
  7. 101:13Working With Forms in PHP
    1. 4:07The lifecycle of a form and chapter overview
    2. 6:06How to process a simple form with PHP
    3. 1:40A quick overview of the next three form examples
    4. 4:10How to use a hidden input to distinguish multiple forms on one page and how $_REQUEST works
    5. 2:00The HTML structure of a simple contact form
    6. 2:06How to pre-fill form inputs, and seeing our rendered forms
    7. 4:00How to use a switch statement and the $_POST variable
    8. 6:10How to process a contact form and send a plain text mail with PHP
    9. 3:42How to keep data in an input after a form is submitted, and a quick review
    10. 9:17How to run our examples in a remote development environment with Pantheon
    11. 8:04How to run our examples in a remote development environment with WebEnabled
    12. 5:19How to use a ternary operator and our search form in action
    13. 3:11Stepping through our search form code the first time the form is generated
    14. 8:50Stepping through our search form code after a search is submitted
    15. 3:33Demoing our random text generator with a form for user-set tokens
    16. 3:39Stepping through our random text generator form code the first time it's generated
    17. 6:44Stepping through our random text generator form code after it's been submitted
    18. 5:10How to use file comparison tools to see differences between files
    19. 1:48Demoing our random text form with loop-generated infinite inputs
    20. 5:56Stepping through our infinite randomness code the first time it's loaded
    21. 2:09Stepping through our infinite randomness code after submitting the "number of inputs" form
    22. 3:32Stepping through our infinite randomness code after submitting the "random generation" form
  8. 90:19Working With Sessions in PHP
    1. 4:11How use to sessions and the $_SESSION variable to store user information
    2. 1:18Demoing our log in form
    3. 3:00How to create a log in form
    4. 4:34How to handle log in errors when submitting an invalid username and password
    5. 3:05How to log a user in after submitting a valid username and password
    6. 2:12How to log out a user and pass variables through the URL
    7. 3:59A demo of our text adventure game
    8. 13:12Stepping through our code the first time the game is loaded, and how global variables work
    9. 9:37Entering a command in our text adventure game, and using the eval() function
    10. 6:12Stepping through our game code as we move south and north
    11. 8:55Stepping through our game code as we pick up and item, use it, then reset our game
    12. 4:38How an index.php page works, and a quick demo of our refactored game
    13. 2:20The pros and cons of using .inc files, and a review of our new file structure
    14. 3:02The benefits of creating a function library and reviewing our index and function files
    15. 6:12Reviewing the updates we made to avoid using global variables
    16. 6:01Continuing our review, the benefits of generalizing code and caching data
    17. 4:22Wrapping up our review of changes in our refactored text adventure
    18. 3:29Creating a render function for our game as a final touch
  9. 65:08Working With the (MySQL) Database
    1. 4:22The benefits of using a database (MySQL)
    2. 4:42What databases and tables are, plus a quick tour of PHPMyAdmin
    3. 5:06What SQL is and how to write a simple SELECT query
    4. 2:45How to filter SQL query results with LIKE and wildcards
    5. 4:47How to create your first database and table
    6. 4:04How to change column types using PHPMyAdmin and adding our final entry
    7. 5:40How to use AND and LIKE with two wildcards in a query
    8. 6:03How to connect to a MySQL database with PHP
    9. 3:11How to run a MySQL database query in PHP
    10. 2:44How to use ORDER BY to sort query results and a couple other query examples
    11. 2:23How to move our database connect script to a commonly included file
    12. 3:36How to add new fields to a table and a warning about modifying existing tables
    13. 2:46Populating our new people table columns and demoing our login form
    14. 2:36Comparing our array-based login form to our database-based version
    15. 1:17How to turn off magic quotes for a more realistic server enviornment
    16. 4:38What an SQL injection attack is and how to create one
    17. 2:51How to protect against an SQL injection attack
    18. 1:37The two types of attack, and brief explanation of defense strategy
  10. 69:02Working with CRUD functionality and our database
    1. 2:27What CRUD is (Create, Read, Update, Delete) and how to backup a database in PHPMyAdmin
    2. 4:23How to import from PHPMyAdmin and protect against Cross Site Request Forgeries (CSRF)
    3. 3:21How to display a list of database data in an HTML table using PHP
    4. 2:34How to create a "delete" HTML link that deletes a database record
    5. 2:36How an INSERT statement is structured, and a demo of our insert form
    6. 3:05Reviewing the differences after added the insert form to our script
    7. 4:59How to generate an INSERT statement using a loop, and a review of our workflow
    8. 2:55Why to validate forms, and a demo of validating numbers, usernames and empty inputs
    9. 3:32Comparing the validation changes made in our CRUD script
    10. 5:46How to use looping in validation and validate empty and numeric inputs
    11. 3:44How to validate alphanumeric inputs and unique usernames
    12. 2:14Demo of our update form script
    13. 1:17How to structure an UPDATE statement and the importance of not forgetting WHERE
    14. 5:54Reviewing changes where we added the ability to update a record
    15. 4:19How to use the same form to both create and update records
    16. 6:02Walking through our add and edit form code as it is processed
    17. 2:13Ways that our CRUD script could be refactored and improved
    18. 6:09Comparing our refactored changes to our previous CRUD script
    19. 1:32A quick review of our CRUD form improvements
  11. 124:31How to Build Your Own Content Management System and Understand Drupal Better
    1. 2:41Additional ways that we could use databases and our next big example
    2. 3:13Reviewing the visual structure of our static site
    3. 1:07Reviewing the folder and file structure of our static site
    4. 5:35Comparing the HTML structure of our home and about pages
    5. 3:23How to create a header template file
    6. 3:53Creating our footer and applying our templates to the home page
    7. 2:07Applying our header and footer to our other pages
    8. 1:52Reviewing our product page and identifying repetition that can be turned into a function
    9. 4:03How to render our products with a function to reduce HTML repetition
    10. 3:01When to use unique identifiers (IDs) and what a universally unique ID is (UUID)
    11. 5:00How to use a central product array for both of our product listings
    12. 1:54Applying our product rendering function to the product page
    13. 1:27The benefits of routing every page request through a single file with mod_rewrite
    14. 2:24How a .htaccess file works and how to set one up
    15. 5:41How to route all URLs through a single file (the Front Controller pattern)
    16. 3:29How to use the URL query string to trigger an include
    17. 1:32How to use the heredoc syntax to avoid escaping multiple quotes
    18. 2:06Why to use a full page template file instead of a header and footer
    19. 2:50A quick summary of our changes and a review of our other include files
    20. 1:27Why it's useful to have configurable settings for the end user and to reuse on other sites
    21. 6:04Walking through changes after adding configurable settings
    22. 2:14Why it's better to use a function for settings instead of direct variables
    23. 3:24What still needs to happen to allow end users to manipulate data on our site
    24. 3:19Creating the database and users table for our next steps
    25. 1:38Demo of our CMS login form
    26. 5:42Adding our database connect script, notices function and login links
    27. 3:52How our login and logout features work
    28. 2:18Demo of our new edit, delete and add user features
    29. 0:48Reviewing changes in our login form
    30. 6:53What happens in our updated CRUD code when we submit a user edit form
    31. 5:52What happens in our updated CRUD code when we add a user
    32. 5:24The problem with using relative or absolute paths in subfolders
    33. 4:23Using a URL function to route all requests to the right location regardless of subfolder
    34. 3:28Creating our products database table and populating it
    35. 2:41Discussing the similiarties that will exist between our product and user administration pages
    36. 1:04Demo of our updated product CRUD script
    37. 4:17Comparing the code in our user and product CRUD scripts
    38. 2:25Reviewing changes in our product rendering code, and how the WHERE IN SQL syntax works
  12. 76:59Generalizing Functionality and Object Oriented Programming Primer
    1. 1:37Why generalizing CRUD functionality makes so much sense
    2. 1:35Setting up the next steps and a demo of our generalized CRUD script
    3. 5:30How to distill CRUD configuration options into an array
    4. 1:25Overview of the functions in our generalized CRUD script
    5. 6:09How to create a generalized record listing function
    6. 6:51How to build a generalized CRUD edit and add form function
    7. 5:39How to build a generalized CRUD form validation function
    8. 3:46How to create a generalized CRUD form processing script
    9. 1:54Summary of what we've accomplished, and a few challenges
    10. 2:00How to set up a database table to store page data
    11. 5:26Demoing our page administration tools and adding our adding our first pages
    12. 6:00How to load pages from both files and the database
    13. 3:29How to convert file-based pages to database-based pages, and deciding which to convert
    14. 1:16How this split file and database structure relates to Drupal
    15. 3:41What we've accomplished with our CMS, compared to other CMS's like Drupal
    16. 3:07Challenge your new PHP skills with these CMS enhancements
    17. 1:20Why there's no need to be scared of OOP (Object Oriented Programming)
    18. 2:30Demonstration of our new object oriented CRUD code
    19. 2:38The weaknesses of function-based coding, and what objects are in OOP
    20. 3:57How classes, methods, properties and constructors work
    21. 3:29How instantiation works, and comparing our old render function to our new OOP one
    22. 1:39How to use properties in a class
    23. 1:35What extending a class means
    24. 0:26Congratulations on finishing PHP Programming Basics


Add to playlist

Add to , or

Add to new playlist:

Add to playlist
This is a member-only feature
But, it's easy to become a member

Add to cart:

Add to playlist

Add to , or

Add to new playlist:

Add to playlist
Contact us

Below are the supported keyboard shortcuts for our video player.

Start / stop video
Go to next video
Go to previous video
Increase or decrease player speed by 20%
Skip ahead or go back by 15 seconds
Jump to a percentage (2 is 20%, for example)
Toggle full screen
Videos Pricing More Search
BuildAModule Logo Icon BuildAModule Logo Icon
Become a member!
1 month
6 months
10% off
12 months
20% off
All memberships come with the following:
24 / 7 access to the entire 1800+ video library
An innovative video player with a rolling transcript
Extensive Drupal and cross-platform training
A thorough and thoughtful training style
Progress tracking
Take notes on specific video sections
Intuitive multi-user management
How many users?
Go solo with a single user, or give multiple team members access through one account and get discounts by bundling multiple users into a single membership.