pdv Posted May 2, 2009 Posted May 2, 2009 I had a customer order two different items for the first time. This activates the "also purchased" box at the bottom of the product_info.php pages for those products which I really like . . . Now, if a customer clicks "Add to cart" on the product_info.php page for a product, the product shown in the "also purchased" box is added to the cart instead of the selected product. This is the case for both products that were ordered together. As a temporary work around I have commented out the code that displays the "also purchased" box and this makes things work normally again. I would really like to use the "also purchased" feature though, so I am looking for a fix. Here is the code from my product_info.php page: <?php /* $Id: product_info.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Greenmania Template by www.badeziner.com Released under the GNU General Public License */ require('includes/application_top.php'); // remove duplicates mod ob_start(); // Metatags Easy mod require(DIR_WS_FUNCTIONS . 'metatags.php'); // remove duplicates mod $preventDuplicates->checkTarget(ob_get_clean()); echo $preventDuplicates->finalMeta . "\n"; require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_PRODUCT_INFO); $product_check_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'"); $product_check = tep_db_fetch_array($product_check_query); ?> <!doctype html public "-//W3C//DTD HTML 4.01 Transitional//EN"> <html <?php echo HTML_PARAMS; ?>> <head> <!--removed stock html and put in easy metatag code--> <meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>"> <META NAME="description" CONTENT="<?php echo MetaTagDescription($products_id, $languages_id); ?>"> <TITLE><?php echo MetaTagTitle($products_id, $languages_id); ?></TITLE> <base href="<?php echo (($request_type == 'SSL') ? HTTPS_SERVER : HTTP_SERVER) . DIR_WS_CATALOG; ?>"> <link rel="stylesheet" type="text/css" href="stylesheet.css"> <script language="javascript"><!-- function popupWindow(url) { window.open(url,'popupWindow','toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,res izable=yes,copyhistory=no,width=100,height=100,screenX=150,screenY=150,top=150,le ft=150') } //--></script> <link rel="stylesheet" href="lightbox/prettyPhoto.css" type="text/css" title="prettyPhoto main stylesheet" charset="utf-8" /> <script src="lightbox/jquery-1.2.3.pack.js" type="text/javascript" charset="utf-8"></script> <script src="lightbox/prettyPhoto.js" type="text/javascript" charset="utf-8"></script> <meta name="Author" content="badeziner" /> <meta name="Theme" content="Greenmania" /> <meta name="webdesign" content="www.badeziner.com" /></head> <body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> <div id="wrapper"> <!-- header //--> <?php require(DIR_WS_INCLUDES . 'header.php'); ?> <!-- header_eof //--> <table width="814" border="0" cellpadding="0" cellspacing="0" align="center"> <tr> <td style="background: url(images/template/left_border.gif) repeat-y;width:7px;height:100%;"></td> <td colspan="11" bgcolor="#0A0909"><!-- body //--> <table border="0" width="100%" cellspacing="3" cellpadding="3"> <tr> <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2"> <!-- left_navigation //--> <?php require(DIR_WS_INCLUDES . 'column_left.php'); ?> <!-- left_navigation_eof //--> </table></td> <!-- body_text //--> <td width="100%" valign="top"><?php echo tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')); ?><table border="0" width="100%" cellspacing="0" cellpadding="0"> <?php if ($product_check['total'] < 1) { ?> <tr> <td><?php new infoBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td align="right"><?php echo '<a href="' . tep_href_link(FILENAME_DEFAULT) . '">' . tep_image_button('button_continue.gif', IMAGE_BUTTON_CONTINUE) . '</a>'; ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> </tr> </table></td> </tr> </table></td> </tr> <?php } else { $product_info_query = tep_db_query("select p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, pd.products_url, p.products_price, p.products_tax_class_id, p.products_date_added, p.products_date_available, p.manufacturers_id from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd where p.products_status = '1' and p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pd.products_id = p.products_id and pd.language_id = '" . (int)$languages_id . "'"); $product_info = tep_db_fetch_array($product_info_query); tep_db_query("update " . TABLE_PRODUCTS_DESCRIPTION . " set products_viewed = products_viewed+1 where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and language_id = '" . (int)$languages_id . "'"); if ($new_price = tep_get_products_special_price($product_info['products_id'])) { $products_price = '<s>' . $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) . '</s> <span class="productSpecialPrice">' . $currencies->display_price($new_price, tep_get_tax_rate($product_info['products_tax_class_id'])) . '</span>'; } else { $products_price = $currencies->display_price($product_info['products_price'], tep_get_tax_rate($product_info['products_tax_class_id'])); } if (tep_not_null($product_info['products_model'])) { $products_name = $product_info['products_name'] . '<br><span class="smallText">[' . $product_info['products_model'] . ']</span>'; } else { $products_name = $product_info['products_name']; } ?> <tr> <td><table border="0" width="100%" cellspacing="0" cellpadding="0"> <tr> <td class="pageHeading" valign="top"><?php echo $products_name; ?></td> <td class="pageHeading" align="right" valign="top"><?php echo $products_price; ?></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td class="main"> <?php if (tep_not_null($product_info['products_image'])) { ?> <table border="0" cellspacing="0" cellpadding="2" align="right"> <tr> <td align="center" class="smallText"> <?php echo '<a href="' . DIR_WS_IMAGES . $product_info['products_image'] .'" rel="prettyOverlay[gallery]" title="'.$product_info['products_name'].'">' . tep_image(DIR_WS_IMAGES . $product_info['products_image'], $product_info['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT, 'hspace="5" vspace="5"') . '<br>' . TEXT_CLICK_TO_ENLARGE . '</a>'; ?> </td> </tr> </table> <?php } ?> <p><?php echo stripslashes($product_info['products_description']); ?></p> <?php $products_attributes_query = tep_db_query("select count(*) as total from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "'"); $products_attributes = tep_db_fetch_array($products_attributes_query); if ($products_attributes['total'] > 0) { ?> <table border="0" cellspacing="0" cellpadding="2"> <tr> <td class="main" colspan="2"><?php echo TEXT_PRODUCT_OPTIONS; ?></td> </tr> <?php $products_options_name_query = tep_db_query("select distinct popt.products_options_id, popt.products_options_name from " . TABLE_PRODUCTS_OPTIONS . " popt, " . TABLE_PRODUCTS_ATTRIBUTES . " patrib where patrib.products_id='" . (int)$HTTP_GET_VARS['products_id'] . "' and patrib.options_id = popt.products_options_id and popt.language_id = '" . (int)$languages_id . "' order by popt.products_options_name"); while ($products_options_name = tep_db_fetch_array($products_options_name_query)) { $products_options_array = array(); $products_options_query = tep_db_query("select pov.products_options_values_id, pov.products_options_values_name, pa.options_values_price, pa.price_prefix from " . TABLE_PRODUCTS_ATTRIBUTES . " pa, " . TABLE_PRODUCTS_OPTIONS_VALUES . " pov where pa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and pa.options_id = '" . (int)$products_options_name['products_options_id'] . "' and pa.options_values_id = pov.products_options_values_id and pov.language_id = '" . (int)$languages_id . "'"); while ($products_options = tep_db_fetch_array($products_options_query)) { $products_options_array[] = array('id' => $products_options['products_options_values_id'], 'text' => $products_options['products_options_values_name']); if ($products_options['options_values_price'] != '0') { $products_options_array[sizeof($products_options_array)-1]['text'] .= ' (' . $products_options['price_prefix'] . $currencies->display_price($products_options['options_values_price'], tep_get_tax_rate($product_info['products_tax_class_id'])) .') '; } } if (isset($cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']])) { $selected_attribute = $cart->contents[$HTTP_GET_VARS['products_id']]['attributes'][$products_options_name['products_options_id']]; } else { $selected_attribute = false; } ?> <tr> <td class="main"><?php echo $products_options_name['products_options_name'] . ':'; ?></td> <td class="main"><?php echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, $selected_attribute); ?></td> </tr> <?php } ?> </table> <?php } ?> </td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php $reviews_query = tep_db_query("select count(*) as count from " . TABLE_REVIEWS . " where products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "'"); $reviews = tep_db_fetch_array($reviews_query); if ($reviews['count'] > 0) { ?> <tr> <td class="main"><?php echo TEXT_CURRENT_REVIEWS . ' ' . $reviews['count']; ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php } if (tep_not_null($product_info['products_url'])) { ?> <tr> <td class="main"><?php echo sprintf(TEXT_MORE_INFORMATION, tep_href_link(FILENAME_REDIRECT, 'action=url&goto=' . urlencode($product_info['products_url']), 'NONSSL', true, false)); ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <?php } if ($product_info['products_date_available'] > date('Y-m-d H:i:s')) { ?> <tr> <td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_AVAILABLE, tep_date_long($product_info['products_date_available'])); ?></td> </tr> <?php } else { ?> <tr> <td align="center" class="smallText"><?php echo sprintf(TEXT_DATE_ADDED, tep_date_long($product_info['products_date_added'])); ?></td> </tr> <?php } ?> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td><table border="0" width="100%" cellspacing="1" cellpadding="2" class="infoBox"> <tr class="infoBoxContents"> <td><table border="0" width="100%" cellspacing="0" cellpadding="2"> <tr> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <!--<td class="main"><?php /*echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params()) . '">' . tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS) . '</a>';*/ ?></td> --> <td class="main"> <?php ///// SID-KILLER ( ex-change ) //////////////////////////// // Step X ( ADDITIONALLY & OPTIONALLY but has nothin to do with SID-KILLING ... it's just intelligent ... and was in the manual too ...) ) // NEW: if ($reviews['count'] > 0) { echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params()) . '">' . tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS) . '</a><br> ' . TEXT_CURRENT_REVIEWS . ' ' . $reviews['count']; } else { echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS_WRITE, tep_get_all_get_params()) . '">' . tep_image_button('button_write_review.gif', IMAGE_BUTTON_WRITE_REVIEW) . '</a>'; } ///// SID-KILLER ( ex-change ) //////////////////////////// // ORG: // echo '<a href="' . tep_href_link(FILENAME_PRODUCT_REVIEWS, tep_get_all_get_params()) . '">' . tep_image_button('button_reviews.gif', IMAGE_BUTTON_REVIEWS) . '</a>'; ///// SID-KILLER ( ex-change ) eof //////////////////////// ?> </td> <td class="main" align="right"><?php echo tep_draw_hidden_field('products_id', $product_info['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_IN_CART); ?></td> <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> <td class="main"><?php echo getTaf('',addslashes($product_info['products_name'])); ?></td></tr> </table></td> </tr> </table></td> </tr> <tr> <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td> </tr> <tr> <td> <?php if ((USE_CACHE == 'true') && empty($SID)) { //echo tep_cache_also_purchased(3600); } else { //include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } } ?> </td> </tr> </table></form></td> <!-- body_text_eof //--> </tr> </table> <!-- body_eof //--> <!-- footer //--> <?php require(DIR_WS_INCLUDES . 'footer.php'); ?> <!-- footer_eof //--> </td> <td style="background: url(images/template/right_border.gif) repeat-y;width:7px;height:100%;"></td> </tr> </table> </div> </body> </html> <?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?> Here is the code from the also purchased file: <?php /* $Id: also_purchased_products.php 1739 2007-12-20 00:52:16Z hpdl $ osCommerce, Open Source E-Commerce Solutions http://www.oscommerce.com Copyright (c) 2003 osCommerce Released under the GNU General Public License */ if (isset($HTTP_GET_VARS['products_id'])) { $orders_query = tep_db_query("select p.products_id, p.products_image, pd.products_description, if(s.status, s.specials_new_products_price, p.products_price) as products_price from " . TABLE_PRODUCTS . " p left join " . TABLE_SPECIALS . " s on p.products_id = s.products_id, " . TABLE_ORDERS_PRODUCTS . " opa, " . TABLE_ORDERS_PRODUCTS . " opb, " . TABLE_ORDERS . " o, " . TABLE_PRODUCTS_DESCRIPTION . " pd where opa.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and opa.orders_id = opb.orders_id and opb.products_id != '" . (int)$HTTP_GET_VARS['products_id'] . "' and opb.products_id = p.products_id and opb.orders_id = o.orders_id and p.products_status = '1' group by p.products_id order by o.date_purchased desc limit " . MAX_DISPLAY_ALSO_PURCHASED); $num_products_ordered = tep_db_num_rows($orders_query); if ($num_products_ordered >= MIN_DISPLAY_ALSO_PURCHASED) { ?> <!-- also_purchased_products //--> <?php $info_box_contents = array(); $info_box_contents[] = array('text' => TEXT_ALSO_PURCHASED_PRODUCTS); new contentBoxHeading($info_box_contents); $row = 0; $col = 0; $info_box_contents = array(); while ($orders = tep_db_fetch_array($orders_query)) { $orders['products_name'] = tep_get_products_name($orders['products_id']); $info_box_contents[$row][$col] = array('align' => 'center', 'params' => 'class="smallText" width="33%" valign="top"', 'text' => ' <table width="275" cellspacing="0" cellpadding="0" style="border:1px solid #666666;margin-top:10px;background:#141414;"> <tr> <td width="100" height="100" bgcolor="#ffffff" align="center"> <p style="padding-top:5px;padding-bottom:5px;"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $orders['products_image'], $orders['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> </p> <p style="font-size:12px;font-weight:bold;font-family:Verdana, Arial, Helvetica, sans-serif;padding-bottom:10px;color:#56b8c7;"> ' . $currencies->display_price($orders['products_price'], tep_get_tax_rate($orders['products_tax_class_id'])) . ' </p> </td> <td width="10"></td> <td width="175" valign="top"> <p style="font-size:10px;font-weight:bold;font-family:Verdana, Arial, Helvetica, sans-serif;padding-top:5px;padding-right:5px;"> <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']) . '">' . $orders['products_name'] . '</a> </p> <p style="font-size:10px;font-family:Verdana, Arial, Helvetica, sans-serif;padding-top:5px;height:40px;margin:0;"> ' . substr($orders['products_description'],0, 80) .'<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']) . '">[...]</a> </p><br /> <p> <span style="font-size:18px;font-family:Verdana, Arial, Helvetica, sans-serif;padding-bottom:5px;color:#ffff00;"> '. tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')).' <a href="'.tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']).'">'.tep_image_button('button_details.gif', IMAGE_BUTTON_DETAILS).'</a>'.tep_draw_hidden_field('products_id', $orders['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_BY_NOW).' </form> </span> </p> </td> </tr> </table> '); $col ++; if ($col > 1) { $col = 0; $row ++; } } new contentBox($info_box_contents); ?> <!-- also_purchased_products_eof //--> <?php } } ?>
pdv Posted May 5, 2009 Author Posted May 5, 2009 Anybody seen this? The answer gets a paypal donation if you wish!
diy Posted May 5, 2009 Posted May 5, 2009 <?php if ((USE_CACHE == 'true') && empty($SID)) { //echo tep_cache_also_purchased(3600); } else { //include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } } ?> I cannot understand how also purchaced appear since they are commented out (?????) Try removing the // from lines 2 and 4 above and see what will happen
pdv Posted May 5, 2009 Author Posted May 5, 2009 <?php if ((USE_CACHE == 'true') && empty($SID)) { //echo tep_cache_also_purchased(3600); } else { //include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } } ?> I cannot understand how also purchaced appear since they are commented out (?????) Try removing the // from lines 2 and 4 above and see what will happen Sorry if I confused you. Please note I wrote in my original post as follows: As a temporary work around I have commented out the code that displays the "also purchased" box and this makes things work normally again. I would really like to use the "also purchased" feature though, so I am looking for a fix. I have commented them out so that users can buy my products. Obviously this removes the feature as well. Once I know the problem I will uncomment them again, of course, but my store is unuseable with them uncommented for now.
diy Posted May 5, 2009 Posted May 5, 2009 OK sorry you are right i didi not see the post !!! Anyway i changed my also_purchased to yours and yes when i ress buy now for the product it adds the also purchaced so the problem must be on also_purchaced. when I delete this part <span style="font-size:18px;font-family:Verdana, Arial, Helvetica, sans-serif;padding-bottom:5px;color:#ffff00;"> '. tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')).' <a href="'.tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']).'">'.tep_image_button('button_details.gif', IMAGE_BUTTON_DETAILS).'</a>'.tep_draw_hidden_field('products_id', $orders['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_BUY_NOW).' it does not happen anymore !!! (i mean look there I dont have a solution)
pdv Posted May 6, 2009 Author Posted May 6, 2009 OK sorry you are right i didi not see the post !!! Anyway i changed my also_purchased to yours and yes when i ress buy now for the product it adds the also purchaced so the problem must be on also_purchaced. when I delete this part <span style="font-size:18px;font-family:Verdana, Arial, Helvetica, sans-serif;padding-bottom:5px;color:#ffff00;"> '. tep_draw_form('cart_quantity', tep_href_link(FILENAME_PRODUCT_INFO, tep_get_all_get_params(array('action')) . 'action=add_product')).' <a href="'.tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $orders['products_id']).'">'.tep_image_button('button_details.gif', IMAGE_BUTTON_DETAILS).'</a>'.tep_draw_hidden_field('products_id', $orders['products_id']) . tep_image_submit('button_in_cart.gif', IMAGE_BUTTON_BUY_NOW).' it does not happen anymore !!! (i mean look there I dont have a solution) Thanks for your help. Have you modded your also_purchased? If not can you post it here and I can do a diff to see what maybe is wrong with mine . . . Thanks again for your help.
steve_s Posted May 10, 2009 Posted May 10, 2009 here is your problem <?php if ((USE_CACHE == 'true') && empty($SID)) { //echo tep_cache_also_purchased(3600); } else { //include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } } ?> </td> </tr> </table></form></td> <!-- body_text_eof //--> notice the </form> is after the also prichased module change to </form><?php if ((USE_CACHE == 'true') && empty($SID)) { //echo tep_cache_also_purchased(3600); } else { //include(DIR_WS_MODULES . FILENAME_ALSO_PURCHASED_PRODUCTS); } } ?> </td> </tr> </table></td> <!-- body_text_eof //-->
Recommended Posts
Archived
This topic is now archived and is closed to further replies.