I've developed a shopping cart with PHP and MySql which works fine. Once an item is added to the cart it is withdrawn from the database instead of leaving the withdrawing till the checkout stage. This avoids shoppers all choosing an item that may be the last in stock. The only problem is if the shopper that has the item in their cart decides not to buy and leaves the site without removing the item from the cart or the session times out, the item hasn't been purchased but also hasn't been put back in the database. What can i do to get round this?
hmm, maybe only remove the item from the database when they purchase, and if there is one item, and 2 people have it in their carts, first in best dressed. Its a much easier option from you point of view, a lot less hassle. And if the other person happens to miss out, either have a little note telling them that "unfortunately that item is not in stock at the moment, please allow for a further 2 days postage time"
Just to get the discussion started (I've never done this, but have read about it)...
You can take control of your sessions to the point of storing all of the data in a MySQL table. To do this, you have to write all of your own session handling procedures; Open, Read, Write, Close, Destroy and Garbage Collection. When you write these procedures, you can utilize an external DB, in fact that's why the function was created (I've heard).
You might be able to allocate the inventory when they put it in the shopping cart and through use of the destroy or the GC function, if the session ends with "stuff" in the shopping cart, deallocate it back to your inventory.
To get you started look here, then go look at some of the O'Reilly PHP books. I know they have some examples, one of them is a Wine Store in the book's appendix on using a DB to store Session Data.
Hope this gets you started thinking in a new direction...
i would go with bathurst_guy's option...a lot less problems and bugsome prone
Last edited by purefan; 11-07-2005 at 05:49 PM.
Reason: to modify it duh!
bathhurst_guy and purefan are right, the easiest way to implement is just to let the customer put it in their basket and then at checkout, if you are out Oops, sorry I'll have it for you in a few days.
That'll work depending on how forgiving your customers are and what your corporate philosophy is toward Customer Service is. I have been with "World Class" companies where customer surprises like that wouldn't float in any system, electronic or paper.
bathhurst_guy and purefan are correct in one thing; managing your cookies this way is not a trivial task. It will take alot of blood sweat and tears. You need to ask yourself or your company, "what is acceptable?" That will help to guide your decision. Grab onto the simplest solution that will suffice and run with it. There is something to be said for simplicity, especially when having to debug. You have two options that are viable, the decision is yours.
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)