Jump to content
  • Checkout
  • Login
  • Get in touch

osCommerce

The e-commerce.

(Contribution) Ajax Attribute Price change


Recommended Posts

Hi All,

 

I just installed Ajax Attribute Price Change. Basically the price shown on the product page should dynamically change based on what attributes a customer chooses before they even add to the shopping cart. The contribution is for OSC 2.2, but I'm using OSC 2.3.1. The code it modifies (I used manual installation) in product_info.php is basically the same as the OSC2.2 version. I uploaded the required ajax_onchange_price.php to my catalog directory too. But when I tested it out, I get an error on line 64 with the error details saying:

 

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

Message: Unknown runtime error

Line: 64

Char: 5

Code: 0

URI: http://scoutdigitalusa.elementfx.com/catalog/product_info.php/products_id/29

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

 

When I view the source code on the page, line 64 is part of this contribution's javascript in the <head> section inside the following "if" statement:

 

if(xmlHttpObj.readyState==4)

{

 

THIS IS LINE 64 ==> document.getElementById("display_price").innerHTML = xmlHttpObj.responseText;

 

}

 

This is a great contribution that many people were probably looking for, for a long time now. I have enough coding skill to make interface changes and such, but not in-depth in PHP and javascript. Any help will be great!

Link to comment
Share on other sites

  • 4 weeks later...

Hi All,

 

I just installed Ajax Attribute Price Change. Basically the price shown on the product page should dynamically change based on what attributes a customer chooses before they even add to the shopping cart. The contribution is for OSC 2.2, but I'm using OSC 2.3.1. The code it modifies (I used manual installation) in product_info.php is basically the same as the OSC2.2 version. I uploaded the required ajax_onchange_price.php to my catalog directory too. But when I tested it out, I get an error on line 64 with the error details saying:

 

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

Message: Unknown runtime error

Line: 64

Char: 5

Code: 0

URI: http://scoutdigitalusa.elementfx.com/catalog/product_info.php/products_id/29

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

 

When I view the source code on the page, line 64 is part of this contribution's javascript in the <head> section inside the following "if" statement:

 

if(xmlHttpObj.readyState==4)

{

 

THIS IS LINE 64 ==> document.getElementById("display_price").innerHTML = xmlHttpObj.responseText;

 

}

 

This is a great contribution that many people were probably looking for, for a long time now. I have enough coding skill to make interface changes and such, but not in-depth in PHP and javascript. Any help will be great!

Thanks and Regards

 

Soeb Shaikh

Link to comment
Share on other sites

please follow the manual installation.txt, also put ajax_onchange_price.php in your root folder where product_info.php is situated. i have tested also in osc2.3.1. and it will running nicely.

Thanks and Regards

 

Soeb Shaikh

Link to comment
Share on other sites

Hi ssoeb, sorry for my bad English, is a translation of google.

I tried your contribution but does not work with the prices of the products on offer.

I refer to the version 2.2

 

Have you checked this?

 

 

Thanks for your help.

 

Greetings,

figue

Link to comment
Share on other sites

Hi,

 

I am trying to integrate this into 2.3.1 which has QTPro installed and I am struggling with adapting the following line

 

$out.='<tr><td align="right" class=main><strong>'.$attributes[$o]['oname'].":</strong></td><td class=main>".tep_draw_pull_down_menu('id['.$attributes[$o]['oid'].']',array_values($attributes[$o]['ovals']),$attributes[$o]['default'], "onchange=\"stkmsg(this.form);\"")."</td></tr>\n";

 

to incorporate this line from the manual installation txt file.

 

echo tep_draw_pull_down_menu('id[' . $products_options_name['products_options_id'] . ']', $products_options_array, 		  $selected_attribute,' id="cmbooption_'.$opt_count.'"  onChange="getPrice('.$product_info['products_price'].','.(int)$HTTP_GET_VARS['products_id'].','.$all_option_js.')"'); ?></td>

 

Any help would be appreciated.

 

Thanks

 

Mark

Link to comment
Share on other sites

Hi,

 

I integrated the contribution in my shop and it works, but it changes the currency symbol (€) to an unknown symbol (�).

It looks like a mismatch of the encoding tables. I am running my shop on utf-8, but if I change the character encoding in browser to 8859-1 I get the € sign back.

I tried with the encoding of the ajax_onchange_price.php but had no success. Is there a place in the code itself that I could change to get it working?

 

Any help will be great!

Link to comment
Share on other sites

  • 2 weeks later...

I get the following error when using your productinfo.php supplied. The script works fine, but i have this annoying error at the top of my screen.

 

 

"Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/pandpi5/public_html/www.headercardpackaging.com/catalog/product_info.php:1) in /home/pandpi5/public_html/www.headercardpackaging.com/catalog/includes/functions/sessions.php on line 102"

 

Any help would be greatly appreciated. Thanks!

Edited by demonhunter704
Link to comment
Share on other sites

  • 1 month later...

I get the following error when using your productinfo.php supplied. The script works fine, but i have this annoying error at the top of my screen.

 

 

"Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/pandpi5/public_html/www.headercardpackaging.com/catalog/product_info.php:1) in /home/pandpi5/public_html/www.headercardpackaging.com/catalog/includes/functions/sessions.php on line 102"

 

Any help would be greatly appreciated. Thanks!

 

 

Remove

 

<script type="text/javascript">
function getxmlHttpObj()
{
	var xmlHttp;
	try
	{
		// Firefox, Opera 8.0+, Safari
		xmlHttp=new XMLHttpRequest();
	}
	catch (e)
	{
		// Internet Explorer
		try
		{
			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			try
			{
				xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
			}
			catch (e)
			{
				alert("Your browser does not support AJAX!");
				return false;
			}
		}
	}
	return xmlHttp;
}

function getPrice(price,product_id,attr_arr)
{
	opt_id = document.getElementById("optionsid").value;

	xmlHttpObj = getxmlHttpObj();

	xmlHttpObj.onreadystatechange=function()
	{
		if(xmlHttpObj.readyState==4)
		{
			document.getElementById("display_price").innerHTML =  xmlHttpObj.responseText;
		}
	}
	xmlHttpObj.open("GET","ajax_onchange_price.php?price="+price+"&option_id="+opt_id+"&product_id="+product_id+"&product_opt="+attr_arr,true);
	xmlHttpObj.send();

}
</script>

 

from the product_info.php page (OSC231 only) and add this code to the includes/template_top.php file before the </head>

If it don't fit - Get a bigger hammer

Link to comment
Share on other sites

  • 3 weeks later...
  • 5 months later...

Is there an actual manual install.txt for 2.3.1? I kept getting T_String error and I know this has to do with a missing element, but without help I could not transpose between the two versions. Please help!

 

Thanks.

 

please follow the manual installation.txt, also put ajax_onchange_price.php in your root folder where product_info.php is situated. i have tested also in osc2.3.1. and it will running nicely.

Link to comment
Share on other sites

  • 1 month later...

I see that you had a note that said to put the <head> statement into includes/template_top.php. However, as you go further with the instructions you will find that very few things in the instructions are for 2.3.1. The files are not in there.

 

I would not install this until there is instructions for 2.3.1 as it does not work.

Link to comment
Share on other sites

  • 2 weeks later...

i got this to work on 2.2 which is great because the other contributions had problems.

 

quick question though, there seems to be a number formating problem. when going through the drop down choices of different attributes. If you go through the list and return to another attribute, the number doesn't round up to the hundredths.

 

Instead of showing $27.95 it will show $27.949999999999992

 

http://www.alcotesters.com/safeway-disposable-breathalyzer-p-47.html

 

here is my page to see the problem in action. any suggestion would be great. thanks!

Link to comment
Share on other sites

  • 3 months later...

You must use the sprintf function.

 

sample, if you have in ajax_onchange_prince.php this:

 

echo '<td class="main" align="right" colspan=3 id="display_price"><h3>' . $products_price . '</h3></td>';

 

change it to.

 

$products_price2 = sprintf("%01.2f", $products_price);

echo '<td class="main" align="right" colspan=3 id="display_price"><h3>' . $products_price2 . '</h3></td>';

 

Also add:

$products_price2 = sprintf("%01.2f", $products_price);

 

And change $products_price to $products_price2

Link to comment
Share on other sites

  • 1 year later...

I have some attributes that have parenthesis in the the name. for example 15(12v) Watt. The price change does not occur in this situation. Is there a work around for this?

Edited by NimaP
Link to comment
Share on other sites

  • 2 years later...

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