Jump to content
Sign in to follow this  
crossbow888

(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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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

Share this post


Link to post
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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

In osc 2.3.1 there is no <head> in product_info.php making the directions not able to be followed where it begins by saying:

 

Change the following set of codes in your product_info.php page.

 

Place the following code for AJAX in your <head> tag.

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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!

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Hi All,

 

Can anybody help me out? I am trying to install this addon but I have Child Attributes installed and am using Radio buttons instead of a drop down box.

 

Thanks in advance

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×