The Ultimate Web Development Course

Learn ALL the major web development technologies in one working project: HTML, CSS, MySQL, PHP, jQuery and AJAX
  • Lectures 134
  • Video 12 Hours
  • Skill level all level
  • Languages English
  • Includes Lifetime access
    30 day money back guarantee!
    Available on iOS and Android
    Certificate of Completion

How taking a course works

Discover

Find online courses made by experts from around the world.

Learn

Take your courses with you and learn anywhere, anytime.

Master

Learn and practice real-world skills and achieve your goals.

Course 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.

What are the requirements?

  • A computer connected to the internet
  • The ability/permission to download software
  • A text editor (I recommend Komodo Edit, which is free)
  • Enthusiasm!

What am I going to get from this course?

  • Over 134 lectures and 11.5 hours of content!
  • 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

What is the target audience?

  • Anyone interested in web design and development
  • No prior knowledge needed

Curriculum

Section 1: Course Introduction
07:22

Build an instant update database interface with jQuery/AJAX

Text


Section 2: Komodo Text Editor
02:06
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.
01:37

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

03:54
Setting up Komodo Edit with my custom syntax highlighting scheme for more vivid syntax highlighting than the default scheme.
Section 3: Local Webserver Installation
02:41

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

05:51

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.

02:19

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.

01:12
A look at the XAMPP tools and phpMyAdmin. We will use phpMyAdmin much more later on in the course.
Section 4: Bare Bones HTML5
04:44
An introduction to some of the new semantic elements in HTML5.
12:20
Writing the document structure for our index file, the movies list page.
02:18

Writing the HTML document structure for the single movie page.

05:26

Writing the HTML document structure for the generic admin page.

Test your HTML
3 questions
Section 5: Styling with CSS
Introduction to Styling with CSS
Preview
05:33
04:39
Before we begin styling, we need to strip out all default styles using a CSS reset stylesheet.
04:00

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

06:51
We add class names to index.html to distinguish the various parts of the page for later styling.
10:56
We write the styles to create the basic box layout for index.html.
05:35
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.
12:33
Adding the styles for the header and the users and admin navigation lists.
13:04
Adding the styles for the favourites and movie list panel
05:32

Adding the styles for the footer.

08:19
Adding the styles for the single movies page. This time you write the style selectors before I give them to you.
20:34
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.
09:17
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.
01:37
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.
Validate HTML
01:31
Test your CSS
3 questions
Section 6: Essential PHP
02:02

‘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.

14:45
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.
04:49
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.
06:14
Conditions are at the heart of all computer programs - they allow our code to do entirely different things depending on the data received.
02:37
'Switch' is an alternative to 'if' clauses when there are multiple values to check.
04:32
Many programming tasks involve large amounts of repetition, which computers perform well, while humans do not.
07:50
Including files within a "parent" file makes our code much more efficient and easier to manage.
21:27

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

06:09
How to get user input passed in the browser address bar.
04:54
User input can also be passed less pubicly so that it does not appear in the browser address bar.
04:14
Making sure our program fails gracefully if user input is missing.
04:27

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

05:20
Using parameters to pass data into functions.
Test your PHP
4 questions
Section 7: MySQL in phpMyAdmin
06:44

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.

06:15

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

09:11
The SQL INSERT query.
04:38
How to import data from an external SQL file to a database using phpMyAdmin.
04:30

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

02:25

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

04:09
The more complex SQL select query we will later use to select favourite movies based on two criteria.
03:35
The SQL query DELETE FROM.
Section 8: MySQL in PHP
13:33
Connecting to a MySQL database in a PHP script.
06:58

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.

04:11
How to display database records which match a pattern supplied by the user.
02:48
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.
02:25
SQL injection can be prevented by escaping user input so that it is impossible to tamper with the logic of the SQL query.
07:13
A better way to prevent SQL injection is to use prepared statements, which prevents user input from interfering with the SQL query.
03:50
Making use of code written earlier, we build a simple PHP interface to add data to the database.
04:16
You adapt the code from the previous lesson to DELETE instead of INSERTing data.
Section 9: From static HTML to dynamic PHP
01:48
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.
09:38
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.
09:06

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.

06:36
Using the same principle, we create a single parent page which generates both the movies and the users admin pages.
02:53
Reusing code from the previous chapter, we connect to the 'movies' database.
09:21
In the navigation include file, we replace dummy links with the list of movie-goers drawn from the database.
10:19
As the values of variables set in include files are available everywhere in the project, variable conflicts can occur. Using functions solves this problem.
02:11

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.

06:09
This function tests whether a valid user_id is set in the URL and returns a code accordingly.
03:42
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.
08:18
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.
04:57
The program alerts the user i</b>n 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.
1 page
Your first major assignment - apply your knowledge to write the code to display the list of favourite movies as a formatted list.
07:36
The answer to the assignment - the code for the favourite movies display function.
1 page
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.
07:26
Following the same procedures, we go through the process of building the non-favourites list.
02:39
Inserting a personal greeting is a simple matter of adding a new 'case' to the showUsers() function.
02:04
The showMovies() function is adapted to display the single movie page.
06:44
The principles used to catch errors in the user_id input are applied to the movie_id.
05:31
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.
1 page
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.
03:14
Applying the methods used earlier, we catch for the possibility of an empty movies database table.
04:48
It is a simple task to produce a custom title for the Favourites list when the list is empty.
03:47
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.
03:32
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.
ASSIGNMENT – Putting dynamic data into the movie admin table
1 page
02:57

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

04:02
Change dummy data in the movie-goers admin table to dynamic data.
01:24
Re-check the pages in the various browsers.
02:00
Re-check our HTML at the W3C validation service.
Format HTML source
12:15
Section 10: Essential jQuery and AJAX
04:56
A brief introduction to jQuery and the link to jQuery at Google CDN.
01:06

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

04:44
Basic jQuery syntax: selector - event - action.
02:13
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.
04:21

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

09:55
Retrieve attributes from HTML IDs and use them to set variables in jQuery to target unique page items.
06:50
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.
11:14

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.

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

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.

Section 11: jQuery effects and AJAX interaction
07:06
A few minor changes to the style selectors are needed to adapt our Javascript files to work in the project.
02:02
The jQuery class manipulator toggleClass() allows us to switch a class attribute on and off as the mouse moves over and off a page element. We use this for the heart icon on the click-to-add div.
07:05
Adapt add-favs.js to work with the HTML of the project.

Instructor Biography

Dr Richard Stibbard , 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.

Reviews

Average Rating
4.8
Details
  1. 5 Stars
    49
  2. 4 Stars
    3
  3. 3 Stars
    0
  4. 2 Stars
    0
  5. 1 Stars
    2
    • Bryan Joseph

    The Ultimate web development course is awesome!

    First I have to 12 years of intense experience with ASP.NET Web Application development. Using C Sharp, HTML, JavaScript, AJAX, CSS and Microsoft SQL Server (RDBMS). But I was not prepared for what I was about to learn using XAMPP, JavaScript, HTML, CSS etc. Dr. Richard Stibbard is truly a teacher, who explains every detail with clarity and precision. To develop web applications with PHP and MySQL is truly a breath of fresh air. This will make me more versatile in the work environment, I can now provide my customers with multiple web application solutions and software platforms to choose from. The course is well thought out from simple HTML to complex web pages with interactive styling using CSS3 and JavaScript and all data being stored in your own RDBMS (MySQL). Finally, the lessons are view through Flash player and is of the best quality resolution available for all audiences. What makes it so good it that I can watch and rewind at my own pace until I fully satisfied on what is being taught. Can wait to finish the rest of the course

    • Abdulkadir Gelle

    The Ultimate Web Development Course

    The best course ever. What a teacher!.

    • Luis Vargas

    Don't waste your money or time

    This is the most boring course I have ever payed for. The instructor waste lectures talking rubbish instead of practicing. This is not a beginners course, it is a 'for dummies'.

    • J.C. Amitie

    Well organized and thought-out

    More than halfway through now and very pleased with the course. It's very well organized and everything is presented in orderly fashion to build on concepts already introduced. it's super nice that there are completed files at the end of various sections throughout the course so if yours aren't working you can compare and contrast and see where you went wrong. Great learning experience and Dr. Stibbard is a great teacher.

    • Heather Dinham

    Extremely well constructed and comprehensive course

    A lot of effort has gone into the production of this course. Unlike many on-line courses it doesn't simply involve watching the instructor code but contains a mixture of theory, demonstration and assignments. Richard is clearly a very experienced instructor.

Show more reviews

What you get with this course

30 day money back guarantee

Lifetime access

Available on desktop, iOS and Android

Certificate of completion

Join the biggest student community

5,400,000

Hours of video content

21,000,000

Course enrollment

6,300,000

Students

Ready to start learning?
Preview this course