The Ultimate Web Development Course
4.8 (281 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
9,628 students enrolled
Wishlisted Wishlist

Please confirm that you want to add The Ultimate Web Development Course to your Wishlist.

Add to Wishlist

The Ultimate Web Development Course

Learn all the major web technologies in one full stack development project: HTML, CSS, MySQL, PHP, jQuery and AJAX
4.8 (281 ratings)
Instead of using a simple lifetime average, Udemy calculates a course's star rating by considering a number of different factors such as the number of ratings, the age of ratings, and the likelihood of fraudulent ratings.
9,628 students enrolled
Last updated 12/2016
English
Current price: $10 Original price: $195 Discount: 95% off
1 day left at this price!
30-Day Money-Back Guarantee
Includes:
  • 11.5 hours on-demand video
  • 1 Article
  • 14 Supplemental Resources
  • Full lifetime access
  • Access on mobile and TV
  • Certificate of Completion
Have a coupon?
What Will I Learn?
Flexible course design allows for complete beginners or more advanced learners
Learn HTML5, CSS, MySQL, PHP, jQuery and AJAX in one working project
Up-to-date coding standards using mysqli and prepared statements to ensure database security
Instant update website - the most modern web interface
Detailed coverage of programming logic and dynamic website coding processes
Accompanying FREE PDF or Kindle book allows full-text search of the course
View Curriculum
Requirements
  • A computer connected to the internet
  • The ability/permission to download software
  • A text editor (I recommend Komodo Edit, which is free)
  • Enthusiasm!
Description

"This has been one of the best web courses ever. It should be used as a model by almost anyone thinking of teaching on the web. It has cleared out nearly a decade of web programming cobwebs. The fact you have made a course which is complete end-to-end is impressive. The fact that code examples all work puts nearly every programming book and most web courses to shame."
Paul Wolfson, Principal Investigator, Dallas Legal Technology

---------------------------------------------------------------------------------------------------------

"The Ultimate Web Development course is the most user friendly course I have encountered to date. Additionally, the lecturer, Dr. Richard Stibbard is extremely committed and accessible. Oh! If only all the on-line lecturers could take a page from his book."
Urich Wilmot-Hoyte

-----------------------------------------------------------------------------------------------------------

"Solid Full Stack Development course - I have been through numerous other books and courses trying to get up to speed on CSS, JQuery, Ajax, and PHP, and so far this is the most effective. I think there are two keys to it's success. First, the app developed throughout the course is reasonably complex and whether its a particular look in CSS or behaviour in jQuery, it accurately reflects what modern apps really look like. Next, there is enough hands on coding in all the tools that it really begins to stick. HIghly recommended for anyone wanting broad introduction to modern web development that really touches almost all the bases."
Donald Brummel

-----------------------------------------------------------------------------------------------------------

Taught by freelance developer and experienced online educator Dr. Richard Stibbard, this course takes you in easy steps through the entire process of building an up-to-date web interface which updates its database and HTML on the fly without the need for page refreshes, rather like the 'Add to Favourites' function on Youtube or Trivago's hotel search.

You will learn how to:

  • structure a website using HTML5
  • apply styling with cascading stylesheets (CSS)
  • convert a static site to a dynamic one using PHP
  • remove inefficient duplicate code
  • use PHP functions to isolate variables
  • use MySQLi and prepared statements for secure database queries
  • manipulate page content immediately with jQuery
  • update the database silently with AJAX
  • upload the project to a web host and deal with important security considerations.
  • PDF version of the course allows full-text search

The course is equally suitable for beginners or more advanced students. For beginners there are step-by-step instructions which take you through every step of the project until all the principles have been covered, and then hand over to assignments which allow you to put into practice what you have learned before you see the solutions.

For learners already familiar with some aspects of web design and development who want to move onto specific points more quickly, incremental working files and clear guidance are provided at every stage, allowing you to skip lessons you do not need and rejoin the course at any point without losing track of the necessary code.

With studio quality audio, widescreen HD video, and incremental versions of the source code, this efficiently organized course teaches up-to-date coding techniques and gives comprehensive coverage of an important aspect of modern web development.

Who is the target audience?
  • Anyone interested in web design and development
  • No prior knowledge needed
Students Who Viewed This Course Also Viewed
Curriculum For This Course
Expand All 136 Lectures Collapse All 136 Lectures 11:53:14
+
Course Introduction
2 Lectures 07:50

Build an instant update database interface with jQuery/AJAX

Preview 07:22


Working Files, eBook and Bookmarks
00:28
+
Komodo Text Editor
3 Lectures 11:44
Komodo Edit is an excellent code editor with many useful features such as intelligent code completion.

This chapter takes you through the process of downloading and installing Komodo Edit, which I use because I like its code completion and syntax highlighting features as well as its preview pane.

If you already have a code editor you like, then feel free to skip this chapter and use your preferred editor for the project.
Preview 02:28

Download Komodo Edit from http://komodoide.com/komodo-edit/

Download Komodo Edit
02:38

Setting up Komodo Edit with my custom syntax highlighting scheme for more vivid syntax highlighting than the default scheme.
Configure Komodo Edit
06:38
+
Local Webserver Installation
6 Lectures 21:21

XAMPP is the most popular local webserver package and has versions for Windows, Mac OS, Linux and Solaris.

Preview 02:40

Step-by-step instructions on downloading and installing XAMPP on a Windows PC.

If you get the error message:

Apache shutdown unexpectedly. This may be due to a blocked port, missing dependencies, improper privileges, a crash, or a shutdown by another method. Press the Logs button to view error logs and check the Windows Event Viewer for more clues

then another program, most commonly Skype, is blocking port 80.

Carry out the following steps to solve the problem:

  1. Start Skype, go to Tools > Options > Advanced > Connection and uncheck “Use port 80 and 443 as alternatives for incoming connections”.
  2. Shut down Skype.
  3. Start up the XAMPP control panel by clicking on c:\xampp\xampp-control.exe.
  4. Check the boxes to set both Apache and MySQL as services.
  5. Restart Windows.

If this does not work, or you do not have Skype installed, carry out the folllowing steps:

  1. Start the XAMPP control panel by clicking on c:\xampp\xampp-control.exe.
  2. Cick on the ‘Config’ button next to Apache and select ‘httpd.conf’ to open the config file in a text editor.
  3. In ‘httpd.conf’, find the line ‘Listen 80′ and change the number to another number, e.g. 86.
  4. In XAMPP control panel, click ‘Stop’ next to Apache, wait for the button to change to ‘Start’ and then click it to restart Apache.
  5. Check the boxes to set both Apache and MySQL as services.

Apache and MySQL should now start automatically and without conflicts.

Preview 03:53



The timezone for the Apache server is set by default to Berlin time. In this lesson we use the XAMPP Control Panel to change it to your local timezone.

Change Server Timezone (Optional)
02:19

A look at the XAMPP tools and phpMyAdmin. We will use phpMyAdmin much more later on in the course.
XAMPP Tools and phpMyAdmin
01:46
+
Bare Bones HTML5
4 Lectures 24:48
An introduction to some of the new semantic elements in HTML5.
Preview 04:44

Writing the document structure for our index file, the movies list page.
Bare bones HTML - Movies List Page
12:20

Writing the HTML document structure for the single movie page.

Bare Bones HTML - Single Movie Page
02:18

Writing the HTML document structure for the generic admin page.

Bare Bones HTML - Admin Page
05:26

Test your knowledge of HTML.

Test your HTML
3 questions
+
Styling with CSS
14 Lectures 01:50:06

Before we begin styling, we need to strip out all default styles using a CSS reset stylesheet.
CSS Reset
04:39

We use classes and IDs to distinguish HTML elements for styling and functional purposes respectively.

Styling with Classes and IDs
04:00

We add class names to index.html to distinguish the various parts of the page for later styling.
Applying Classes to index.html
06:51

We write the styles to create the basic box layout for index.html.
Box Layout
10:56

Internet Explorer versions 8 and below does not support the new HTML5 elements and garbles our box layout. We solve this by using two scripts, html5-shiv and html5-printshiv.

NB - the link to HTML5Shiv has moved to cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js so please make this change in your version of the project.

HTML-shiv for IE8
05:35

Adding the styles for the header and the users and admin navigation lists.
Styling the header and top navigation
12:33

Adding the styles for the favourites and movie list panel
Styling the favourites and movie list panel
13:04

Adding the styles for the footer.

Styling the footer
05:32

Adding the styles for the single movies page. This time you write the style selectors before I give them to you.
Styling the single movie page
08:19

The style selectors for the admin pages - you write the selectors and try to write as many of the style declarations as you can before I give you the answers.
Styling the admin pages
20:34

Using a CSS sprite for all or nearly all the background images in a website speeds up page loading by reducing the number of HTTP requests and allowing browsers to used access the image from the cache.
Creating background images with a CSS sprite
09:17

Before going on we need to check that the web pages we have written display properly in the various different browsers. I develop in Firefox and check in Opera, Chrome, Safari, and IE 10, 9 and 8.
Cross-browser compatibility check
01:37

Validate HTML
01:36

Test your knowledge of CSS

Test your CSS
3 questions
+
Essential PHP
13 Lectures 01:29:20

‘PHP’ stands for ‘PHP – Hypertext Pre-processor’. Ordinary HTML provides the static framework of a website while PHP gets data from a database to provide dynamic, ever-changing, content.

Preview 02:02

PHP is desgined to work in combination with HTML. This video demonstrates various ways in which the two can be combined to display strings, variables, and HTML tags.
Combining PHP and HTML to display strings, variables, and HTML tags
14:45

Sometimes quote marks are themselves part of the string we want to display. We then need to escape these characters so they do not interfere with the syntax of our PHP code.
Echoing quote marks - String delimiters
04:49

Conditions are at the heart of all computer programs - they allow our code to do entirely different things depending on the data received.
PHP Conditions
06:14

'Switch' is an alternative to 'if' clauses when there are multiple values to check.
Switch ... case
02:37

Many programming tasks involve large amounts of repetition, which computers perform well, while humans do not.
PHP Loops
04:32

Including files within a "parent" file makes our code much more efficient and easier to manage.
PHP Includes
07:50

Arrays are a type of variable which contains sets of multiple values in a structured list, allowing us to organise related collections of data.

Arrays
21:27

How to get user input passed in the browser address bar.
Passing variables in the URL
06:09

User input can also be passed less pubicly so that it does not appear in the browser address bar.
Passing variables without their appearing in the URL
04:54

Making sure our program fails gracefully if user input is missing.
Guarding against missing variables
04:14

We use functions to keep our variables from getting out of control.

Functions and variable scope
04:27

Using parameters to pass data into functions.
Passing data to functions with parameters
05:20

Test your knowledge of PHP

Test your PHP
4 questions
+
MySQL in phpMyAdmin
8 Lectures 41:27

A database  is a structured collection of records, organised in tables, each record consisting of a number of fields. Relational databases use linking tables to make links between tables without duplication of data.

What is a Database
06:44

Using phpMyAdmin to create a new database and add tables to it.

Create a database, add tables
06:15

The SQL INSERT query.
Insert data
09:11

How to import data from an external SQL file to a database using phpMyAdmin.
Import data
04:38

Using SQL queries in phpMyAdmin to display records from a database table.

Select records
04:30

The SQL query in phpMyAdmin to update an existing record in the database.

Update existing database records
02:25

The more complex SQL select query we will later use to select favourite movies based on two criteria.
Select favourites
04:09

The SQL query DELETE FROM.
Delete records, empty and delete tables and database
03:35
+
MySQL in PHP
8 Lectures 45:14
Connecting to a MySQL database in a PHP script.
Initialise and connect to a database with mysqli
13:33

How to return all the records from a database using SQL embedded in PHP.

If you get the error "Call to a member function on a non-object", then there is a mismtach between the database column names you have supplied in the PHP and those you have actually used in the table. Double check that you have not, for instance named a column `first_name` when it should be `firstname`.

Backticks (` `), for which the key on a UK/US keyboard is at the top left next to the key for '1', can be used to enclose column names if there is a danger that you have used MySQL reserved words to name database columns. To do so is not good practice and should be avoided. As long as your database column names have no special meaning in MySQL, you do not need to enclose them in backticks.

Select all records from a database
06:58

How to display database records which match a pattern supplied by the user.
Select matching records using WHERE ... AND
04:11

This lesson demonstrates how to display all the data from a database without any valid login credentials. This is done by entering a snippet of PHP code into a login form in such a way that the logic of the SQL query is altered.
SQL injection demonstrated
02:48

SQL injection can be prevented by escaping user input so that it is impossible to tamper with the logic of the SQL query.
Combating SQL injection with mysqli real_escape_string
02:25

A better way to prevent SQL injection is to use prepared statements, which prevents user input from interfering with the SQL query.
Combating SQL injection with prepared statements
07:13

Making use of code written earlier, we build a simple PHP interface to add data to the database.
Add data through PHP interface
03:50

You adapt the code from the previous lesson to DELETE instead of INSERTing data.
Delete data through PHP interface
04:16
+
From static HTML to dynamic PHP
31 Lectures 02:24:57
Follow the lessons for this chapter in as much detail as you feel you need - after a while you may want to skip ahead using the Working Files if you find I am going too slowly.

I recommend that you complete all the four assignments yourself, however, to check on and reinforce your learning.
Preview 01:48

Duplicated code is inefficient and difficult to manage. In this lesson we move all duplicated code to included files which means they can be re-used throughout the whole project and any edits made in them take effect across the whole site.
Efficient, reusable code with PHP includes
09:38

Using PHP includes we create a single parent page which generates either a single movie or a list of movies according to whether a movie is chosen in the URL.

One index file for single movie and movies list
09:06

Using the same principle, we create a single parent page which generates both the movies and the users admin pages.
One admin file for users and movies admin
06:36

Reusing code from the previous chapter, we connect to the 'movies' database.
Initialise and connect to the favourite movies database
02:53

In the navigation include file, we replace dummy links with the list of movie-goers drawn from the database.
Displaying dynamic data - the list of users
09:21

As the values of variables set in include files are available everywhere in the project, variable conflicts can occur. Using functions solves this problem.
Convert users list to function
10:19

Setting include paths in the parent files, index.php and admin.php, obviates the need to specify the path names of include files and functions.

Set include paths in parent files
02:11

This function tests whether a valid user_id is set in the URL and returns a code accordingly.
User navigation - test if valid user set
06:09

We pass the code returned by the test users function to the show users function, making it possible to display different user lists according to whether or not a user_id is selected.
Set parameters for show users function
03:42

Parameters set in navigation.inc.php tell show-users.fn.php which sets of movie-goer data to display to form the complete user navigation menu.
Parameterised show users function
08:18

The program alerts the user in the event that a user id is not entered, or one is entered which does not match any records, or a non-numerical id is given.
Catching missing and invalid user_id
04:57

Your first major assignment - apply your knowledge to write the code to display the list of favourite movies as a formatted list.
ASSIGNMENT: Write the favourite movies display function
1 page

The answer to the assignment - the code for the favourite movies display function.
The favourite movies display function
07:36

Adapt the code you have just written, and combine it with the plain HTML from earlier, to produce the main list of non-favourites with thumbnail images and formatting.
ASSIGNMENT: Write the non-favourites display function
1 page

Following the same procedures, we go through the process of building the non-favourites list.
The non-favourite movies display
07:26

Inserting a personal greeting is a simple matter of adding a new 'case' to the showUsers() function.
Insert personal greeting on movie list page
02:39

The showMovies() function is adapted to display the single movie page.
The single movie display
02:04

The principles used to catch errors in the user_id input are applied to the movie_id.
Catching missing and invalid user input - movie_id
06:44

We need to complete our error catching by coping with the possibility that database tables are empty. In this lesson we display an alert message and the movie-goers admin page if there is no data in the movie-goers table.
Catching empty movie-goers table
05:31

Adapt the code we have just written to produce an alert message and display the movies admin page if the movies database table is empty.
ASSIGNMENT - Catching empty movies table
1 page

Applying the methods used earlier, we catch for the possibility of an empty movies database table.
Catching empty movies table
03:14

It is a simple task to produce a custom title for the Favourites list when the list is empty.
Data-dependent title for favourites list
04:48

Following the same procedure, add a different message at the top of the list of movies according to whether there are any movies in the list or not.
Data-dependent welcome in movie list display
03:47

We need a new function to check whether or not the selected movie is a favourite of the selected user and display the appropriate link, "Add to favourites" or "Remove from favourites". You have done everything you need to write this function.
Data-dependent link on single movie page
03:32

ASSIGNMENT – Putting dynamic data into the movie admin table
1 page

Change dummy data in the movies admin table to dynamic data.

Dynamic data in movies admin table
02:57

Change dummy data in the movie-goers admin table to dynamic data.
Dynamic data in users admin table
04:02

Re-check the pages in the various browsers.
Check again for cross-browser compatibility
01:24

Re-check our HTML at the W3C validation service.
Validate HTML
02:00

Format HTML source
12:15
+
Essential jQuery and AJAX
10 Lectures 53:29
A brief introduction to jQuery and the link to jQuery at Google CDN.
Preview 04:56

If you already have Firebug installed in Firefox, skip this lesson. Otherwise, install Firebug from www.getfirebug.com.

Install Firebug
01:06

Basic jQuery syntax: selector - event - action.
Basic jQuery syntax
04:44

If the selector for the event and the selector for the action are the same, use $(this) for the action instead of repeating the selector name.
The $(this) selector
02:13

To target elements just added by jQuery we have to use the event handler ‘on’: $(document).on('event', 'selector', function()

Add/remove class and the dynamic event handler 'on'
04:21

Retrieve attributes from HTML IDs and use them to set variables in jQuery to target unique page items.
Retrieving and using HTML attributes
09:55

Our project features a one-way drag-and-drop interface - the user drags movie titles from the favourites list to the trashcan to remove them from favourites. This lesson shows how to build a simplified version of the visual effect for this.
One-way drag-and-drop effect using jQuery UI
06:50

JQuery alone does nothing to the database – to alter database records we must use a PHP script and pass variables to it using an AJAX call.

AJAX - Update database in the background with no page refresh
11:14

ASSIGNMENT - The drag-to-delete AJAX call and PHP script
1 page

Adapting the click-to-add AJAX call to make the drag-to-delete equivalent appears simple, but there are two problems to be overcome: enabling jQuery on newly added DOM elements and preventing event-bubbling.

The drag-to-delete AJAX call and PHP script
08:10
3 More Sections
About the Instructor
Richard Stibbard
4.8 Average rating
281 Reviews
9,628 Students
1 Course
Web Developer and Online Educator

I have been working in web development since 2006, building custom database-driven websites from scratch, as well as customizing Moodle sites. Before that, I was a lecturer at the University of Surrey, where I specialized in distance education through the online learning platform WebCT Vista (later Blackboard).

I thus bring to Udemy a wealth of expertise not just in the technical aspects of the course, but also the educational side of online learning. My aim is to deliver courses of supreme clarity which are suitable for a range of learners, and which make learning a pleasure for all my students.