Results 1 to 5 of 5

Thread: Session Handling

  1. #1
    Join Date
    Nov 2005

    Session Handling

    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?

  2. #2
    Join Date
    Apr 2005
    Bathurst, NSW, Australia
    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"

  3. #3
    Join Date
    Feb 2005
    Midwest, USA
    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...
    Mitch Conant

  4. #4
    Join Date
    Aug 2005
    i would go with bathurst_guy's option...a lot less problems and bugsome prone
    Last edited by purefan; 11-07-2005 at 06:49 PM. Reason: to modify it duh!

  5. #5
    Join Date
    Feb 2005
    Midwest, USA
    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.

    Good luck!
    Mitch Conant

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
HTML5 Development Center



X vBulletin 4.2.2 Debug Information

  • Page Generation 0.09641 seconds
  • Memory Usage 2,870KB
  • Queries Executed 13 (?)
More Information
Template Usage (32):
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_global_above_footer
  • (1)ad_global_below_navbar
  • (1)ad_global_header1
  • (1)ad_global_header2
  • (1)ad_navbar_below
  • (1)ad_showthread_firstpost_sig
  • (1)ad_showthread_firstpost_start
  • (1)ad_thread_first_post_content
  • (1)ad_thread_last_post_content
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)headinclude_bottom
  • (5)memberaction_dropdown
  • (1)navbar
  • (4)navbar_link
  • (1)navbar_moderation
  • (1)navbar_noticebit
  • (1)navbar_tabs
  • (2)option
  • (5)postbit
  • (5)postbit_onlinestatus
  • (5)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available (6):
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files (26):
  • ./showthread.php
  • ./global.php
  • ./includes/class_bootstrap.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/functions_navigation.php
  • ./includes/class_friendly_url.php
  • ./includes/class_hook.php
  • ./includes/class_bootstrap_framework.php
  • ./vb/vb.php
  • ./vb/phrase.php
  • ./includes/functions_facebook.php
  • ./includes/functions_calendar.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_notice.php
  • ./packages/vbattach/attach.php
  • ./vb/types.php
  • ./vb/cache.php
  • ./vb/cache/db.php
  • ./vb/cache/observer/db.php
  • ./vb/cache/observer.php 

Hooks Called (70):
  • init_startup
  • friendlyurl_resolve_class
  • init_startup_session_setup_start
  • database_pre_fetch_array
  • database_post_fetch_array
  • init_startup_session_setup_complete
  • global_bootstrap_init_start
  • global_bootstrap_init_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • load_show_variables
  • load_forum_show_variables
  • global_state_check
  • global_bootstrap_complete
  • global_start
  • style_fetch
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • strip_bbcode
  • friendlyurl_clean_fragment
  • friendlyurl_geturl
  • forumjump
  • cache_templates
  • cache_templates_process
  • template_register_var
  • template_render_output
  • fetch_template_start
  • fetch_template_complete
  • parse_templates
  • fetch_musername
  • notices_check_start
  • notices_noticebit
  • process_templates_complete
  • friendlyurl_redirect_canonical
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_display_complete
  • memberaction_dropdown
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • build_navigation_data
  • build_navigation_array
  • check_navigation_permission
  • process_navigation_links_start
  • process_navigation_links_complete
  • set_navigation_menu_element
  • build_navigation_menudata
  • build_navigation_listdata
  • build_navigation_list
  • set_navigation_tab_main
  • set_navigation_tab_fallback
  • navigation_tab_complete
  • fb_like_button
  • showthread_complete
  • page_templates