Page 1 of 2

New order comments box not working

Posted: Tue Apr 15, 2025 12:49 pm
by Rich-Os
Hello,

So, I need another order comments box in the order process system.
In the Phoenix version that I'm using, the order comments box appears in the checkout_shipping, checkout_payment & checkout_confirmation pages.
I have hard coded the new comment box (comments_new)into checkout_shipping.php, checkout_payment.php and checkout_confirmation.php. Also, in checkout_process.php ($sql_data_array array, email confirmation and unregister session sections).
I have also added a new column (comments_new) to the orders_status_history table in the database.

The comments_new box appears in all the pages like it's supposed to.
The problem is the texts entered into the comments_new box on the checkout_shipping page do not appear on the checkout_payment page and neither in the comments_new column in the database table.

Have I missed defining the new variable somewhere else I needed to? May be the session or something else? Please advise.

Thank you.

Store is running:
OSCOM CE Phoenix v1.0.5.0
MySQL 5.5.5-10.2.31-MariaDB
7.2.5 (Zend 3.2.0)

Re: New order comments box not working

Posted: Tue Apr 15, 2025 1:36 pm
by burt
Look for everywhere where the word `comments` is found.
You've likely missed a few, most likely carrying the session.

I wonder why you could not just use one input box for everything?

Re: New order comments box not working

Posted: Tue Apr 15, 2025 2:20 pm
by Rich-Os
burt wrote: Tue Apr 15, 2025 1:36 pm Look for everywhere where the word `comments` is found.
You've likely missed a few, most likely carrying the session.
I did that using $comments. I guess I must have missed a few like you said. I will do it again using just "comment" like you suggested.

burt wrote: Tue Apr 15, 2025 1:36 pm I wonder why you could not just use one input box for everything?
The existing input box should have been sufficient in most cases but the information the new box is needed for is specific and this is just to avoid mistakes being made by users thinking the information is already part of the information given in the first input box.

Thank you so much Burt!

Re: New order comments box not working

Posted: Tue Apr 15, 2025 4:54 pm
by Rich-Os
burt wrote: Tue Apr 15, 2025 1:36 pm Look for everywhere where the word `comments` is found.
You've likely missed a few, most likely carrying the session.

I wonder why you could not just use one input box for everything?

As suspected, I did miss the account_historyinfo.php.
The input texts now show up in checkout_shipping, checkout_payment but not in checkout_confirmation .

Below is the section where I think the problem lies:
<?php
if (tep_not_null($order->info['comments'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>

<div class="border mb-3">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<?php
echo '<i class="fas fa-comments fa-fw fa-3x float-right text-black-50"></i>';
echo nl2br(tep_output_string_protected($order->info['comments'])) . tep_draw_hidden_field('comments', $order->info['comments']);
?>
</li>
</ul>
</div>
<?php
}
if (tep_not_null($order->info['comments_new'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>

<div class="border mb-3">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<?php
echo '<i class="fas fa-comments fa-fw fa-3x float-right text-black-50"></i>';
echo nl2br(tep_output_string_protected($order->info['comments_new'])) . tep_draw_hidden_field('comments_new', $order->info['comments_new']);
?>
</li>
</ul>
</div>
<?php
}

if (is_array($payment_modules->modules)) {
if ($confirmation = $payment_modules->confirmation()) {
?>
<hr>
<h5 class="mb-1"><?php echo HEADING_PAYMENT_INFORMATION; ?></h5>
<div class="row">
<?php
The problem I'm still having with comments_new is:
With this: if (tep_not_null($order->info['comments_new'], the comments_new box does not appear.
With this: if (tep_not_null($order->info['comments'], the comments_new box appears but without the texts input from the checkout_payment page.

Is this a php syntax error or something else? Please advise.

Thank you.

Re: New order comments box not working

Posted: Tue Apr 15, 2025 4:58 pm
by burt
Suggest you take a very close look at the code you just posted - it should immediately leap out at you why the `comments_new` text does not show near fas fa-comments icon.

Re: New order comments box not working

Posted: Tue Apr 15, 2025 6:20 pm
by Rich-Os
burt wrote: Tue Apr 15, 2025 4:58 pm Suggest you take a very close look at the code you just posted - it should immediately leap out at you why the `comments_new` text does not show near fas fa-comments icon.
You're right. The code posted is now corrected to comment_new. It is correctly defined in the actual file though. Thank you.

The problem is still there. Box is not showing unless I define : if (tep_not_null($order->info['comments'])) {
Texts are not showing up.

Is there a check or validation for session on the confirmation page that I need to look at?

Below is my checkout_confirmation.php
<?php
/*
$Id$

osCommerce, Open Source E-Commerce Solutions
http://www.oscommerce.com

Copyright (c) 2018 osCommerce

Released under the GNU General Public License
*/

require('includes/application_top.php');

$OSCOM_Hooks->register_pipeline('progress');

// if the customer is not logged on, redirect them to the login page
if (!tep_session_is_registered('customer_id')) {
$navigation->set_snapshot(array('mode' => 'SSL', 'page' => 'checkout_payment.php'));
tep_redirect(tep_href_link('login.php', '', 'SSL'));
}

// if there is nothing in the customers cart, redirect them to the shopping cart page
if ($cart->count_contents() < 1) {
tep_redirect(tep_href_link('shopping_cart.php'));
}

// avoid hack attempts during the checkout procedure by checking the internal cartID
if (isset($cart->cartID) && tep_session_is_registered('cartID')) {
if ($cart->cartID != $cartID) {
tep_redirect(tep_href_link('checkout_shipping.php', '', 'SSL'));
}
}

// if no shipping method has been selected, redirect the customer to the shipping method selection page
if (!tep_session_is_registered('shipping')) {
tep_redirect(tep_href_link('checkout_shipping.php', '', 'SSL'));
}

if (!tep_session_is_registered('payment')) tep_session_register('payment');
if (isset($_POST['payment'])) $payment = $_POST['payment'];

if (!tep_session_is_registered('comments')) tep_session_register('comments');
if (isset($_POST['comments']) && tep_not_null($_POST['comments'])) {
$comments = tep_db_prepare_input($_POST['comments']);
}

// added for comments_new
if (!tep_session_is_registered('comments_new')) tep_session_register('comments_new');
if (isset($_POST['comments_new']) && tep_not_null($_POST['comments_new'])) {
$comments_new = tep_db_prepare_input($_POST['comments_new']);
}

// load the selected payment module
require('includes/classes/payment.php');
$payment_modules = new payment($payment);

require('includes/classes/order.php');
$order = new order;

$payment_modules->update_status();

if ( ($payment_modules->selected_module != $payment) || ( is_array($payment_modules->modules) && (sizeof($payment_modules->modules) > 1) && !is_object($$payment) ) || (is_object($$payment) && ($$payment->enabled == false)) ) {
tep_redirect(tep_href_link('checkout_payment.php', 'error_message=' . urlencode(ERROR_NO_PAYMENT_MODULE_SELECTED), 'SSL'));
}

if (is_array($payment_modules->modules)) {
$payment_modules->pre_confirmation_check();
}

// load the selected shipping module
require('includes/classes/shipping.php');
$shipping_modules = new shipping($shipping);

require('includes/classes/order_total.php');
$order_total_modules = new order_total;
$order_total_modules->process();

// Stock Check
$any_out_of_stock = false;
if (STOCK_CHECK == 'true') {
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
if (tep_check_stock($order->products[$i]['id'], $order->products[$i]['qty'])) {
$any_out_of_stock = true;
}
}
// Out of Stock
if ( (STOCK_ALLOW_CHECKOUT != 'true') && ($any_out_of_stock == true) ) {
tep_redirect(tep_href_link('shopping_cart.php'));
}
}

require('includes/languages/' . $language . '/checkout_confirmation.php');

$breadcrumb->add(NAVBAR_TITLE_1, tep_href_link('checkout_shipping.php', '', 'SSL'));
$breadcrumb->add(NAVBAR_TITLE_2);

require('includes/template_top.php');
?>

<h1 class="display-4"><?php echo HEADING_TITLE; ?></h1>

<?php
if ($messageStack->size('checkout_confirmation') > 0) {
echo $messageStack->output('checkout_confirmation');
}

if (isset($$payment->form_action_url)) {
$form_action_url = $$payment->form_action_url;
} else {
$form_action_url = tep_href_link('checkout_process.php', '', 'SSL');
}

echo tep_draw_form('checkout_confirmation', $form_action_url, 'post');
?>

<div class="contentContainer">
<div class="row">
<div class="col-sm-7">
<h5 class="mb-1"><?php echo LIST_PRODUCTS; ?><small><a class="font-weight-lighter ml-2" href="<?php echo tep_href_link('shopping_cart.php', '', 'SSL'); ?>"><?php echo TEXT_EDIT; ?></a></small>
</h5>
<div class="border">
<ul class="list-group list-group-flush">
<?php
for ($i=0, $n=sizeof($order->products); $i<$n; $i++) {
echo '<li class="list-group-item">';
echo '<span class="float-right">' . $currencies->display_price($order->products[$i]['final_price'], $order->products[$i]['tax'], $order->products[$i]['qty']) . '</span>';
echo '<h5 class="mb-1">' . $order->products[$i]['name'] . '<small> x ' . $order->products[$i]['qty'] . '</small></h5>';
if ( (isset($order->products[$i]['attributes'])) && (sizeof($order->products[$i]['attributes']) > 0) ) {
echo '<p class="w-100 mb-1">';
for ($j=0, $n2=sizeof($order->products[$i]['attributes']); $j<$n2; $j++) {
echo '- ' . $order->products[$i]['attributes'][$j]['option'] . ': ' . $order->products[$i]['attributes'][$j]['value'] . '<br>';
}
echo '</p>';
}
echo '</li>';
}
?>
</ul>
<table class="table mb-0">
<?php
if (MODULE_ORDER_TOTAL_INSTALLED) {
echo $order_total_modules->output();
}
?>
</table>
</div>
</div>
<div class="col-sm-5">
<h5 class="mb-1"><?php echo ORDER_DETAILS; ?></h5>
<div class="border">
<ul class="list-group list-group-flush">
<?php
if ($sendto != false) {
echo '<li class="list-group-item">';
echo '<i class="fas fa-shipping-fast fa-fw fa-3x float-right text-black-50"></i>';
echo '<h5 class="mb-0">' . HEADING_DELIVERY_ADDRESS . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_shipping_address.php', '', 'SSL') . '">' . TEXT_EDIT . '</a></small></h5>';
echo '<p class="w-100 mb-1">' . tep_address_format($order->delivery['format_id'], $order->delivery, 1, ' ', '<br />') . '</p>';
echo '</li>';
}
echo '<li class="list-group-item">';
echo '<i class="fas fa-file-invoice-dollar fa-fw fa-3x float-right text-black-50"></i>';
echo '<h5 class="mb-0">' . HEADING_BILLING_ADDRESS . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment_address.php', '', 'SSL') . '">' . TEXT_EDIT . '</a></small></h5>';
echo '<p class="w-100 mb-1">' . tep_address_format($order->billing['format_id'], $order->billing, 1, ' ', '<br />') . '</p>';
echo '</li>';
if ($order->info['shipping_method']) {
echo '<li class="list-group-item">';
echo '<h5 class="mb-1">' . HEADING_SHIPPING_METHOD . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_shipping.php', '', 'SSL') . '">' . TEXT_EDIT . '</a></small></h5>';
echo '<p class="w-100 mb-1">' . $order->info['shipping_method'] . '</p>';
echo '</li>';
}
echo '<li class="list-group-item">';
echo '<h5 class="mb-1">' . HEADING_PAYMENT_METHOD . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' . TEXT_EDIT . '</a></small></h5>';
echo '<p class="w-100 mb-1">' . $order->info['payment_method'] . '</p>';
echo '</li>';
?>
</ul>

</div>
</div>
</div>

<?php
if (tep_not_null($order->info['comments'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>

<div class="border mb-3">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<?php
echo '<i class="fas fa-comments fa-fw fa-3x float-right text-black-50"></i>';
echo nl2br(tep_output_string_protected($order->info['comments'])) . tep_draw_hidden_field('comments', $order->info['comments']);
?>
</li>
</ul>
</div>

<?php
}


if (tep_not_null($order->info['comments'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>

<div class="border mb-3">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<?php
echo '<i class="fas fa-comments fa-fw fa-3x float-right text-black-50"></i>';
echo nl2br(tep_output_string_protected($order->info['comments_new'])) . tep_draw_hidden_field('comments_new', $order->info['comments_new']);
?>
</li>
</ul>
</div>

<?php
}



if (is_array($payment_modules->modules)) {
if ($confirmation = $payment_modules->confirmation()) {
?>
<hr>

<h5 class="mb-1"><?php echo HEADING_PAYMENT_INFORMATION; ?></h5>

<div class="row">
<?php
if (tep_not_null($confirmation['title'])) {
echo '<div class="col">';
echo '<div class="bg-light border p-3">';
echo $confirmation['title'];
echo '</div>';
echo '</div>';
}
if (isset($confirmation['fields'])) {
echo '<div class="col">';
echo '<div class="alert alert-info" role="alert">';
$fields = '';
for ($i=0, $n=sizeof($confirmation['fields']); $i<$n; $i++) {
$fields .= $confirmation['fields'][$i]['title'] . ' ' . $confirmation['fields'][$i]['field'] . '<br>';
}
if (strlen($fields) > 4) echo substr($fields,0,-4);
echo '</div>';
echo '</div>';
}
?>
</div>
<div class="w-100"></div>

<?php
}
}

echo $OSCOM_Hooks->call('siteWide', 'injectFormDisplay');
?>

<div class="buttonSet mt-3">
<div class="text-right">
<?php
if (is_array($payment_modules->modules)) {
echo $payment_modules->process_button();
}
echo tep_draw_button(IMAGE_BUTTON_FINALISE_ORDER, 'fas fa-check-circle', null, 'primary', null, 'btn-success btn-block btn-lg');
?>
</div>
</div>

<div class="progressBarHook">
<?php
$parameters = [
'style' => 'progress-bar progress-bar-striped progress-bar-animated bg-info',
'markers' => ['position' => 3, 'min' => 0, 'max' => 100, 'now' => 100],
];
echo $OSCOM_Hooks->call('progress', 'progressBar', $parameters);
?>
</div>

</div>

</form>

<?php
require('includes/template_bottom.php');
require('includes/application_bottom.php');
?>

Re: New order comments box not working

Posted: Tue Apr 15, 2025 7:19 pm
by Omar_one
Rich-Os wrote: Tue Apr 15, 2025 6:20 pm
The problem is still there. Box is not showing unless I define : if (tep_not_null($order->info['comments'])) {
Texts are not showing up.
should be if (tep_not_null($order->info['comments_new'])) {

Code: Select all

if (tep_not_null($order->info['comments_new'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>
not

Code: Select all

if (tep_not_null($order->info['comments'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>

Re: New order comments box not working

Posted: Wed Apr 16, 2025 11:08 am
by Rich-Os
Omar_one wrote: Tue Apr 15, 2025 7:19 pm
Rich-Os wrote: Tue Apr 15, 2025 6:20 pm
The problem is still there. Box is not showing unless I define : if (tep_not_null($order->info['comments'])) {
Texts are not showing up.
should be if (tep_not_null($order->info['comments_new'])) {

Code: Select all

if (tep_not_null($order->info['comments_new'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>
not

Code: Select all

if (tep_not_null($order->info['comments'])) {
?>
<h5 class="mb-1"><?php echo HEADING_ORDER_COMMENTS_NEW . '<small><a class="font-weight-lighter ml-2" href="' . tep_href_link('checkout_payment.php', '', 'SSL') . '">' .TEXT_EDIT . '</a></small>'; ?></h5>
@Omar_one , thank you for your reply.

I think you might have misunderstood what I'm trying to do.
There are two comments boxes.
The existing one is defined as 'comments'. This works well.
The new one is defined as 'comments_new'. This doesn't work (in checkout_confirmation.php).

But if I define the new one 'comments_new' as 'comments', then the box shows up but the texts doesn't and the texts are also not saved in the comments_new database table column.
Why is checkout_confirmation.php having issue with the 'comments_new' but checkout_shipping.php and checkout_payment.php are not ?

Thank you.

Re: New order comments box not working

Posted: Wed Apr 16, 2025 11:22 am
by Rich-Os
burt wrote: Tue Apr 15, 2025 1:36 pm Look for everywhere where the word `comments` is found.
You've likely missed a few, most likely carrying the session.
@burt
I think this line of code below is causing the problem for the comments_new box in checkout_confirmation.php:
echo nl2br(tep_output_string_protected($order->info['comments_new'])) . tep_draw_hidden_field('comments_new', $order->info['comments_new']);
If I used this code below, then the box and the texts show up but the texts are not saved in the database:
if (tep_not_null($order->info['comments'])) {

echo tep_draw_textarea_field('comments_new', 'soft', 60, 5, $comments_new, 'id="inputCommentsNew" placeholder="' . ENTRY_COMMENTS_NEW_PLACEHOLDER . '"');
What can I do?
Please advise.

Thank you.

Re: New order comments box not working

Posted: Thu Apr 17, 2025 9:44 am
by burt
app.php/developers

Here are 3 developers to get a quote from. Getting a quote costs you nothing other than the time to write an email.

v1050 is very old, so maybe don't expect to too much in the way of help.