Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Problem: Product not found....but - contribution


Recommended Posts

Hi alle

using the contribution:

http://addons.oscommerce.com/info/2821

 

with great success.

However somehow the product when in use, shows customers 2 of each product.

 

here is an example:

customer tries to reach a product id not availble in store:

http://www.groundstyle.com/catalog/product...roducts_id=1405

the list generated by the contribution, show some products duplicate.

I think the reason is that the same product is represented in more than 1 product category.

 

So - do anyone know how to alter the code in product_info.php (the modified contribution code), so that it will only display any given product 1 time?

 

here is the modified code where the change should be made:

 

************

OLD CODE BEFORE CONTRIBUTION IMPLENTATION:

************

 

 

<?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>

 

 

************

REPLACED WITH:

************

 

 

<?php

if ($product_check['total'] < 1) {

?>

<tr>

<td><table border="0" width="100%" cellspacing="0" cellpadding="0">

<tr>

<td class="pageHeading"><?php echo TEXT_HEADER_ITEM_NOT_FOUND; ?></td>

<td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_default.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>

</tr>

</table></td>

</tr>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

<tr>

<td><?php new infoBox(array(array('text' => TEXT_PRODUCT_NOT_FOUND))); ?></td>

</tr>

 

<?php

 

// the requested product could not be found. But we do not give up.

// Check if it was disabled and get the category id of that product

$product_check_query = tep_db_query("select pc.categories_id

from " . TABLE_PRODUCTS . " p,

" . TABLE_PRODUCTS_DESCRIPTION . " pd,

" . TABLE_PRODUCTS_TO_CATEGORIES . " pc

where p.products_status != '1' and

p.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and

pd.products_id = p.products_id and

pd.products_id = pc.products_id and

pd.language_id = '" . (int)$languages_id . "'");

 

 

if ($product_check = tep_db_fetch_array($product_check_query)) { // product exists but disabled

 

// then we do a query of the other products in the same category

// and we display them below using the product_listing module

$listing_sql = "select p.products_model,

pd.products_name,

p.products_image,

p.products_quantity,

p.products_id,

p.manufacturers_id,

p.products_price,

p.products_tax_class_id,

IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price,

IF(s.status, s.specials_new_products_price, p.products_price) as final_price

from " . TABLE_PRODUCTS_DESCRIPTION . " pd,

" . TABLE_CATEGORIES . " c,

" . TABLE_PRODUCTS . " p left join

" . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id,

" . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join

" . TABLE_SPECIALS . " s on p.products_id = s.products_id

where p.products_status = '1' and

p.products_id = p2c.products_id and

pd.products_id = p2c.products_id and

p2c.categories_id = c.categories_id and

c.categories_id = " . $product_check['categories_id'] . " and

pd.language_id = '" . (int)$languages_id . "'";

 

} else { // no, the product is totally absent, we are running out of options, so lets do a query anyway with a variation on the product id.

 

$wrong_id = $HTTP_GET_VARS['products_id'];

$size = strlen($wrong_id)-2;

$wrong_id = substr($wrong_id, 1,$size);

$listing_sql = "select p.products_model,

pd.products_name,

p.products_image,

p.products_quantity,

p.products_id,

p.manufacturers_id,

p.products_price,

p.products_tax_class_id,

IF(s.status, s.specials_new_products_price, NULL) as specials_new_products_price,

IF(s.status, s.specials_new_products_price, p.products_price) as final_price

from " . TABLE_PRODUCTS_DESCRIPTION . " pd,

" . TABLE_CATEGORIES . " c,

" . TABLE_PRODUCTS . " p left join

" . TABLE_MANUFACTURERS . " m on p.manufacturers_id = m.manufacturers_id,

" . TABLE_PRODUCTS_TO_CATEGORIES . " p2c left join

" . TABLE_SPECIALS . " s on p.products_id = s.products_id

where p.products_status = '1' and

p.products_id = p2c.products_id and

pd.products_id = p2c.products_id and

p2c.categories_id = c.categories_id and

p.products_id like '%" . $wrong_id . "%' and

pd.language_id = '" . (int)$languages_id . "'";

}

 

// create column list

$define_list = array('PRODUCT_LIST_MODEL' => PRODUCT_LIST_MODEL,

'PRODUCT_LIST_NAME' => PRODUCT_LIST_NAME,

'PRODUCT_LIST_MANUFACTURER' => PRODUCT_LIST_MANUFACTURER,

'PRODUCT_LIST_PRICE' => PRODUCT_LIST_PRICE,

'PRODUCT_LIST_QUANTITY' => PRODUCT_LIST_QUANTITY,

'PRODUCT_LIST_WEIGHT' => PRODUCT_LIST_WEIGHT,

'PRODUCT_LIST_IMAGE' => PRODUCT_LIST_IMAGE,

'PRODUCT_LIST_BUY_NOW' => PRODUCT_LIST_BUY_NOW);

 

asort($define_list);

 

$column_list = array();

reset($define_list);

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

if ($value > 0) $column_list[] = $key;

}

 

$select_column_list = '';

 

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

switch ($column_list[$i]) {

case 'PRODUCT_LIST_MODEL':

$select_column_list .= 'p.products_model, ';

break;

case 'PRODUCT_LIST_NAME':

$select_column_list .= 'pd.products_name, ';

break;

case 'PRODUCT_LIST_MANUFACTURER':

$select_column_list .= 'm.manufacturers_name, ';

break;

case 'PRODUCT_LIST_QUANTITY':

$select_column_list .= 'p.products_quantity, ';

break;

case 'PRODUCT_LIST_IMAGE':

$select_column_list .= 'p.products_image, ';

break;

case 'PRODUCT_LIST_WEIGHT':

$select_column_list .= 'p.products_weight, ';

break;

}

}

 

 

if ( (!isset($HTTP_GET_VARS['sort'])) || (!ereg('[1-8][ad]', $HTTP_GET_VARS['sort'])) || (substr($HTTP_GET_VARS['sort'], 0, 1) > sizeof($column_list)) ) {

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

if ($column_list[$i] == 'PRODUCT_LIST_MODEL') {

$HTTP_GET_VARS['sort'] = $i+1 . 'a';

$listing_sql .= " order by p.products_model";

break;

}

}

} else {

$sort_col = substr($HTTP_GET_VARS['sort'], 0 , 1);

$sort_order = substr($HTTP_GET_VARS['sort'], 1);

$listing_sql .= ' order by ';

switch ($column_list[$sort_col-1]) {

case 'PRODUCT_LIST_MODEL':

$listing_sql .= "p.products_model " . ($sort_order == 'd' ? 'desc' : '');

break;

case 'PRODUCT_LIST_NAME':

$listing_sql .= "pd.products_name " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";

break;

case 'PRODUCT_LIST_MANUFACTURER':

$listing_sql .= "m.manufacturers_name " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";

break;

case 'PRODUCT_LIST_QUANTITY':

$listing_sql .= "p.products_quantity " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";

break;

case 'PRODUCT_LIST_IMAGE':

$listing_sql .= "p.products_model";

break;

case 'PRODUCT_LIST_WEIGHT':

$listing_sql .= "p.products_weight " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";

break;

case 'PRODUCT_LIST_PRICE':

$listing_sql .= "final_price " . ($sort_order == 'd' ? 'desc' : '') . ", p.products_model";

break;

}

}

 

?>

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

 

<tr>

<td><?php include(DIR_WS_MODULES . FILENAME_PRODUCT_LISTING); ?></td>

</tr>

 

<tr>

<td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

</tr>

 

---------------

 

Hope someone out there with a input?

 

thanks :=)

Dedicated OsCommerce user. 2011 will be the return of OsC

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...