Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

master products, add multiple slaves, with qty.


MysterRogers

Recommended Posts

I have an oscommerce website I am working on and would like to be able to have a visitor be able to add multiple items to their cart at once. I am close to making this happen but I am hung on a few details. I was hoping someone out there might be willing to offer some assistance.

 

I am using the master product by galen contribution. The snippets of code below work, but I am only able to add the last slave product in the listing. I want to be able to add them all and have them submitted to the cart with only one button if possible.

 

Here is a sample of the code from slave_listing.php that I belive is where the problem lies.

 

<?php
/*
 $Id: SLAVE_LISTing.php,v 1.44 2003/06/09 22:49:59 hpdl Exp $

 osCommerce, Open Source E-Commerce Solutions
 http://www.oscommerce.com

 Copyright (c) 2003 osCommerce

 Released under the GNU General Public License
*/
//mymod
 $list_box_contents = array();
 $list_box_contents[] = array('params' => 'class="productListing-heading"');
 $cur_row = sizeof($list_box_contents) - 1;

 for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
   switch ($column_list[$col]) {
     case 'SLAVE_LIST_MULTIPLE':
       $add_multiple = "1";
       echo '<form name="buy_now_" method="post" action="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=add_multiple', 'NONSSL') . '">';
       break;
}}
//end mymod
 $listing_split = new splitPageResults($listing_sql, MAX_DISPLAY_SEARCH_RESULTS, 'p.products_id');

 if ( ($listing_split->number_of_rows > 0) && ( (PREV_NEXT_BAR_LOCATION == '1') || (PREV_NEXT_BAR_LOCATION == '3') ) ) {
?>
<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>
<?php
 }

 $list_box_contents = array();

 for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
   switch ($column_list[$col]) {
     case 'SLAVE_LIST_MODEL':
       $lc_text = TABLE_HEADING_MODEL;
       $lc_align = '';
       break;
     case 'SLAVE_LIST_NAME':
       $lc_text = TABLE_HEADING_PRODUCTS;
       $lc_align = '';
       break;
     case 'SLAVE_LIST_MANUFACTURER':
       $lc_text = TABLE_HEADING_MANUFACTURER;
       $lc_align = '';
       break;
     case 'SLAVE_LIST_PRICE':
       $lc_text = TABLE_HEADING_PRICE;
       $lc_align = 'right';
       break;
     case 'SLAVE_LIST_QUANTITY':
       $lc_text = TABLE_HEADING_QUANTITY;
       $lc_align = 'right';
       break;
     case 'SLAVE_LIST_WEIGHT':
       $lc_text = TABLE_HEADING_WEIGHT;
       $lc_align = 'right';
       break;
     case 'SLAVE_LIST_IMAGE':
       $lc_text = TABLE_HEADING_IMAGE;
       $lc_align = 'center';
       break;
 //mymod
//     case 'SLAVE_LIST_QUANTITY_ORDER':
//       $lc_text = TABLE_HEADING_QUANTITY_ORDER;
//       $lc_align = 'right';
//       break;
 //end mymod  
     case 'PRODUCT_SLAVE_BUY_NOW':
       $lc_text = TABLE_HEADING_BUY_NOW;
       $lc_align = 'center';
       break;
 //mymod
  case 'SLAVE_LIST_MULTIPLE':
       $lc_text = TABLE_HEADING_MULTIPLE;
       $lc_align = 'center';
       break;
 //end mymod  
   }

   //mymod if ( ($column_list[$col] != 'PRODUCT_SLAVE_BUY_NOW') && ($column_list[$col] != 'SLAVE_LIST_IMAGE') ) {
if ( ($column_list[$col] != 'PRODUCT_SLAVE_BUY_NOW') && ($column_list[$col] != 'SLAVE_LIST_IMAGE') && ($column_list[$col] != 'SLAVE_LIST_MULTIPLE')) {
     $lc_text = tep_create_sort_heading($HTTP_GET_VARS['sort'], $col+1, $lc_text);
   }

   $list_box_contents[0][] = array('align' => $lc_align,
                                   'params' => 'class="productListing-heading"',
                                   'text' => ' ' . $lc_text . ' ');
 }

 if ($listing_split->number_of_rows > 0) {
   $rows = 0;
   $listing_query = tep_db_query($listing_split->sql_query);
   while ($listing = tep_db_fetch_array($listing_query)) {
     $rows++;

     if (($rows/2) == floor($rows/2)) {
       $list_box_contents[] = array('params' => 'class="productListing-even"');
     } else {
       $list_box_contents[] = array('params' => 'class="productListing-odd"');
     }

     $cur_row = sizeof($list_box_contents) - 1;

     for ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
       $lc_align = '';

       switch ($column_list[$col]) {
         case 'SLAVE_LIST_MODEL':
           $lc_align = '';
           $lc_text = ' ' . $listing['products_model'] . ' ';
           break;
         case 'SLAVE_LIST_NAME':
           $lc_align = '';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a> ';
           }
           break;
         case 'SLAVE_LIST_MANUFACTURER':
           $lc_align = '';
           $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing['manufacturers_id']) . '">' . $listing['manufacturers_name'] . '</a> ';
           break;
         case 'SLAVE_LIST_PRICE':
           $lc_align = 'right';
           if (tep_not_null($listing['specials_new_products_price'])) {
             $lc_text = ' <s>' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</s>  <span class="productSpecialPrice">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span> ';
           } else {
             $lc_text = ' ' . $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . ' ';
           }
           break;
         case 'SLAVE_LIST_QUANTITY':
           $lc_align = 'right';
           $lc_text = ' ' . $listing['products_quantity'] . ' ';
           break;
         case 'SLAVE_LIST_WEIGHT':
           $lc_align = 'right';
           $lc_text = ' ' . $listing['products_weight'] . ' ';
           break;
         case 'SLAVE_LIST_IMAGE':
           $lc_align = 'center';
           if (isset($HTTP_GET_VARS['manufacturers_id'])) {
             $lc_text = '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'manufacturers_id=' . $HTTP_GET_VARS['manufacturers_id'] . '&products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>';
           } else {
             $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';
           }
           break;
// mymod
         case 'PRODUCT_SLAVE_BUY_NOW': 
           $lc_align = 'center'; 
           $lc_text = '<form name="buy_now_' . $listing['products_id'] . '" method="post" action="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action')) . 'action=buy_now_form', 'NONSSL') . '">';
           $lc_text .= '<input type="text" name="cart_quantity" value="" maxlength="3" size="3">' . ' '; 
           $lc_text .= '<input type="hidden" name="products_id" value="' . $listing['products_id'] . '">' . tep_image_submit('button_buy_now.gif', TEXT_BUY . $listing['products_name'] . TEXT_NOW) . ' '; 
     $lc_text .= '</form>'; 
           break; 
         case 'SLAVE_LIST_MULTIPLE': 
           $lc_align = 'right'; 
           $lc_valign = 'top'; 
           $lc_text = 'Qty: <input type="text" name="Qty_ProdId_' . $listing['products_id'] . '" value="" maxlength="6" size="4">';          
          break;
//end mymod
       }
//mymod
       $list_box_contents[$cur_row][] = array('align' => $lc_align,
                                              'valign' => $lc_valign,
                                              'params' => 'class="productListing-data"',
                                              'text'  => $lc_text);
//end mymod
     }
   }

   new productListingBox($list_box_contents);
 } else {
   $list_box_contents = array();

   $list_box_contents[0] = array('params' => 'class="productListing-odd"');
   $list_box_contents[0][] = array('params' => 'class="productListing-data"',
                                  'text' => TEXT_NO_PRODUCTS);

   new productListingBox($list_box_contents);
 }

 if ( ($listing_split->number_of_rows > 0) && ((PREV_NEXT_BAR_LOCATION == '2') || (PREV_NEXT_BAR_LOCATION == '3')) ) {
?>

<!--mymod//-->
<?php if ($add_multiple == "1"){
?>
 <tr> 
   <td  align="right" colspan="<?php echo $colspan; ?>"><input type="submit" align="absmiddle" value="Add To Cart" id="submit1" name="submit1" Class="SubmitBtn"></form></td> 
 </tr> 
<?php } ?>
<!--end mymod//-->
<table border="0" width="100%" cellspacing="0" cellpadding="2">
 <tr>
   <td class="smallText"><?php echo $listing_split->display_count(TEXT_DISPLAY_NUMBER_OF_PRODUCTS); ?></td>
   <td class="smallText" align="right"><?php echo TEXT_RESULT_PAGE . ' ' . $listing_split->display_links(MAX_DISPLAY_PAGE_LINKS, tep_get_all_get_params(array('page', 'info', 'x', 'y'))); ?></td>
 </tr>
</table>
<?php
 }
?>

 

Here is the receiving end of the application_top.php file.

 

 

 <?php

/*

 $Id: application_top.php,v 1.280 2003/07/12 09:38:07 hpdl Exp $

 

 osCommerce, Open Source E-Commerce Solutions

 http://www.oscommerce.com

 

 Copyright (c) 2003 osCommerce

 

 Released under the GNU General Public License

*/

 

// start the timer for the page parse time log

 define('PAGE_PARSE_START_TIME', microtime());

 

// set the level of error reporting

 error_reporting(E_ALL & ~E_NOTICE);

 

// check if register_globals is enabled.

// since this is a temporary measure this message is hardcoded. The requirement will be removed before 2.2 is finalized.

 if (function_exists('ini_get')) {

   ini_get('register_globals') or exit('FATAL ERROR: register_globals is disabled in php.ini, please enable it!');

 }

 

// Set the local configuration parameters - mainly for developers

 if (file_exists('includes/local/configure.php')) include('includes/local/configure.php');

 

// include server parameters

 require('includes/configure.php');

 

 if (strlen(DB_SERVER) < 1) {

   if (is_dir('install')) {

     header('Location: install/index.php');

   }

 }

 

// define the project version

 define('PROJECT_VERSION', 'osCommerce 2.2-MS2');

 

// set the type of request (secure or not)

 $request_type = (getenv('HTTPS') == 'on') ? 'SSL' : 'NONSSL';

 

// set php_self in the local scope

 if (!isset($PHP_SELF)) $PHP_SELF = $HTTP_SERVER_VARS['PHP_SELF'];

 

 if ($request_type == 'NONSSL') {

   define('DIR_WS_CATALOG', DIR_WS_HTTP_CATALOG);

 } else {

   define('DIR_WS_CATALOG', DIR_WS_HTTPS_CATALOG);

 }

 

// include the list of project filenames

 require(DIR_WS_INCLUDES . 'filenames.php');

 

// include the list of project database tables

 require(DIR_WS_INCLUDES . 'database_tables.php');

 

// customization for the design layout

 define('BOX_WIDTH', 200); // how wide the boxes should be in pixels (default: 125)

 

// include the database functions

 require(DIR_WS_FUNCTIONS . 'database.php');

 

// make a connection to the database... now

 tep_db_connect() or die('Unable to connect to database server!');

 

// set the application parameters

 $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);

 while ($configuration = tep_db_fetch_array($configuration_query)) {

   define($configuration['cfgKey'], $configuration['cfgValue']);

 }

 

// if gzip_compression is enabled, start to buffer the output

 if ( (GZIP_COMPRESSION == 'true') && ($ext_zlib_loaded = extension_loaded('zlib')) && (PHP_VERSION >= '4') ) {

   if (($ini_zlib_output_compression = (int)ini_get('zlib.output_compression')) < 1) {

     if (PHP_VERSION >= '4.0.4') {

       ob_start('ob_gzhandler');

     } else {

       include(DIR_WS_FUNCTIONS . 'gzip_compression.php');

       ob_start();

       ob_implicit_flush();

     }

   } else {

     ini_set('zlib.output_compression_level', GZIP_LEVEL);

   }

 }

 

// set the HTTP GET parameters manually if search_engine_friendly_urls is enabled

 if (SEARCH_ENGINE_FRIENDLY_URLS == 'true') {

   if (strlen(getenv('PATH_INFO')) > 1) {

     $GET_array = array();

     $PHP_SELF = str_replace(getenv('PATH_INFO'), '', $PHP_SELF);

     $vars = explode('/', substr(getenv('PATH_INFO'), 1));

     for ($i=0, $n=sizeof($vars); $i<$n; $i++) {

       if (strpos($vars[$i], '[]')) {

         $GET_array[substr($vars[$i], 0, -2)][] = $vars[$i+1];

       } else {

         $HTTP_GET_VARS[$vars[$i]] = $vars[$i+1];

       }

       $i++;

     }

 

     if (sizeof($GET_array) > 0) {

       while (list($key, $value) = each($GET_array)) {

         $HTTP_GET_VARS[$key] = $value;

       }

     }

   }

 }

 

// define general functions used application-wide

 require(DIR_WS_FUNCTIONS . 'general.php');

 require(DIR_WS_FUNCTIONS . 'html_output.php');

 

// set the cookie domain

 $cookie_domain = (($request_type == 'NONSSL') ? HTTP_COOKIE_DOMAIN : HTTPS_COOKIE_DOMAIN);

 $cookie_path = (($request_type == 'NONSSL') ? HTTP_COOKIE_PATH : HTTPS_COOKIE_PATH);

 

// include cache functions if enabled

 if (USE_CACHE == 'true') include(DIR_WS_FUNCTIONS . 'cache.php');

 

// include shopping cart class

 require(DIR_WS_CLASSES . 'shopping_cart.php');

 

// include navigation history class

 require(DIR_WS_CLASSES . 'navigation_history.php');

 

// some code to solve compatibility issues

 require(DIR_WS_FUNCTIONS . 'compatibility.php');

 

// check if sessions are supported, otherwise use the php3 compatible session class

 if (!function_exists('session_start')) {

   define('PHP_SESSION_NAME', 'osCsid');

   define('PHP_SESSION_PATH', $cookie_path);

   define('PHP_SESSION_DOMAIN', $cookie_domain);

   define('PHP_SESSION_SAVE_PATH', SESSION_WRITE_DIRECTORY);

 

   include(DIR_WS_CLASSES . 'sessions.php');

 }

 

// define how the session functions will be used

 require(DIR_WS_FUNCTIONS . 'sessions.php');

 

// set the session name and save path

 tep_session_name('osCsid');

 tep_session_save_path(SESSION_WRITE_DIRECTORY);

 

// set the session cookie parameters

  if (function_exists('session_set_cookie_params')) {

   session_set_cookie_params(0, $cookie_path, $cookie_domain);

 } elseif (function_exists('ini_set')) {

   ini_set('session.cookie_lifetime', '0');

   ini_set('session.cookie_path', $cookie_path);

   ini_set('session.cookie_domain', $cookie_domain);

 }

 

// set the session ID if it exists

  if (isset($HTTP_POST_VARS[tep_session_name()])) {

    tep_session_id($HTTP_POST_VARS[tep_session_name()]);

  } elseif ( ($request_type == 'SSL') && isset($HTTP_GET_VARS[tep_session_name()]) ) {

    tep_session_id($HTTP_GET_VARS[tep_session_name()]);

  }

 

// start the session

 $session_started = false;

 if (SESSION_FORCE_COOKIE_USE == 'True') {

   tep_setcookie('cookie_test', 'please_accept_for_session', time()+60*60*24*30, $cookie_path, $cookie_domain);

 

   if (isset($HTTP_COOKIE_VARS['cookie_test'])) {

     tep_session_start();

     $session_started = true;

   }

 } elseif (SESSION_BLOCK_SPIDERS == 'True') {

   $user_agent = strtolower(getenv('HTTP_USER_AGENT'));

   $spider_flag = false;

 

   if (tep_not_null($user_agent)) {

     $spiders = file(DIR_WS_INCLUDES . 'spiders.txt');

 

     for ($i=0, $n=sizeof($spiders); $i<$n; $i++) {

       if (tep_not_null($spiders[$i])) {

         if (is_integer(strpos($user_agent, trim($spiders[$i])))) {

           $spider_flag = true;

           break;

         }

       }

     }

   }

 

   if ($spider_flag == false) {

     tep_session_start();

     $session_started = true;

   }

 } else {

   tep_session_start();

   $session_started = true;

 }

 

// set SID once, even if empty

 $SID = (defined('SID') ? SID : '');

 

// verify the ssl_session_id if the feature is enabled

 if ( ($request_type == 'SSL') && (SESSION_CHECK_SSL_SESSION_ID == 'True') && (ENABLE_SSL == true) && ($session_started == true) ) {

   $ssl_session_id = getenv('SSL_SESSION_ID');

   if (!tep_session_is_registered('SSL_SESSION_ID')) {

     $SESSION_SSL_ID = $ssl_session_id;

     tep_session_register('SESSION_SSL_ID');

   }

 

   if ($SESSION_SSL_ID != $ssl_session_id) {

     tep_session_destroy();

     tep_redirect(tep_href_link(FILENAME_SSL_CHECK));

   }

 }

 

// verify the browser user agent if the feature is enabled

 if (SESSION_CHECK_USER_AGENT == 'True') {

   $http_user_agent = getenv('HTTP_USER_AGENT');

   if (!tep_session_is_registered('SESSION_USER_AGENT')) {

     $SESSION_USER_AGENT = $http_user_agent;

     tep_session_register('SESSION_USER_AGENT');

   }

 

   if ($SESSION_USER_AGENT != $http_user_agent) {

     tep_session_destroy();

     tep_redirect(tep_href_link(FILENAME_LOGIN));

   }

 }

 

// verify the IP address if the feature is enabled

 if (SESSION_CHECK_IP_ADDRESS == 'True') {

   $ip_address = tep_get_ip_address();

   if (!tep_session_is_registered('SESSION_IP_ADDRESS')) {

     $SESSION_IP_ADDRESS = $ip_address;

     tep_session_register('SESSION_IP_ADDRESS');

   }

 

   if ($SESSION_IP_ADDRESS != $ip_address) {

     tep_session_destroy();

     tep_redirect(tep_href_link(FILENAME_LOGIN));

   }

 }

 

// create the shopping cart & fix the cart if necesary

 if (tep_session_is_registered('cart') && is_object($cart)) {

   if (PHP_VERSION < 4) {

     $broken_cart = $cart;

     $cart = new shoppingCart;

     $cart->unserialize($broken_cart);

   }

 } else {

   tep_session_register('cart');

   $cart = new shoppingCart;

 }

 

// include currencies class and create an instance

 require(DIR_WS_CLASSES . 'currencies.php');

 $currencies = new currencies();

 

// include the mail classes

 require(DIR_WS_CLASSES . 'mime.php');

 require(DIR_WS_CLASSES . 'email.php');

 

// set the language

 if (!tep_session_is_registered('language') || isset($HTTP_GET_VARS['language'])) {

   if (!tep_session_is_registered('language')) {

     tep_session_register('language');

     tep_session_register('languages_id');

   }

 

   include(DIR_WS_CLASSES . 'language.php');

   $lng = new language();

 

   if (isset($HTTP_GET_VARS['language']) && tep_not_null($HTTP_GET_VARS['language'])) {

     $lng->set_language($HTTP_GET_VARS['language']);

   } else {

     $lng->get_browser_language();

   }

 

   $language = $lng->language['directory'];

   $languages_id = $lng->language['id'];

 }

 

// include the language translations

 require(DIR_WS_LANGUAGES . $language . '.php');

 

// currency

 if (!tep_session_is_registered('currency') || isset($HTTP_GET_VARS['currency']) || ( (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') && (LANGUAGE_CURRENCY != $currency) ) ) {

   if (!tep_session_is_registered('currency')) tep_session_register('currency');

 

   if (isset($HTTP_GET_VARS['currency'])) {

     if (!$currency = tep_currency_exists($HTTP_GET_VARS['currency'])) $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;

   } else {

     $currency = (USE_DEFAULT_LANGUAGE_CURRENCY == 'true') ? LANGUAGE_CURRENCY : DEFAULT_CURRENCY;

   }

 }

 

// navigation history

 if (tep_session_is_registered('navigation')) {

   if (PHP_VERSION < 4) {

     $broken_navigation = $navigation;

     $navigation = new navigationHistory;

     $navigation->unserialize($broken_navigation);

   }

 } else {

   tep_session_register('navigation');

   $navigation = new navigationHistory;

 }

 $navigation->add_current_page();

 

// Shopping cart actions

 if (isset($HTTP_GET_VARS['action'])) {

// redirect the customer to a friendly cookie-must-be-enabled page if cookies are disabled

   if ($session_started == false) {

     tep_redirect(tep_href_link(FILENAME_COOKIE_USAGE));

   }

 

   if (DISPLAY_CART == 'true') {

     $goto =  FILENAME_SHOPPING_CART;

     $parameters = array('action', 'cPath', 'products_id', 'pid');

   } else {

     $goto = basename($PHP_SELF);

     if ($HTTP_GET_VARS['action'] == 'buy_now') {

       $parameters = array('action', 'pid', 'products_id');

     } else {

       $parameters = array('action', 'pid');

     }

   }

   switch ($HTTP_GET_VARS['action']) {

     // customer wants to update the product quantity in their shopping cart

     case 'update_product' : for ($i=0, $n=sizeof($HTTP_POST_VARS['products_id']); $i<$n; $i++) {

                               if (in_array($HTTP_POST_VARS['products_id'][$i], (is_array($HTTP_POST_VARS['cart_delete']) ? $HTTP_POST_VARS['cart_delete'] : array()))) {

                                 $cart->remove($HTTP_POST_VARS['products_id'][$i]);

                               } else {

                                 if (PHP_VERSION < 4) {

                                   // if PHP3, make correction for lack of multidimensional array.

                                   reset($HTTP_POST_VARS);

                                   while (list($key, $value) = each($HTTP_POST_VARS)) {

                                     if (is_array($value)) {

                                       while (list($key2, $value2) = each($value)) {

                                         if (ereg ("(.*)\]\[(.*)", $key2, $var)) {

                                           $id2[$var[1]][$var[2]] = $value2;

                                         }

                                       }

                                     }

                                   }

                                   $attributes = ($id2[$HTTP_POST_VARS['products_id'][$i]]) ? $id2[$HTTP_POST_VARS['products_id'][$i]] : '';

                                 } else {

                                   $attributes = ($HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]]) ? $HTTP_POST_VARS['id'][$HTTP_POST_VARS['products_id'][$i]] : '';

                                 }

                                 $cart->add_cart($HTTP_POST_VARS['products_id'][$i], $HTTP_POST_VARS['cart_quantity'][$i], $attributes, false);

                               }

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

     // customer adds a product from the products page

     case 'add_product' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {

                               $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+$quantity, $HTTP_POST_VARS['id']);

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

//mymod

case 'buy_now_form' :    if (isset($HTTP_POST_VARS['products_id']) && is_numeric($HTTP_POST_VARS['products_id'])) {

                              $cart->add_cart($HTTP_POST_VARS['products_id'], $cart->get_quantity(tep_get_uprid($HTTP_POST_VARS['products_id'], $HTTP_POST_VARS['id']))+($HTTP_POST_VARS['cart_quantity']), $HTTP_POST_VARS['id']);

// replace quantities         $cart->get_quantity($HTTP_POST_VARS['products_id'])-($cart->get_quantity($HTTP_POST_VARS['products_id']))+($HTTP_POST_VARS['cart_quantity']), $HTTP_POST_VARS['id']);

                              }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

     // customer adds multiple products from the products_listing page

     case 'add_multiple' :    

                             while ( list( $key, $val ) = each( $HTTP_POST_VARS ) )

                                {

                                if (substr($key,0,11) == "Qty_ProdId_" || substr($key,0,11) == "Qty_NPrdId_")

                                {

                                $prodId = substr($key, 11);

                                $qty = $val;

                                if ($qty <= 0 ) continue;

// Choose here whether or not you want ot replace the quantity, or add to. IMPORTANT CHOOSE ONLY ONE METHOD!!!

// uncomment the following line to allow incrementing the quantity

 

$cart->add_cart($prodId, $cart->get_quantity(tep_get_uprid($prodId, $HTTP_POST_VARS['id']))+($qty), $HTTP_POST_VARS['id']);

// uncomment the following line to disallow incrementing the quantity

$cart->add_cart($prodId, $qty, $HTTP_POST_VARS['id']);

                               }

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

//end mymod                  

       

     // performed by the 'buy now' button in product listings and review page

     case 'buy_now' :        if (isset($HTTP_GET_VARS['products_id'])) {

                               if (tep_has_product_attributes($HTTP_GET_VARS['products_id'])) {

                                 tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['products_id']));

                               } else {

                                 $cart->add_cart($HTTP_GET_VARS['products_id'], $cart->get_quantity($HTTP_GET_VARS['products_id'])+1);

                               }

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

        //START MASTER PRODUCTS

     case 'buy_slave' :      if (isset($HTTP_GET_VARS['slave_id'])) {

                               if (tep_has_product_attributes($HTTP_GET_VARS['slave_id'])) {

                                 tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['slave_id']));

                               } else {

                                 $cart->add_cart($HTTP_GET_VARS['slave_id'], $cart->get_quantity($HTTP_GET_VARS['slave_id'])+$quantity_slave, $HTTP_GET_VARS['slave_id']);

                               }

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

                             //END MASTER PRODUCTS

     case 'notify' :         if (tep_session_is_registered('customer_id')) {

                               if (isset($HTTP_GET_VARS['products_id'])) {

                                 $notify = $HTTP_GET_VARS['products_id'];

                               } elseif (isset($HTTP_GET_VARS['notify'])) {

                                 $notify = $HTTP_GET_VARS['notify'];

                               } elseif (isset($HTTP_POST_VARS['notify'])) {

                                 $notify = $HTTP_POST_VARS['notify'];

                               } else {

                                 tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));

                               }

                               if (!is_array($notify)) $notify = array($notify);

                               for ($i=0, $n=sizeof($notify); $i<$n; $i++) {

                                 $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $notify[$i] . "' and customers_id = '" . $customer_id . "'");

                                 $check = tep_db_fetch_array($check_query);

                                 if ($check['count'] < 1) {

                                   tep_db_query("insert into " . TABLE_PRODUCTS_NOTIFICATIONS . " (products_id, customers_id, date_added) values ('" . $notify[$i] . "', '" . $customer_id . "', now())");

                                 }

                               }

                               tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'notify'))));

                             } else {

                               $navigation->set_snapshot();

                               tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

                             }

                             break;

     case 'notify_remove' :  if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['products_id'])) {

                               $check_query = tep_db_query("select count(*) as count from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");

                               $check = tep_db_fetch_array($check_query);

                               if ($check['count'] > 0) {

                                 tep_db_query("delete from " . TABLE_PRODUCTS_NOTIFICATIONS . " where products_id = '" . $HTTP_GET_VARS['products_id'] . "' and customers_id = '" . $customer_id . "'");

                               }

                               tep_redirect(tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action'))));

                             } else {

                               $navigation->set_snapshot();

                               tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));

                             }

                             break;

     case 'cust_order' :     if (tep_session_is_registered('customer_id') && isset($HTTP_GET_VARS['pid'])) {

                               if (tep_has_product_attributes($HTTP_GET_VARS['pid'])) {

                                 tep_redirect(tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $HTTP_GET_VARS['pid']));

                               } else {

                                 $cart->add_cart($HTTP_GET_VARS['pid'], $cart->get_quantity($HTTP_GET_VARS['pid'])+1);

                               }

                             }

                             tep_redirect(tep_href_link($goto, tep_get_all_get_params($parameters)));

                             break;

   }

 }

 

// include the who's online functions

 require(DIR_WS_FUNCTIONS . 'whos_online.php');

 tep_update_whos_online();

 

// include the password crypto functions

 require(DIR_WS_FUNCTIONS . 'password_funcs.php');

 

// include validation functions (right now only email address)

 require(DIR_WS_FUNCTIONS . 'validations.php');

 

// split-page-results

 require(DIR_WS_CLASSES . 'split_page_results.php');

 

// infobox

 require(DIR_WS_CLASSES . 'boxes.php');

 

// auto activate and expire banners

 require(DIR_WS_FUNCTIONS . 'banner.php');

 tep_activate_banners();

 tep_expire_banners();

 

// auto expire special products

 require(DIR_WS_FUNCTIONS . 'specials.php');

 tep_expire_specials();

 

// calculate category path

 if (isset($HTTP_GET_VARS['cPath'])) {

   $cPath = $HTTP_GET_VARS['cPath'];

 } elseif (isset($HTTP_GET_VARS['products_id']) && !isset($HTTP_GET_VARS['manufacturers_id'])) {

   $cPath = tep_get_product_path($HTTP_GET_VARS['products_id']);

 } else {

   $cPath = '';

 }

 

 if (tep_not_null($cPath)) {

   $cPath_array = tep_parse_category_path($cPath);

   $cPath = implode('_', $cPath_array);

   $current_category_id = $cPath_array[(sizeof($cPath_array)-1)];

 } else {

   $current_category_id = 0;

 }

 

// include the breadcrumb class and start the breadcrumb trail

 require(DIR_WS_CLASSES . 'breadcrumb.php');

 $breadcrumb = new breadcrumb;

 

 $breadcrumb->add(HEADER_TITLE_TOP, HTTP_SERVER);

 $breadcrumb->add(HEADER_TITLE_CATALOG, tep_href_link(FILENAME_DEFAULT));

 

// add category names or the manufacturer name to the breadcrumb trail

 if (isset($cPath_array)) {

   for ($i=0, $n=sizeof($cPath_array); $i<$n; $i++) {

     $categories_query = tep_db_query("select categories_name from " . TABLE_CATEGORIES_DESCRIPTION . " where categories_id = '" . (int)$cPath_array[$i] . "' and language_id = '" . (int)$languages_id . "'");

     if (tep_db_num_rows($categories_query) > 0) {

       $categories = tep_db_fetch_array($categories_query);

       $breadcrumb->add($categories['categories_name'], tep_href_link(FILENAME_DEFAULT, 'cPath=' . implode('_', array_slice($cPath_array, 0, ($i+1)))));

     } else {

       break;

     }

   }

 } elseif (isset($HTTP_GET_VARS['manufacturers_id'])) {

   $manufacturers_query = tep_db_query("select manufacturers_name from " . TABLE_MANUFACTURERS . " where manufacturers_id = '" . (int)$HTTP_GET_VARS['manufacturers_id'] . "'");

   

Link to comment
Share on other sites

  • 1 month later...

Maybe i misunderstand your problem, or maybe galens master product is totally differen than the original master products.

 

 

I use master products (not by galen) in this way:

 

 

Product a. comes in 3 sizes, small, medium, large,

 

Product a. is master

 

product a. small is slave

 

product a. med is slave

 

product a. lrg is slave

 

 

 

 

 

 

Product a. appears in catalog for customer to select.

 

 

If customer selects product a. the product page displays product a. as product and shows slaves a. small, a. med & a. large as options.

 

the customer can then select the quantity of each size they would like to purchase and add them all to the cart at the same time.

 

 

To see an example:

 

http://www.wholesaletiedye.com/wholesale/p...2/products_id/4

 

 

 

This is a live site please do not place test orders.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...