New order comments box not working

Open to all! Ask other shopowners for help.
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

New order comments box not working

Post 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)


Join The Code Co-op to get access to your library in the Code Co-op Forum
User avatar
burt
Core Team
Posts: 4551
Joined: Tue Oct 29, 2019 9:37 am
Phoenix Version: v1.1.0.8
Has thanked: 252 times
Been thanked: 412 times

Re: New order comments box not working

Post 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?
I am not here to build for you.
I am here to build with you. Let's help each other.
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

Re: New order comments box not working

Post 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!
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

Re: New order comments box not working

Post 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.
Last edited by Rich-Os on Tue Apr 15, 2025 5:28 pm, edited 1 time in total.
User avatar
burt
Core Team
Posts: 4551
Joined: Tue Oct 29, 2019 9:37 am
Phoenix Version: v1.1.0.8
Has thanked: 252 times
Been thanked: 412 times

Re: New order comments box not working

Post 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.
I am not here to build for you.
I am here to build with you. Let's help each other.
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

Re: New order comments box not working

Post 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');
?>
Omar_one
Senior Contributor
Posts: 677
Joined: Fri Oct 25, 2019 5:06 pm
Phoenix Version: v1.0.8.16
Has thanked: 100 times
Been thanked: 56 times

Re: New order comments box not working

Post 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>
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

Re: New order comments box not working

Post 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.
Last edited by Rich-Os on Wed Apr 16, 2025 11:26 am, edited 1 time in total.
Rich-Os
Member
Posts: 21
Joined: Thu Sep 30, 2021 2:03 pm
Phoenix Version:
Has thanked: 5 times

Re: New order comments box not working

Post 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.
User avatar
burt
Core Team
Posts: 4551
Joined: Tue Oct 29, 2019 9:37 am
Phoenix Version: v1.1.0.8
Has thanked: 252 times
Been thanked: 412 times

Re: New order comments box not working

Post 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.
I am not here to build for you.
I am here to build with you. Let's help each other.


Join The Code Co-op to get access to your library in the Code Co-op Forum
Post Reply