Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

Caught in the Tables war


donthecat

Recommended Posts

My product info / description page has been erratic.

 

I been at this for a couple of days. I'm sure that it is overlapping tables or tr / td tags , b'cos all the information needed on the products info page is appearing; just that the layout is haywire. I've included my product_info.php code here. I tried various permutations and combinations, but all in vain.Any help would be welcome.

 

<?php

/*

  $Id: product_info.php,v 1.98 2003/09/02 18:52:33 project3000 Exp $

 

  osCommerce, Open Source E-Commerce Solutions

  http://www.oscommerce.com

 

  Copyright © 2003 osCommerce

 

  Released under the GNU General Public License

*/

 

  require('includes/application_top.php');

 

  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>

<meta http-equiv="Content-Type" content="text/html; charset=<?php echo CHARSET; ?>">

<title><?php echo TITLE; ?></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>

</head>

<body marginwidth="0" marginheight="0" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0">

<!-- header //-->

<?php require(DIR_WS_INCLUDES . 'header.php'); ?>

<!-- header_eof //-->

 

<!-- 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 bgcolor="#CCFFCC">

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

// BOF MaxiDVD: Modified For Ultimate Images Pack!

    $product_info_query = tep_db_query("select p.products_retail_price, p.products_id, pd.products_name, pd.products_description, p.products_model, p.products_quantity, p.products_image, p.products_image_med, p.products_image_lrg, p.products_image_sm_1, p.products_image_xl_1, p.products_image_sm_2, p.products_image_xl_2, p.products_image_sm_3, p.products_image_xl_3, p.products_image_sm_4, p.products_image_xl_4, p.products_image_sm_5, p.products_image_xl_5, p.products_image_sm_6, p.products_image_xl_6, 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 . "'");

// EOF MaxiDVD: Modified For Ultimate Images Pack!

    $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 width="100%" border="6" cellpadding="2" cellspacing="0">

          <tr bordercolor="#663366">

            <td valign="top" bordercolor="#CCFFCC" bgcolor="#CCFFCC" class="pageHeading"><?php echo $products_name; ?></td>

            <td align="right" valign="top" bordercolor="#CCFFCC" bgcolor="#CCFFCC" class="pageHeading"><?php echo $products_price; ?></td>

          </tr>

        </table></td>

      </tr>

      <tr>

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

      </tr>

 

<table align =center width=100%>

      <tr><td align = "left" class="main">

<?php

if ($product_info['products_retail_price'] != 0) {

 

{

// Get the retail price & clean up the decimal places

$retail = ($currencies->display_price($product_info['products_retail_price'],tep_get_tax_rate($product_info['products_tax_class_id'])));

$strlen = strlen($retail);

if (NEW_FIELDS_DECIMAL == 0) { ($strlen = ($strlen - 3)); } // Set the decimal places

if (NEW_FIELDS_DECIMAL == 1) { ($strlen = ($strlen - 1)); } // We don't need em here

$retail = substr(($currencies->display_price($product_info['products_retail_price'],tep_get_tax_rate($product_info['products_tax_class_id']))),0,$strlen) ;

 

// Couldn't think of a better way to do the next part, if you can think of one, let me know... 

 

  if ($new_price = tep_get_products_special_price($product_info['products_id']))

  {  // If there is a special ... Special Overrides customer discount...

    $our = ((tep_get_products_special_price($product_info['products_id'])));

    $save = ((($our) / ($product_info['products_retail_price'])) * 100);

    $our = ($currencies->display_price($our,tep_get_tax_rate($product_info['products_tax_class_id'])));

    $strlen = strlen($our);

    if (NEW_FIELDS_DECIMAL == 0) { ($strlen = ($strlen - 3)); } // Set the decimal places

    if (NEW_FIELDS_DECIMAL == 1) { ($strlen = ($strlen - 1)); } // We don't need em here

    $our = substr(($currencies->display_price($new_price,tep_get_tax_rate($product_info['products_tax_class_id']))),0,$strlen);

  }

 

  if ((strstr($customer_discount, "-") != 0)) // && ((tep_get_products_special_price($product_info['products_id'])) == null))

  { // If there isn't a special, but still a customer discount... We'll need those decimals....

    $our = ($product_info['products_price']);

    $our = $our - $our * abs($customer_discount) / 100;

    $save = ((($our) / ($product_info['products_retail_price'])) * 100);

    $our = ($currencies->display_price_nodiscount($our,tep_get_tax_rate($product_info['products_tax_class_id'])));

  } // End cust discount

 

  if ((strstr($customer_discount, "-") == 0) && ((tep_get_products_special_price($product_info['products_id'])) == null)) 

  { // Just a regular price

    $our = ($product_info['products_price']);

    $save = ((($our) / ($product_info['products_retail_price'])) * 100);

    $our = ($currencies->display_price($our,tep_get_tax_rate($product_info['products_tax_class_id'])));

    $strlen = strlen($our);

    if (NEW_FIELDS_DECIMAL == 0) { ($strlen = ($strlen - 3)); } // Set the decimal places

    if (NEW_FIELDS_DECIMAL == 1) { ($strlen = ($strlen - 1)); } // We don't need em here

    $our = substr(($currencies->display_price($product_info['products_price'],tep_get_tax_rate($product_info['products_tax_class_id']))),0,$strlen);

  } // End of regular price

 

$save = (100 - $save);

$save = round($save); ?>

<?php 

  echo TEXT_PRODUCTS_RETAIL_PRICE_INFO . $retail ;

  echo TEXT_PRODUCTS_PRICE_INFO . $our;

  echo TEXT_PRODUCTS_SAVE_INFO . $save . '%</font>'; } 

?>

  </td>

       

<?php

    }

?>

<?php

    if (tep_not_null($product_info['products_image'])) {

?>

       

            <td align="right" class="smallText">

 

<!-- // BOF MaxiDVD: Modified For Ultimate Images Pack! //-->

<?php

if ($product_info['products_image_med']!='') {

          $new_image = $product_info['products_image_med'];

          $image_width = MEDIUM_IMAGE_WIDTH;

          $image_height = MEDIUM_IMAGE_HEIGHT;

        } else {

          $new_image = $product_info['products_image'];

          $image_width = SMALL_IMAGE_WIDTH;

          $image_height = SMALL_IMAGE_HEIGHT;}?>

 

 

<script language="javascript"><!--

      document.write('<?php echo '<a href="java script:popupWindow(\\\'' . tep_href_link(FILENAME_POPUP_IMAGE, 'pID=' . $product_info['products_id'] . 'ℑ=0') . '\\\')">' . TEXT_CLICK_TO_ENLARGE .'<br>' .tep_image(DIR_WS_IMAGES . $new_image, addslashes($product_info['products_name']), $image_width, $image_height, 'hspace="5" vspace="5"'); ?>');

//--></script>

<noscript>

      <?php echo '<a href="' . tep_href_link(DIR_WS_IMAGES . $product_info['products_image_med']) . '">' . tep_image(DIR_WS_IMAGES . $new_image . 'ℑ=0', addslashes($product_info['products_name']), $image_width, $image_height, 'hspace="5" vspace="5"') . '<br>' . tep_image_button('image_enlarge.gif', TEXT_CLICK_TO_ENLARGE) . '</a>'; }

?>

</noscript>

<!-- // EOF MaxiDVD: Modified For Ultimate Images Pack! //-->

         

</td></tr>

 

        <table width="100%" border="0" cellpadding="2" cellspacing="0"><tr><td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>

<td><p><?php echo stripslashes($product_info['products_description']); ?></p></td></tr></table>

 

<?php

if (OPTIONS_AS_IMAGES_ENABLED == 'false'){

    $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) {

?>

       

<?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_id");

      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

      }

?>

<?php

    }

//Options as Images. Add the curly bracket as shown on the next line

}

?>

<?php

//Options as Images. This whole php clause needs to be added

if (OPTIONS_AS_IMAGES_ENABLED == 'true') include ('options_images.php');

?>

 

 

<?php

// BOF MaxiDVD: Modified For Ultimate Images Pack!

if (ULTIMATE_ADDITIONAL_IMAGES == 'Enable') { include(DIR_WS_MODULES . 'additional_images.php'); }

// BOF MaxiDVD: Modified For Ultimate Images Pack!

; ?>

        <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 . " r, " . TABLE_REVIEWS_DESCRIPTION . " rd where r.products_id = '" . (int)$HTTP_GET_VARS['products_id'] . "' and r.reviews_id = rd.reviews_id and rd.languages_id = '" . (int)$languages_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><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" 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>

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

    <td width="<?php echo BOX_WIDTH; ?>" valign="top"><table border="0" width="<?php echo BOX_WIDTH; ?>" cellspacing="0" cellpadding="2">

<!-- right_navigation //-->

<?php require(DIR_WS_INCLUDES . 'column_right.php'); ?>

<!-- right_navigation_eof //-->

    </table></td>

  </tr>

</td>

      </tr>

</table>

<!-- body_eof //-->

 

<!-- footer //-->

<?php require(DIR_WS_INCLUDES . 'footer.php'); ?>

<!-- footer_eof //-->

<br>

</body>

</html>

<?php require(DIR_WS_INCLUDES . 'application_bottom.php'); ?>

 

Thanks a Mil

 

:D

--- DontheCat ---

 

Obviously the truth is what's so

Not so obviously, it's also so what.

Link to comment
Share on other sites

If you think you have an extra <td> or something like that, you can try using an editor like HTML-Kit that will show you the matching tags. Although in this case it would probably still be a chore. How about going through the code and removing everything that is correct (obviously using a backup file)? So if you look in the code and see

<tr><td>Hello There</td></tr>

remove it since it is fine. Eventually, hopefully, you will get down to a more manageable section of code and the problem will pop out at you.

 

HTH,

Jack

Support Links:

For Hire: Contact me for anything you need help with for your shop: upgrading, hosting, repairs, code written, etc.

All of My Addons

Get the latest versions of my addons

Recommended SEO Addons

Link to comment
Share on other sites

I think I know where your problem lies:

 

 

$save = (100 - $save);
$save = round($save); ?>
<?php  
 echo TEXT_PRODUCTS_RETAIL_PRICE_INFO . $retail; 
 echo TEXT_PRODUCTS_PRICE_INFO . $our; 
 echo TEXT_PRODUCTS_SAVE_INFO . $save . '%</font>'; }  
?>
 </td>
       
<?php
   }
?>

 

Replace with:

 

	$save = (100 - $save);
$save = round($save); ?>
           </td>
          </tr>
         </table>
<?php  
 echo TEXT_PRODUCTS_RETAIL_PRICE_INFO . '<s>' . $retail; 
 echo '</s>' . TEXT_PRODUCTS_PRICE_INFO . $our; 
 echo TEXT_PRODUCTS_SAVE_INFO . $save . '%</font>'; }  
} else { ?>
             </td>
           </tr> 
         </table>
   <?php 
}   
// End EZier new fields contrib (Noel Latsha)

?>

 

See if that works...Or helps...But its probably around that area...

 

Also, do you have a link?

9 times out of 10 its a PEBCAK Error (Problem exists between chair and keyboard)

 

Replace that and you're fine...

Link to comment
Share on other sites

Jack> I use Dreamweaver MX Latest Version which can easily ID nested tags or braces, but as you say it's a chore still. And here my tags are matching, just that there is some problems with the tables placement. Thanks for the tip

 

Noel>I'll try out your suggestion and revert. I really liked your Ezier Contrib and so don't want to remove it. That's why this is taking time. As I'd written to you, there is a clash when i integrate the HTML WYSIWYG Editor Contrib and yours.

 

The eshop is Opposite the Cafe . Though the particular problem will not be visible there as I'm still struggling at the local level. :blink:

 

I'll make the changes and upload by 4 PM IST.

 

Thanks folks for the suggestions

 

Cheers

--- DontheCat ---

 

Obviously the truth is what's so

Not so obviously, it's also so what.

Link to comment
Share on other sites

Noel>I'll try out your suggestion and revert. I really liked your Ezier Contrib and so don't want to remove it. That's why this is taking time. As I'd written to you, there is a clash when i integrate the HTML WYSIWYG Editor Contrib and yours.

 

Cool, let me know what you had to do and I'll incorporate that into the next release, 4.0. That'll probably be out in a couple of days (maybe)

9 times out of 10 its a PEBCAK Error (Problem exists between chair and keyboard)

 

Replace that and you're fine...

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...