Increasing the item in Cart when adding the same product

Problems installing or using the NOP Design Free Shopping Cart that do not fit into one of the above categories.

Moderators: Koibito, Stefko, Randy

Increasing the item in Cart when adding the same product

Postby foreigner » Tue Mar 09, 2010 8:27 pm

Hi all,

Somewhow my

if ( !bAlreadyInCart ) {
iNumberOrdered++;

script does not work. If I add the same item to the cart once again, the item adds itself as a new line to the cart
instead incresing its amount within the cart. I could not find out why.
Any help is appreciated.

Here is my AddToCart script:
Code: Select all
//---------------------------------------------------------------------||
// FUNCTION:    AddToCart                                              ||
// PARAMETERS:  Form Object                                            ||
// RETURNS:     Cookie to user's browser, with prompt                  ||
// PURPOSE:     Adds a product to the user's shopping cart             ||
//---------------------------------------------------------------------||
function AddToCart(thisForm) {
   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   var notice = "";
   iNumberOrdered = GetCookie("NumberOrdered");

   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   if ( thisForm.ID_NUM == null )
      strID_NUM    = "";
   else
      strID_NUM    = thisForm.ID_NUM.value;

   if ( thisForm.QUANTITY == null )
      strQUANTITY  = "1";
   else
      strQUANTITY  = thisForm.QUANTITY.value;

   if ( thisForm.PRICE == null )
      strPRICE     = "0.00";
   else
      strPRICE     = thisForm.PRICE.value;

   if ( thisForm.NAME == null )
      strNAME      = "";
   else
      strNAME      = thisForm.NAME.value;

   if ( thisForm.SHIPPING == null )
      strSHIPPING  = "0.00";
   else
      strSHIPPING  = thisForm.SHIPPING.value;

   if ( thisForm.ADDITIONALINFO == null ) {
      strADDTLINFO = ".";
   } else {
      strADDTLINFO = thisForm.ADDITIONALINFO[thisForm.ADDITIONALINFO.selectedIndex].value;
   }
   
   if ( thisForm.ADDITIONALINFO1 != null ) {
      strADDTLINFO += thisForm.ADDITIONALINFO1[thisForm.ADDITIONALINFO1.selectedIndex].value;
   }
   if ( thisForm.productCode != null ) {
      strADDTLINFO += "-"+thisForm.productCode.value;
   }

   if ( thisForm.FILENAME == null )
      strFILENAME      = "";
   else
      strFILENAME      = thisForm.FILENAME.value;

   if ( thisForm.EXT == null )
      strEXT      = "";
   else
      strEXT      = thisForm.EXT.value;

   if ( thisForm.CTYPE == null )
      strCTYPE      = "";
   else
      strCTYPE      = thisForm.CTYPE.value;
    
   if ( thisForm.IMAGESRC == null )
      strIMAGESRC      = "";
   else
      strCIMAGESRC      = thisForm.IMAGESRC.value;

   //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
     Token5 = database.indexOf("|", Token4+1);
     Token6 = database.indexOf("|", Token5+1);
     Token7 = database.indexOf("|", Token6+1);
     Token8 = database.indexOf("|", Token7+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
     fields[5] = database.substring( Token4+1, Token5 );
     fields[6] = database.substring( Token5+1, Token6 );
     fields[7] = database.substring( Token6+1, Token7 );
     fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, database.length );

      if ( fields[0] == strID_NUM &&
           fields[2] == strPRICE  &&
           fields[3] == strNAME   &&
           fields[5] == strADDTLINFO &&
         fields[6] == strFILENAME &&
         fields[6] == strEXT &&
         fields[7] == strCTYPE &&
         fields[8] == strCIMAGESRC
         ) {
         bAlreadyInCart = true;
         dbUpdatedOrder = strID_NUM    + "|" +
                          (parseInt(strQUANTITY)+parseInt(fields[1]))  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO + "|" +
                    strFILENAME  + "|" +
                    strEXT      + "|" +
                    strCTYPE     + "|" +
                    strCIMAGESRC;
         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         notice = strQUANTITY + " " + strNAME + strAdded;
         break;
      }
   }


if ( !bAlreadyInCart ) {
      iNumberOrdered++;
   

      if ( iNumberOrdered > 7 )
      alert( strSorry );
      else {
         dbUpdatedOrder = strID_NUM    + "|" +
                          strQUANTITY  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING  + "|" +
                          strADDTLINFO + "|" +
                    strFILENAME  + "|" +
                    strEXT      + "|" +
                    strCTYPE     + "|" +
                    strCIMAGESRC;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
         //notice = strQUANTITY + " " + "ad." + " " + strNAME + strAdded;
      }
   }

   if ( DisplayNotice && notice != "")
      alert(notice);
}
foreigner
WebMaster
 
Posts: 3
Joined: Fri Jun 17, 2005 10:33 am

Re: Increasing the item in Cart when adding the same product

Postby auntnana21 » Wed Mar 10, 2010 9:46 pm

I'm having the exact same problem! Any help would be appreciated. Either increasing the quantity or throwin up an alert works for me. Just want one of them to work.
Code: Select all
//---------------------------------------------------------------------||
// FUNCTION:    AddToCart                                              ||
// PARAMETERS:  Form Object                                            ||
// RETURNS:     Cookie to user's browser, with prompt                  ||
// PURPOSE:     Adds a product to the user's shopping cart             ||
//---------------------------------------------------------------------||
function AddToCart(thisForm) {
   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   var notice = "";
   
   iNumberOrdered = GetCookie("NumberOrdered");

   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   if ( thisForm.ID_NUM == null )
      strID_NUM    = "";
   else
      strID_NUM    = thisForm.ID_NUM.value;

   if ( thisForm.QUANTITY == null )
      strQUANTITY  = "1";
   else
      strQUANTITY  = thisForm.QUANTITY.value;

   if ( thisForm.PRICE == null )
      strPRICE     = "0.00";
   else
      strPRICE     = thisForm.PRICE.value;

   if ( thisForm.NAME == null )
      strNAME      = "";
   else
      strNAME      = thisForm.NAME.value;

  if ( thisForm.SHIPPING == null )
      strSHIPPING  = "0.00";
   else
      strSHIPPING  = thisForm.SHIPPING.value;

   if ( thisForm.ADDEDFIELD == null )
      strADDEDFIELD  = "";
   else
      strADDEDFIELD  = thisForm.ADDEDFIELD.value;

   if ( thisForm.ADDEDFIELD2 == "select" )
     strADDEDFIELD2 = "";
   else
      strADDEDFIELD2  = thisForm.ADDEDFIELD2.value;
    
     if ( thisForm.ADDEDFIELD3 == null )
      strADDEDFIELD  = "";
   else
      strADDEDFIELD3  = thisForm.ADDEDFIELD3.value;
    
   
   if ( thisForm.ADDITIONALINFO == null ) {
      strADDTLINFO = "";
   } else {
      strADDTLINFO = thisForm.ADDITIONALINFO.value;
   }
   if ( thisForm.ADDITIONALINFO2 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value;
   }
   if ( thisForm.ADDITIONALINFO3 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value;
   }
   if ( thisForm.ADDITIONALINFO4 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value;
   }




   

   //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
     Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
     Token7 = database.indexOf("|", Token6+1);
     Token8 = database.indexOf("|", Token7+1);


      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
     fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, database.length );


      if ( fields[0] == strID_NUM &&
         fields[1] == strQUANTITY &&
           fields[3] == strName &&
           fields[8] == strADDEDFIELD3
         
         
         ) {
         bAlreadyInCart = true;
      dbUpdatedOrder = strID_NUM    + "|" +
                          (parseInt(strQUANTITY)+parseInt(fields[1]))  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING     + "|" +
                          strADDTLINFO    + "|" +
                          strADDEDFIELD   + "|" +
                    strADDEDFIELD2   + "|" +
                          strADDEDFIELD3;

         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, expires, "/");
        notice = strID_NUM + " " + strQUANTITY + " " + strPRICE + " " + strNAME + " " + strADDTLINFO + " " + strADDEDFIELD + " " +  strADDEDFIELD2 + " " + strADDEDFIELD3;
         break;
      }
   }


   if ( !bAlreadyInCart ) {
      iNumberOrdered++;


      if ( iNumberOrdered > 50 )
         alert( strSorry );
      else {
         dbUpdatedOrder = strID_NUM    + "|" +
                          strQUANTITY  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING     + "|" +
                          strADDTLINFO    + "|" +
                          strADDEDFIELD   + "|" +
                    strADDEDFIELD2   + "|" +
                          strADDEDFIELD3;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
         notice = strID_NUM + " " + strQUANTITY + " " + strPRICE + " " + strNAME + " " + strADDTLINFO + " " + strADDEDFIELD + " " +  strADDEDFIELD2 + " " + strADDEDFIELD3;
         
             }
   }

   if ( DisplayNotice )
      alert(notice);
    return false;
}

auntnana21
WebMaster
 
Posts: 16
Joined: Wed Oct 07, 2009 1:58 pm

Re: Increasing the item in Cart when adding the same product

Postby auntnana21 » Thu Mar 18, 2010 12:45 pm

I got it to work finally. I went back and added field by field until it worked.
Code: Select all
 //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
     Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
     Token7 = database.indexOf("|", Token6+1);
     Token8 = database.indexOf("|", Token7+1);


      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
     fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, database.length );


      if ( fields[0] == strID_NUM &&
         fields[1] == strQUANTITY &&
           fields[2] == strPRICE  &&
           fields[3] == strNAME   &&
         fields[4] == strSHIPPING &&
         fields[5] == strADDTLINFO &&
         fields[6] == strADDEDFIELD &&
         fields[7] == strADDEDFIELD2 &&
           fields[8] == strADDEDFIELD3
         
         ) {
         bAlreadyInCart = true;
          dbUpdatedOrder = strID_NUM    + "|" +
                          (parseInt(strQUANTITY)+parseInt(fields[1]))  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING     + "|" +
                          strADDTLINFO    + "|" +
                          strADDEDFIELD   + "|" +
                    strADDEDFIELD2   + "|" +
                          strADDEDFIELD3;

         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
        notice = strID_NUM + " " +strQUANTITY + " " + strPRICE + " " +strNAME + " " + strSHIPPING + " " +strADDTLINFO + strADDEDFIELD + strADDEDFIELD2 +strADDEDFIELD3;
         break;
      }
   }


   if ( !bAlreadyInCart ) {
      iNumberOrdered++;

      if ( iNumberOrdered > 12)
         alert( strSorry );
      else {
         dbUpdatedOrder = strID_NUM    + "|" +
                          strQUANTITY  + "|" +
                          strPRICE     + "|" +
                          strNAME      + "|" +
                          strSHIPPING     + "|" +
                          strADDTLINFO    + "|" +
                          strADDEDFIELD   + "|" +
                    strADDEDFIELD2   + "|" +
                          strADDEDFIELD3;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
          notice = strID_NUM + " " +strQUANTITY + " " + strPRICE + " " +strNAME + " " + strSHIPPING + " " +strADDTLINFO + strADDEDFIELD + strADDEDFIELD2 +strADDEDFIELD3;
      
      }
   }

   if ( DisplayNotice )
      alert(notice);


}
auntnana21
WebMaster
 
Posts: 16
Joined: Wed Oct 07, 2009 1:58 pm


Return to Help: Cart / General

Who is online

Users browsing this forum: No registered users and 0 guests