Tom Muck

Alpha Dog Blues Band
Home page
All articles
All Extensions | Extension News | Extension FAQs | Customer Login
Books authored or co-authored by Tom Muck
Extensions, books, and other products | Customer Login
Your current cart contents
Tom-Muck.com Blog | CMXTraneous Blog | Flash Remoting Blog
About the site

Add Comments Field

Adding a Comments Field to Cartweaver using Paypal

The following changes need to be made:

1. In the database, add a column for order_comments:

ALTER TABLE tbl_orders
ADD  order_comments varchar(255);

2. Change the order form to add a comment field (named cstComments):

CWIncOrderForm.php at or around line 261, add a form field:

     <tr class="altRowOdd">
           <td align="right">Comments</td>
           <td><textarea name="cstComments"></textarea></td>
     </tr>

3. Add a hidden form field to Paypal form on CWIncPayPal.php:

add form field at or around line 283:

<input type="hidden" name="comments" value="<?php echo($row_rsCWOrder["order_comments"]);?>">

4. Add a session variable to contain the comment field across form postings on CWIncOrderFormSetup.php line 27:

$_SESSION["checkingOut"] = "YES";

to this:

$_SESSION["checkingOut"] = "YES";
$_SESSION["order_comments"] = $_POST["cstComments"];

5. Add the field to the select statement on the confirmation page:

CWIncConfirmation.php line 38

$query_rsCWOrder = "SELECT O.order_ID,
O.order_TransactionID,
O.order_Date,
O.order_Status,
O.order_CustomerID,
O.order_Tax,
O.order_Shipping,
O.order_Total,
O.order_ShipMeth_ID,
O.order_ShipDate,
O.order_ShipTrackingID,
O.order_Address1,
O.order_Address2,
O.order_City,
O.order_State,
O.order_Zip,
O.order_Country,
O.order_Notes,
O.order_ActualShipCharge,
O.order_ShipName,
C.cst_FirstName,
C.cst_LastName,
C.cst_Email,
OS.orderSKU_SKU,
P.product_Name,
OS.orderSKU_Quantity,
OS.orderSKU_UnitPrice,
OS.orderSKU_SKUTotal,
SM.shipmeth_Name,
S.SKU_MerchSKUID
FROM tbl_orders O
INNER JOIN tbl_customers C
ON C.cst_ID = O.order_CustomerID
LEFT JOIN tbl_shipmethod SM
ON SM.shipmeth_ID = O.order_ShipMeth_ID
INNER JOIN tbl_orderskus OS
ON O.order_ID = OS.orderSKU_OrderID
INNER JOIN tbl_skus S
ON S.SKU_ID = OS.orderSKU_SKU
INNER JOIN tbl_products P
ON P.product_ID = S.SKU_ProductID
WHERE O.order_ID ='$thisOrderID'
ORDER BY P.product_Sort,
P.product_Name,
S.SKU_Sort,
S.SKU_ID;";

to:

$query_rsCWOrder = "SELECT O.order_ID,
O.order_TransactionID,
O.order_Date,
O.order_Status,
O.order_CustomerID,
O.order_Tax,
O.order_Shipping,
O.order_Total,
O.order_ShipMeth_ID,
O.order_ShipDate,
O.order_ShipTrackingID,
O.order_Address1,
O.order_Address2,
O.order_City,
O.order_State,
O.order_Zip,
O.order_Country,
O.order_Notes,
O.order_ActualShipCharge,
O.order_ShipName,
C.cst_FirstName,
C.cst_LastName,
C.cst_Email,
OS.orderSKU_SKU,
P.product_Name,
OS.orderSKU_Quantity,
OS.orderSKU_UnitPrice,
OS.orderSKU_SKUTotal,
SM.shipmeth_Name,
S.SKU_MerchSKUID,
O.order_comments
FROM tbl_orders O
INNER JOIN tbl_customers C
ON C.cst_ID = O.order_CustomerID
LEFT JOIN tbl_shipmethod SM
ON SM.shipmeth_ID = O.order_ShipMeth_ID
INNER JOIN tbl_orderskus OS
ON O.order_ID = OS.orderSKU_OrderID
INNER JOIN tbl_skus S
ON S.SKU_ID = OS.orderSKU_SKU
INNER JOIN tbl_products P
ON P.product_ID = S.SKU_ProductID
WHERE O.order_ID ='$thisOrderID'
ORDER BY P.product_Sort,
P.product_Name,
S.SKU_Sort,
S.SKU_ID;";

6. And display the comment in the email:

line 193:

           $emailContents .= "\nOrder Total: " . cartweaverMoney($row_rsCWOrder["order_Total"]);  ?>

TO:

           $emailContents .= "\nOrder Total: " . cartweaverMoney($row_rsCWOrder["order_Total"]); 
           $emailContents .= "\nOrder Comments: " . $row_rsCWOrder["order_comments"];  ?>

7. Insert the comment field into the order on CWIncProcessOrder.php line 138:

this:

/* Insert the order into the database */
$query_rsCWAddOrder = sprintf("INSERT INTO tbl_orders
(order_ID, order_CustomerID,
order_Tax, order_Shipping,
order_Total, order_Status,
order_ShipMeth_ID, order_Address1,
order_Address2, order_City,
order_Zip, order_Country,
order_State, order_TransactionID,
order_Date, order_ShipName)
VALUES ('%s','%s',%s,%s,%s,'%s',%s,'%s','%s','%s','%s','%s','%s','%s',now(),'%s')",
$thisOrderID
, $_SESSION["customerID"]
, mySQLFloat($_SESSION["taxAmt"])
, mySQLFloat($_SESSION["shipTotal"])
, mySQLFloat($_SESSION["orderTotal"])
, $orderStatusID
, $_SESSION["shipPref"]
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress1"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress2"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpCity"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpZip"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["country_Code"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["stprv_Code"])
, $transactionID
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpName"]));
$rsCWAddOrder = $cartweaver->db->executeQuery($query_rsCWAddOrder);

to this:

/* Insert the order into the database */
$query_rsCWAddOrder = sprintf("INSERT INTO tbl_orders
(order_ID, order_CustomerID,
order_Tax, order_Shipping,
order_Total, order_Status,
order_ShipMeth_ID, order_Address1,
order_Address2, order_City,
order_Zip, order_Country,
order_State, order_TransactionID,
order_Date, order_ShipName, order_comments)
VALUES ('%s','%s',%s,%s,%s,'%s',%s,'%s','%s','%s','%s','%s','%s','%s',now(),'%s','%s')",
$thisOrderID
, $_SESSION["customerID"]
, mySQLFloat($_SESSION["taxAmt"])
, mySQLFloat($_SESSION["shipTotal"])
, mySQLFloat($_SESSION["orderTotal"])
, $orderStatusID
, $_SESSION["shipPref"]
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress1"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpAddress2"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpCity"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpZip"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["country_Code"])
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["stprv_Code"])
, $transactionID
, $cartweaver->db->sqlSafe($row_rsCWGetCustShipping["cst_ShpName"])
, $_SESSION["order_comments"]);
$rsCWAddOrder = $cartweaver->db->executeQuery($query_rsCWAddOrder);

8. Finally, add a display to the Admin section on admin/OrderDetails.php

this (line 72):

$query_rsCWOrder = sprintf("SELECT
ss.shipstatus_Name,
o.order_ID,
o.order_TransactionID,
o.order_Date,
o.order_Status,
o.order_CustomerID,
o.order_Tax,
o.order_Shipping,
o.order_Total,
o.order_ShipMeth_ID,
o.order_ShipDate,
o.order_ShipTrackingID,
o.order_Address1,
o.order_Address2,
o.order_City,
o.order_State,
o.order_Zip,
o.order_Country,
o.order_Notes,
o.order_ActualShipCharge,
o.order_ShipName,
c.cst_FirstName,
c.cst_LastName,
os.orderSKU_SKU,
p.product_Name,
os.orderSKU_Quantity,
os.orderSKU_UnitPrice,
os.orderSKU_SKUTotal,
sm.shipmeth_Name,
s.SKU_ID,
s.SKU_MerchSKUID
FROM
tbl_products p
INNER JOIN tbl_skus s
ON p.product_ID = s.SKU_ProductID
INNER JOIN tbl_orderskus os
ON s.SKU_ID = os.orderSKU_SKU
INNER JOIN tbl_orders o
ON o.order_ID = os.orderSKU_OrderID
LEFT JOIN tbl_shipmethod sm
ON sm.shipmeth_ID = o.order_ShipMeth_ID
INNER JOIN tbl_list_shipstatus ss
ON ss.shipstatus_id = o.order_Status
INNER JOIN tbl_customers c
ON c.cst_ID = o.order_CustomerID
WHERE
o.order_ID='%s'
ORDER BY
p.product_Name,
s.SKU_Sort",$_GET["order_ID"]);

to this:

$query_rsCWOrder = sprintf("SELECT
ss.shipstatus_Name,
o.order_ID,
o.order_TransactionID,
o.order_Date,
o.order_Status,
o.order_CustomerID,
o.order_Tax,
o.order_Shipping,
o.order_Total,
o.order_ShipMeth_ID,
o.order_ShipDate,
o.order_ShipTrackingID,
o.order_Address1,
o.order_Address2,
o.order_City,
o.order_State,
o.order_Zip,
o.order_Country,
o.order_Notes,
o.order_ActualShipCharge,
o.order_ShipName,
c.cst_FirstName,
c.cst_LastName,
os.orderSKU_SKU,
p.product_Name,
os.orderSKU_Quantity,
os.orderSKU_UnitPrice,
os.orderSKU_SKUTotal,
sm.shipmeth_Name,
s.SKU_ID,
s.SKU_MerchSKUID,
o.order_comments
FROM
tbl_products p
INNER JOIN tbl_skus s
ON p.product_ID = s.SKU_ProductID
INNER JOIN tbl_orderskus os
ON s.SKU_ID = os.orderSKU_SKU
INNER JOIN tbl_orders o
ON o.order_ID = os.orderSKU_OrderID
LEFT JOIN tbl_shipmethod sm
ON sm.shipmeth_ID = o.order_ShipMeth_ID
INNER JOIN tbl_list_shipstatus ss
ON ss.shipstatus_id = o.order_Status
INNER JOIN tbl_customers c
ON c.cst_ID = o.order_CustomerID
WHERE
o.order_ID='%s'
ORDER BY
p.product_Name,
s.SKU_Sort",$_GET["order_ID"]);

9. And then a way to display it at or around line 257:

        <tr>
          <th align="right">Comments: </th>
          <td><textarea name="order_comments" cols="50" rows="15" id="order_comments"><?php
echo($row_rsCWOrder["order_comments"]);?></textarea></td>
        </tr>

Back to Cartweaver PHP FAQ, code changes, and samples

Pay me securely with your Visa, MasterCard, Discover, or American Express card through PayPal!
Pay me securely with your Visa, MasterCard, Discover, or American Express card through PayPal!
About | Privacy Policy | Contact | License Agreement | ©2002-2025 Tom Muck | Dreamweaver Extensions