close ad
 
Important WebAssist Announcement
open ad
View Menu

Technical Support Forums

Free, outstanding support from WebAssist and your colleagues

rating

dynamic discount codes

Thread begun 11/16/2010 6:53 am by rob75685 | Last modified 11/29/2010 7:00 am by Jason Byrnes | 4108 views | 10 replies |

rob75685

dynamic discount codes

hi there

I've followed the following instructions carefully, but none of my dynamic codes work...

I've attached my files, if you could have a look please that would be great

many thanks

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

Originally Posted by Jason Byrnes
First off, you should follow the solution recipe for static coupon codes to get coupon codes working. That tutorial can be found In the Solution Recipes section of the eCart Support Page titled "Creating a Coupon system for your eCart store":
ecart/


To convert that to be database driven:

1) Create a table in your database to hold the coupon codes. it should have a structure similar to:
couuponID - Auto Number, Primary key Column.
couponCode - varchar
couponAmount - double


To add a coupon code of "test" that will give a 10% discount, you would create the follwoing record:
couponID | couponCode | couponAmount
1 | test | 0.10

2) Next is to add a recordset to the page to lookup the coupon amount based on the code the user enters.

On the server behaviors panel, click the plus button and select Recordset. In Simple view, set the record set to use the coupon table we created. Set the name of the recordset to "rsCoupon" In the Filtering Section, set it to filter the couponCode column Equal to the Form Variable txtPromoCode, this is name of the text box created in the coupon code system tutorial.

3) Now we need to create another session variable to hold the discount amount. On the server behaviors panel, click the plus button and select eCart -> General -> Set Session Value. Set the trigger to "recordset rsCoupon Not Empty". Set the name of the session variable to "PromoAmount". Click the lightning bolt next to value, expand the rsCoupon recordset and select the couponAmount column.

4) The PromoCode session variable needs to be modified as well. Set the trigger to "recordset rsCoupon Not Empty" so it will only get set if the promcode sexists in the database.

5) The last step is to modify the Promotional Discount rule in eCart. Remove the "If Session variable == WebAssist" triger.

Add a new trigger "Session variable exists "PromoCode""

Add another trigger "Session variable exists "PromoAmount""

Then Modify the charge rule "Bases on Cart SubTotal "Times" "$_SESSION['PromoAmount']"

so that the discount will use the value stored in the session variable from the database.

Sign in to reply to this post

Jason ByrnesWebAssist

the first issue I see that needs to be corrected is that the code for setting the session variables is before the code for the recordset.

the session variables use recordet values, so need to be created after the recordset.

change the code at line 8 - 60:

php:
<?php

if (!session_id()) session_start();
if(!(
$totalRows_rsCoupon == 0))     {
  
$_SESSION["PromoCode"] = "".((isset($_POST["txtPromoCode"]))?$_POST["txtPromoCode"]:"")  ."";
}
?>
<?php
if (!session_id()) session_start();
if(!(
$totalRows_rsCoupon == 0))     {
  
$_SESSION["PromoAmount"] = "".$row_rsCoupon['couponAmount']  ."";
}
?>
<?php

if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$colname_rsCoupon "-1";
if (isset(
$_POST['txtPromoCode'])) {
  
$colname_rsCoupon = (get_magic_quotes_gpc()) ? $_POST['txtPromoCode'] : addslashes($_POST['txtPromoCode']);
}
mysql_select_db($database_hellolittleone$hellolittleone);
$query_rsCoupon sprintf("SELECT * FROM coupons WHERE couponCode = %s"GetSQLValueString($colname_rsCoupon"text"));
$rsCoupon mysql_query($query_rsCoupon$hellolittleone) or die(mysql_error());
$row_rsCoupon mysql_fetch_assoc($rsCoupon);
$totalRows_rsCoupon mysql_num_rows($rsCoupon);
?>




to:

php:
<?php


if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}
}

$colname_rsCoupon "-1";
if (isset(
$_POST['txtPromoCode'])) {
  
$colname_rsCoupon = (get_magic_quotes_gpc()) ? $_POST['txtPromoCode'] : addslashes($_POST['txtPromoCode']);
}
mysql_select_db($database_hellolittleone$hellolittleone);
$query_rsCoupon sprintf("SELECT * FROM coupons WHERE couponCode = %s"GetSQLValueString($colname_rsCoupon"text"));
$rsCoupon mysql_query($query_rsCoupon$hellolittleone) or die(mysql_error());
$row_rsCoupon mysql_fetch_assoc($rsCoupon);
$totalRows_rsCoupon mysql_num_rows($rsCoupon);
?>
<?php
if (!session_id()) session_start();
if(!(
$totalRows_rsCoupon == 0))     {
  
$_SESSION["PromoCode"] = "".((isset($_POST["txtPromoCode"]))?$_POST["txtPromoCode"]:"")  ."";
}
?>
<?php
if (!session_id()) session_start();
if(!(
$totalRows_rsCoupon == 0))     {
  
$_SESSION["PromoAmount"] = "".$row_rsCoupon['couponAmount']  ."";
}
?>



so the sessions will be created after the recordset.

Sign in to reply to this post

rob75685

hi Jason

Thanks very much for your quick reply

That works thank you - but there are a couple of minor issues now:

1. The Discount row doesn't appear in the cart, even though the correct discount is applied to the total

2. Whatever happens I can't clear the discount.. even if I remove it from the database and add something else to the cart the discount is still applying...

many thanks

Sign in to reply to this post

rob75685

hi Jason

sorry point 2 is working ok now - just ned help on point 1 please

Sign in to reply to this post

Jason ByrnesWebAssist

when you created the cart display, did you include the discounts line?


In the cart display manager, the third page allows you to set whether discounts, tax, shipping are displayed, make sure to set discounts to either Summary or individually.

Sign in to reply to this post

rob75685

Yes I think so - but before adding the dynamic coupons the discount used to appear once I entered the code.. but now it doesn't

I've just added it manually so it's there all the time - is that how it should be now ?

thanks

Sign in to reply to this post

Jason ByrnesWebAssist

if it worked before, it should still work now, can you send a copy of the cart page so i can look at the code.

Sign in to reply to this post

rob75685

Cart.php

hi Jason

Cart attached

many thanks

Sign in to reply to this post

Jason ByrnesWebAssist

change:

php:
<?php

//WA eCart Merchandizing Show Start
//ecart="eCart1"
if ($eCart1->GetDiscounts() > 0)     {
?>
            <?php
//WA eCart Merchandizing Show End
//ecart="eCart1"
}
?>




to:

php:
<?php

//WA eCart Merchandizing Show Start
//ecart="eCart1"
if ($eCart1->GetDiscounts() > 0)     {
?>
<tr>
              <td class="eC_SummaryLabel">Shipping</td>
              <td>£<?php echo WA_eCart_DisplayMoney($eCart1$eCart1->GetDiscounts()); ?></td>
            </tr>
            <?php
//WA eCart Merchandizing Show End
//ecart="eCart1"
}
?>
Sign in to reply to this post

rob75685

Brilliant !

Thanks Jason

Sign in to reply to this post
loading

Build websites with a little help from your friends

Your friends over here at WebAssist! These Dreamweaver extensions will assist you in building unlimited, custom websites.

Build websites from already-built web applications

These out-of-the-box solutions provide you proven, tested applications that can be up and running now.  Build a store, a gallery, or a web-based email solution.

Want your website pre-built and hosted?

Close Windowclose

Rate your experience or provide feedback on this page

Account or customer service questions?
Please user our contact form.

Need technical support?
Please visit support to ask a question

Content

rating

Layout

rating

Ease of use

rating

security code refresh image

We do not respond to comments submitted from this page directly, but we do read and analyze any feedback and will use it to help make your experience better in the future.

Close Windowclose

We were unable to retrieve the attached file

Close Windowclose

Attach and remove files

add attachmentAdd attachment
Close Windowclose

Enter the URL you would like to link to in your post

Close Windowclose

This is how you use right click RTF editing

Enable right click RTF editing option allows you to add html markup into your tutorial such as images, bulleted lists, files and more...

-- click to close --

Uploading file...