Learn how to create your very own E-commerce application with Object Oriented PHP, MySQL, Ajax and PHP. This series introduces Object Oriented Programming with PHP - you will learn what Classes and Methods are and how to use them in order to build your own application. It explains how to create Ajax based shopping basket, which will allow you to add and remove products form the basket without reloading the page. You will also learn how to use PayPal in order to process payments and Instant Payment Notification with the update of the payment status made by the client. At the end of this series you will have a fully featured E-commerce system!
Over 14.5 hours : 210 videos : 24 chapters
Time: 877:36 min / Price: £120.00
Sebastian Sulinski on 15th Dec 2010




Ubaldo on Saturday, 17th September 2011
Hi Sebastian,
great work and thank you for the tutorial that you created, has been very helpful to have a better idea on the workflow to be addressed.
Reply
Sebastian Sulinski : @designtutorials on Saturday, 17th September 2011
Thanks Ubaldo - glad you enjoyed it.
Reply
Gordon Jeffrey : @jeffreycomputin on Thursday, 22nd September 2011
Awesome example. Clearly explained and very well constructed. The follow up service has been excellent too. Well worth the money. Sebastian, your site is now on my favourites bookmark. :-)
Reply
Sebastian Sulinski : @designtutorials on Thursday, 22nd September 2011
Thanks Gordon - much appreciated!
Reply
Qaysar Akbar on Thursday, 10th November 2011
Hi Sebastian,
I was wondering if it is possible to add ajax to the Login and Register process.
A little scroller and message displaying 'Processing....Please wait' would be a nice feature.
Is the class easy to upgrade or does it require alot of modification??
As always a very nice and brilliant done tutorial.
Thank You
Kind Regards
Reply
Sebastian Sulinski : @designtutorials on Sunday, 13th November 2011
Hi Qaysar,
It's not much of a PHP class, but JavaScript behaviour as you would have to use Ajax in order to do it this way. You could use this tutorial in order to convert the Login and Registration forms to Ajax based : http://www.ssdtutorials.com/tutorials/series/web-form-jquery-ajax-php.html.
When you submit the form - before posting form values to the PHP script, you would simply replace the form with the animated gif or message like 'Processing...' and you could do it in two ways.
One way would be to have form and the message / gif on the page already - where message would be hidden. When the form is submitted, you hide the form and show the message using jQuery's show() and hide() methods.
The other approach would be to replace the form with the message using replaceWith() method - whatever suits you best.
I would most probably use the first approach - as with the animated gif it would pre-cache it when the page first loads.
I hope this answers your question.
Reply
Qaysar Akbar on Wednesday, 16th November 2011
The way the validation is done on these forms is totally different as the one in the E-Commerce tutorial, which is split into a few files:
Would the whole structure of how the validation is being called need to change?
Kind Regards
Reply
Sebastian Sulinski : @designtutorials on Wednesday, 16th November 2011
Hi Qaysar,
Not necessarily the whole structure - you just have to use these classes inside of the file that's processing the ajax request - using exactly same approach. The only difference would be the outcome. You would echo the JSON array using json_encode() to pass values back to the JavaScript. It would contain either array of errors or successful message.
Reply
Keshav Naidu on Thursday, 17th November 2011
You are really Awesome man !
Reply
Sebastian Sulinski : @designtutorials on Thursday, 17th November 2011
Thanks Keshav.
Reply
Rakesh Singh on Saturday, 31st December 2011
Hi Sebastian,
I am interested in buying this series but I have a few questions.
I had a look at the titles of the tutorials and wanted to ask if the following features are covered within this tutorial as I could not see the reference to them.
1) Order status updates
2) Email customer when they place an order
3) Email customer on status updates
4) How easy is it to change the type of products being sold as I viewed your introduction video and if I wanted to change it to like shoes or clothes how would the size(s) be added to this
5) Is the index page blank, static or dynamic
Thanks
Reply
Sebastian Sulinski : @designtutorials on Saturday, 31st December 2011
Hi Rakesh,
Let me answer your questions one by one:
1. Order status updates
When the order is placed it will automatically display in the control panel under the Orders section where you can click on the View link in order to preview it as well as chance its status (i.e. Pending, Processing, Dispatched etc.) and put some additional notes, which are only for the administrative purposes.
2. Email customer when they place an order
At the moment system does not send email to the client confirming the order, but this can be easily done with the Email class built during this series, which has all of the methods necessary to send an email for whatever purpose.
3. Email customer on status updates
We do not send status update to clients by email due to the fact that if someone would change the status by mistake and then change it back - it would automatically trigger two emails to the client. You can also add this feature using the Email class.
4. How easy is it to change the type of products being sold as I viewed your introduction video and if I wanted to change it to like shoes or clothes how would the size(s) be added to this
Changing category of the product is as easy as selecting different category from the dropdown menu, however, we do not use attribute sets with categories, therefore there won't be any other changes with regards to the product specification. All attributes have to be included in the product description with this specific system.
5. Is the index page blank, static or dynamic
It's a static page where you would type the content directly in the file, however, once you've completed the entire project you should easily be able to create another module for page management.
I hope this answers your questions.
Reply
Rakesh on Saturday, 31st December 2011
Hi Sebastian,
I was hoping you had a solution for the comment I placed on this tutorial the other day.
Thanks
Reply
Sebastian Sulinski : @designtutorials on Saturday, 31st December 2011
Hi Rakesh,
Sorry - which comment exactly?
Reply
Athar Khan on Thursday, 26th January 2012
hi Sebastian,
I am your fan since I've bought this tutorial, buddy you are awesome.
I have one question which is unrelated to this tutorial but I wish if you could create another tutorial on my query. I want to know how can I hide URL of the flash files, if at some point I would want to create online tutorials like you and I dont want the URL of the files to be known. Similarly, like I am subscribed to this tutorial but I cannot see the URL of each tutorial file.
I hope you can help me understand this.
Thank you
Athar
Reply
Sebastian Sulinski : @designtutorials on Thursday, 26th January 2012
Hi Athar,
To embed flash videos the way it is done on our website you can use the free jQuery plugin from here: jQuery Tools Flashembed. It's pretty straight forward and nice method of embeding flash videos without having a lot of code displayed directly on the page.
Reply
Maxime Trudel : @pingouincrea on Saturday, 11th February 2012
Hi Sebastian, I have a quick question for you. I would like to use the e-commerce tutorial for my projects but where I live there are 2 taxes - one over order (subtotal ->tax 1 -> subtotal 2 -> tax 2 = grand total) is there anyway to do that with your tutorial?
thx
Great job
Reply
Sebastian Sulinski : @designtutorials on Saturday, 11th February 2012
Hi Maxime,
The system as it stands only accepts one tax rate. To have multiple tax rates you would have to have a separate table with tax rates and then assign the relevant tax rate to each product in the control panel. Once each product has its own tax rate, you'll be able to calculate the total tax in the basket based on product's total and tax rate associated with it.
If your tax rate is based on the sub-total of the order then you'd have to simply change the tax rate if the sub-total is over the specific amount - all this can be easily done in the Basket class created in this tutorial.
Reply
elie on Friday, 24th February 2012
Hi sebastian
I was wondering before purchasing the course , if i will build my project based on your style , but i want to seel digital goods , like a video library , but users has to pay each month , how can i remind the users 5 days before the end of their registration that they have to pay again ?
Reply
Sebastian Sulinski : @designtutorials on Friday, 24th February 2012
Hi Elie,
The best way to achieve this would be to set up a Cron job on the server in order to execute specific PHP file, which would check whether the user's renewal is due and trigger an email if so.
There are many tutorials out there on how to set up Cron jobs and most of the hosting control panels have specific tools to interact with the crontab so you don't have to use shell in order to save your changes.
The way to do it on the database and form within the PHP would be to add new field to the users table called for instance 'renewal_date'. This field would always store the date the renewal is due. Say someone has just registered and purchased the subscription - once subscription has been approved by PayPal, you would update this field with the value of the today's date plus 1 month - and you could do it using SQL statement like so:
Or by using Month keyword:
Then to check (which would be triggered by cron) you could use the following statement:
This would give you the record of the specific user, where you'd have an additional field called renewal.
This field would indicate whether the user needs to renew his account or not - 1 would stand for true and 0 for false.
Based on this result you could trigger an email to the client informing about the renewal being due and de-activate user's account if necessary.
I hope this answers your question.
Reply
Nawaf on Friday, 16th March 2012
That is one of the most enjoyable and beautiful tutorials I have ever watched , the really basic thing it lacks is an advanced search form for visitors that includes basic search choices like:
1- Keyword search box
2- Brand name drop-down
3- Price range (Min-Max) drop-down
4- Date added range drop-down
And some sort of buttons to be clicked to arrange products by date added and price.
I wish Sebastian complete that unique tutorial with add-on series that include adding those basic useful things in every online e-store, that will be really appreciated, and thanks to you Sebastian you have really filled a big gap with your beautiful works.
Reply
Sebastian Sulinski : @designtutorials on Friday, 16th March 2012
Hi Nawaf,
I'm currently working on the add-on for E-commerce system, which explains how to amend the Url class in order to create static looking urls and how to add meta tags. Once I'm finished with this one I'll start on the search form. Thanks for the suggestion!
Reply
Nawaf on Monday, 16th April 2012
Hi Sebastian, can I get a little help here please, I am getting this warning about timezone setting:
"Warning: strtotime() [function.strtotime]: It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'America/Los_Angeles' for '-7.0/DST' instead in D:\UwAmp\www\classes\Helper.php on line 75"
How can I use "date_default_timezone_set()" function to set timezone to match a specific country's timezone, like "date_default_timezone_set(Asia/Bahrain)" ?
Reply
Sebastian Sulinski : @designtutorials on Monday, 16th April 2012
Hi Nawaf,
Yes - if you place the following right at the beginning of your index.php file that should solve the problem:
date_default_timezone_set("Asia/Bahrain");Reply
Nawaf on Monday, 16th April 2012
Thanks it worked, I added date_default_timezone_set('Asia/Bahrain'); after
Reply
Sebastian Sulinski : @designtutorials on Monday, 16th April 2012
Great - it should usually be right at the top or somewhere at the top of your script as it sets the default time zone for your whole application.
Reply