Full service web hosting, great prices and support. Starts at $1.99/month!
Results 1 to 7 of 7

Thread: Product display issue

  1. #1
    dmiles
    Guest


    Default Product display issue

    I am in the process of migrating our site to v2 from v1.55. Something unexpected is displaying after the last product on the page.

    Here is a link to a sample page:
    http://66.197.244.229/~patricia/index.php?cPath=25

    Look under the last item (the green Romantic Roses purse) and you can see what looks like a column of gray bars. They look as though there was an attempt to list more items, but there was nothing there to be listed. The number of 'gray bars' that appear on any given page increases as the number of products on the page increase.

    When I look at the source for the page displayed, I see this after the products:

    <tr class="productListing-even">
    <td class="productListing-even"></td>
    </tr>
    <tr class="productListing-odd">
    <td class="productListing-odd"></td>
    </tr>
    <tr class="productListing-even">
    <td class="productListing-even"></td>
    </tr>
    <tr class="productListing-odd">
    <td class="productListing-odd"></td>
    </tr>
    <tr class="productListing-even">
    <td class="productListing-even"></td>
    </tr>
    <tr class="productListing-odd">
    <td class="productListing-odd"></td>
    </tr>

    This same setup worked fine in v1.55.

    Thank you in advance for any help.

  2. #2
    dmiles
    Guest


    Default

    I wanted to bring this issue to the top again to see if anyone has an idea of the cause of the problem.

    I uploaded and installed a stock store as a test. I also created a new database. I then created multiple products and the problem is still showing. When I display the products in one continuous column, the problem is not there. The problem only shows up when displaying multiple columns.

    TIA

  3. #3
    dmiles
    Guest


    Default

    I have submitted a bug report on this issue as I have seen the same problem on other osCMax sites.

  4. #4
    met00
    Guest


    Default

    the cause is a php error in the loop that is doing the line count. Which display module are you using (product_listing_col)?

  5. #5
    dmiles
    Guest


    Default

    I am not sure which module I am using. How can I tell? I am displaying products in multiple columns as opposed to one continuous column.

  6. #6
    dmiles
    Guest


    Default

    OK, it appears that I am using product_listing_col . Here is the code:

    <?php
    /*
    $Id: product_listing_col.php,v 1.3.4.1 2005/09/18 22:38:26 Michael Sasek Exp $
    */

    $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();

    if ($listing_split->number_of_rows > 0) {
    $row = 0;
    $column = 0;
    $listing_query = tep_db_query($listing_split->sql_query);
    // BOF Separate Pricing per Customer
    $no_of_listings = tep_db_num_rows($listing_query);
    // global variable (session) $sppc_customer_group_id -> local variable customer_group_id

    if(!tep_session_is_registered('sppc_customer_group _id')) {
    $customer_group_id = '0';
    } else {
    $customer_group_id = $sppc_customer_group_id;
    }

    while ($_listing = tep_db_fetch_array($listing_query)) {
    $listing[] = $_listing;
    $list_of_prdct_ids[] = $_listing['products_id'];
    }
    // next part is a debug feature, when uncommented it will print the info that this module receives
    /*
    echo '<pre>';
    print_r($listing);
    echo '</pre>';
    */
    $select_list_of_prdct_ids = "products_id = '".$list_of_prdct_ids[0]."' ";
    if ($no_of_listings > 1) {
    for ($n = 1; $n < count($list_of_prdct_ids); $n++) {
    $select_list_of_prdct_ids .= "or products_id = '".$list_of_prdct_ids[$n]."' ";
    }
    }

    // get all product prices for products with the particular customer_group_id
    // however not necessary for customer_group_id = 0
    if ($customer_group_id != '0') {
    $pg_query = tep_db_query("select pg.products_id, customers_group_price as price from " . TABLE_PRODUCTS_GROUPS . " pg where (".$select_list_of_prdct_ids.") and pg.customers_group_id = '".$customer_group_id."' ");
    // $no_of_pg_products = tep_db_num_rows($pg_query);
    while ($pg_array = tep_db_fetch_array($pg_query)) {
    $new_prices[] = array ('products_id' => $pg_array['products_id'], 'products_price' => $pg_array['price'], 'specials_new_products_price' => '', 'final_price' => $pg_array['price']);
    }
    for ($x = 0; $x < $no_of_listings; $x++) {
    // replace products prices with those from customers_group table
    if(!empty($new_prices)) {
    for ($i = 0; $i < count($new_prices); $i++) {
    if( $listing[$x]['products_id'] == $new_prices[$i]['products_id'] ) {
    $listing[$x]['products_price'] = $new_prices[$i]['products_price'];
    $listing[$x]['specials_new_products_price'] = $new_prices[$i]['specials_new_products_price'];
    $listing[$x]['final_price'] = $new_prices[$i]['final_price'];
    }
    }
    } // end if(!empty($new_prices)
    $listing[$x]['specials_new_products_price'] = ''; // makes sure that a retail specials price doesn't carry over to another customer group
    $listing[$x]['final_price'] = $listing[$x]['products_price']; // final price should not be the retail special price
    } // end for ($x = 0; $x < $no_of_listings; $x++)
    } // end if ($customer_group_id != '0')
    // an extra query is needed for all the specials

    $specials_query = tep_db_query("select products_id, specials_new_products_price from " . TABLE_SPECIALS . " where (".$select_list_of_prdct_ids.") and status = '1' and customers_group_id = '" .$customer_group_id. "'");
    while ($specials_array = tep_db_fetch_array($specials_query)) {
    $new_s_prices[] = array ('products_id' => $specials_array['products_id'], 'products_price' => '', 'specials_new_products_price' => $specials_array['specials_new_products_price'] , 'final_price' => $specials_array['specials_new_products_price']);
    }

    // add the correct specials_new_products_price and replace final_price
    for ($x = 0; $x < $no_of_listings; $x++) {

    if(!empty($new_s_prices)) {
    for ($i = 0; $i < count($new_s_prices); $i++) {
    if( $listing[$x]['products_id'] == $new_s_prices[$i]['products_id'] ) {
    $listing[$x]['specials_new_products_price'] = $new_s_prices[$i]['specials_new_products_price'];
    $listing[$x]['final_price'] = $new_s_prices[$i]['final_price'];
    }
    }
    } // end if(!empty($new_s_prices)
    } // end for ($x = 0; $x < $no_of_listings; $x++)

    // while ($listing = tep_db_fetch_array($listing_query)) { (was original code)
    for ($x = 0; $x < $no_of_listings; $x++) {

    $rows++;

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

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

    switch ($column_list[$col]) {
    case 'PRODUCT_LIST_MODEL':
    $lc_align = '';
    $lc_text = ' ' . $listing[$x]['products_model'] . ' ';
    break;
    case 'PRODUCT_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[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a>';
    } else {
    $lc_text = ' <a href="' . tep_href_link(FILENAME_PRODUCT_INFO, ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing[$x]['products_id']) . '">' . $listing[$x]['products_name'] . '</a> ';
    }
    break;
    case 'PRODUCT_LIST_MANUFACTURER':
    $lc_align = '';
    $lc_text = ' <a href="' . tep_href_link(FILENAME_DEFAULT, 'manufacturers_id=' . $listing[$x]['manufacturers_id']) . '">' . $listing[$x]['manufacturers_name'] . '</a> ';
    break;
    case 'PRODUCT_LIST_PRICE':
    $lc_align = 'right';


    if (tep_not_null($listing[$x]['specials_new_products_price'])) {
    $lc_text = ' <s>' . $currencies->display_price($listing[$x]['products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . '</s><br>  <span class="productSpecialPrice">' . $currencies->display_price($listing[$x]['specials_new_products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . '</span> ';
    } else {
    $lc_text = ' ' . $currencies->display_price($listing[$x]['products_price'], tep_get_tax_rate($listing[$x]['products_tax_class_id'])) . ' ';
    }
    break;
    case 'PRODUCT_LIST_QUANTITY':
    $lc_align = 'right';
    $lc_text = ' ' . $listing[$x]['products_quantity'] . ' ';
    break;
    case 'PRODUCT_LIST_WEIGHT':
    $lc_align = 'right';
    $lc_text = ' ' . $listing[$x]['products_weight'] . ' ';
    break;
    case 'PRODUCT_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[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['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[$x]['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing[$x]['products_image'], $listing[$x]['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a> ';
    }
    break; // EOF Separate Pricing per Customer
    case 'PRODUCT_LIST_BUY_NOW':
    $lc_align = 'center';
    $lc_text = '<a href="' . tep_href_link(basename($PHP_SELF), tep_get_all_get_params(array('action', 'pName')) . 'action=buy_now&products_id=' . $listing[$x]['products_id']) . '">' . tep_image_button('button_buy_now.gif', IMAGE_BUTTON_BUY_NOW) . '</a> ';
    break;
    }
    $product_contents[] = $lc_text;

    }
    $lc_text = implode('<br>', $product_contents);
    $list_box_contents[$row][$column] = array('align' => 'center',
    'params' => 'class="productListing-data"',
    'text' => $lc_text);
    $column ++;
    if ($column >= PRODUCT_LIST_NUM_COLUMNS) {
    $row ++;
    $column = 0;
    }
    }

    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')) ) {
    ?>
    <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
    }
    ?>

  7. #7
    met00
    Guest


    Default

    I can't debug for you, but I can tell you where I would put the debug lines.

    After
    Code:
    for ($x = 0; $x < $no_of_listings; $x++) {
    
    $rows++;
    add

    echo "start loop: rows =".$rows."<br>";

    After
    Code:
    or ($col=0, $n=sizeof($column_list); $col<$n; $col++) {
    $lc_align = '';
    echo "start loop: col =".$col."<br>";

    after
    Code:
     $list_box_contents[$row][$column] = array('align' => 'center',
    'params' => 'class="productListing-data"',
    'text' => $lc_text);
    echo "END loop: data =".urlencode($lc_text)."<br>";

    ##

    The goal here is to see HOW the loop is running and what it's trying to put into the table datas and table rows. If you see that you are getting END output with no data, then you can see why (possibly the floor(), but I wouldn't know unless I started debugging to determine what is happening ion the loops).

    Debugging in a loop is real simple. -
    1: check the start of the loop
    2: check at the end of the loop

    If you see things that aren't adding up, it's some math error in the processing of the loop.


    Here are the keys. This code is what is loading the array for the column display

    Code:
     $list_box_contents[$row][$column] = array('align' => 'center',
    'params' => 'class="productListing-data"',
    'text' => $lc_text);
    This code
    Code:
     new productListingBox($list_box_contents);
    it's creating the final content box and when that is called you want to what has been loaded into it (and that is the END loop output that you should have from the directions above.

    example of loading the array and then printing it:
    Code:
     
    $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);
    creates the column box with your no content/products message.

    Hope this helps you debug the code.

Similar Threads

  1. Issue with edit product description
    By auntie22 in forum osCmax v1.7 Discussion
    Replies: 1
    Last Post: 12-22-2005, 05:27 PM
  2. 1 product per line display - how?
    By jloyzaga in forum osCmax v1.7 Discussion
    Replies: 0
    Last Post: 03-25-2004, 02:24 AM
  3. Is there away to display the Product Name in the Title Bar?
    By interweb in forum osCommerce 2.2 Modification Help
    Replies: 0
    Last Post: 07-04-2003, 07:09 PM
  4. Anyone know of a mod to display multiple product images
    By Dr_Evil in forum osCommerce 2.2 Modification Help
    Replies: 8
    Last Post: 02-17-2003, 01:54 AM
  5. Editing New Product Display
    By ajabby in forum osCommerce 2.2 Modification Help
    Replies: 0
    Last Post: 02-05-2003, 12:19 PM

Bookmarks

Bookmarks

Posting Permissions

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