echo значение функции не будет передаваться в форму

----ОБНОВЛЕНИЕ: пытаюсь найти другое решение здесь, пожалуйста, посмотрите ------- Я Я пытаюсь опубликовать форму со скрытыми значениями на платформе магазина с платежным шлюзом для получения значений. Имя значения «Order_Total» использует php-эхо с именем «$sum» для отображения суммы для оплаты следующим образом:

<Input type="hidden" name="sum" value="<?php echo $order_total; ?>"> 

$sum — это функция, которая считывает сумму идентификатора заказа пользователя.

$order_total    = left_to_pay_for_order($oid);

функция работает так:

function left_to_pay_for_order($oid)
{


global $wpdb;
    $s = "select * from ".$wpdb->prefix."order_contents where orderid='$oid' and paid='0'";
    $r = $wpdb->get_results($s);
    $total = 0;
    if(count($r) > 0)
    {
        foreach ($r as $row)
        {
            $total += $row->price * $row->quant;    
            $shp = get_post_meta($row->pid, 'shipping', true)* $row->quant;
            $total += $shp;
        }

    }

return $total;
}

Платежный шлюз получает все остальные значения, кроме значения $order_total.

ОБНОВЛЕНИЕ!!! -------------------------------- Значение передано как «0». Есть какие-нибудь мысли по этому поводу?

Я проверил, и функция работает до отправки формы и перенаправления, сумма отображается в соответствии с ожидаемым результатом в любом HTML перед отправкой, но форма отправляет значение "0".

Что я делаю не так? везде искал. ваша помощь очень ценится.

Спасибо !!

По запросу вот весь код страницы формы, измененный для StackOverflow:

    <?php

    global $wp_query, $wpdb, $current_user;

    get_currentuserinfo();
    $uid = $current_user->ID;
    $user_email = $current_user->user_email;

    $business = get_option('Theme_tranzilla_ID');
    if(empty($business)) die('ERROR. Please input your tranzilla ID.');
    //-------------------------------------------------------------------------
    $oid = $_GET['oid'];    
    $order_total = Theme_left_to_pay_for_order($oid);
    $title_post = sprintf(__('Order Payment ID #: %s','Walleto'), $oid);


    //---------------------------------


    $tm             = current_time('timestamp',0);
    $cancel_url     = get_bloginfo("siteurl");
    $response_url   = get_bloginfo('siteurl').'/?w_action=tranzila_order_response';
    $ccnt_url       = Theme_my_account_link();
    $currency       = get_option('Theme_currency');

?>


<html>
<head><title>Processing Tranzilla Payment...</title></head>
<body onLoad="document.form_mb.submit();">
<center><h3><?php _e('Please wait, your order is being processed...', 'Theme'); ?></h3></center>

<FORM name="form_mb" Action='https://direct.tranzila.com/Terminal_Name/' method='POST'>
<Input type="hidden" name="supplier" value="<?php echo get_option('Theme_tranzilla_ID') ?>"> 
<Input type="hidden" name="sum" value="<?php echo $order_total; ?>"> 
<Input type="hidden" name="currency" value="1"> 
<input type="hidden" name="email" value="<?php echo $user_email; ?>">

</FORM>




</body>
</html>

person Jacob    schedule 01.01.2015    source источник
comment
Я думаю, вам нужно использовать ajax, чтобы получить то, что вы хотите   -  person SuperDJ    schedule 01.01.2015
comment
PHP правильно печатает значение в HTML? Как эта строка выглядит в HTML?   -  person JAL    schedule 01.01.2015
comment
Отладьте функцию! Используйте var_dump() для всех переменных в функции, пока не найдете ошибку.   -  person Sverri M. Olsen    schedule 01.01.2015
comment
Спасибо @JAL! Если я правильно вас понимаю, строка представляет собой динамическое числовое значение, которое правильно отображается в HTML. но не передается на форму поста.   -  person Jacob    schedule 01.01.2015
comment
@SverriM.Olsen Спасибо !! как вы предлагаете мне сделать это правильно? (новичок, как можно видеть :) )   -  person Jacob    schedule 01.01.2015
comment
@user2777324 Прочитайте документацию.   -  person Sverri M. Olsen    schedule 01.01.2015
comment
Если php правильно выдает числовое значение и правильно помещается во входной тег, эта часть настроена. Проблема должна быть с формой html.   -  person JAL    schedule 01.01.2015
comment
@user2777324 user2777324 Я думаю, что это тоже вопрос WordPress   -  person Utkarsh Dixit    schedule 01.01.2015
comment
@JAL Каков предпочтительный способ исправить форму html?   -  person Jacob    schedule 01.01.2015
comment
Пожалуйста, разместите всю форму, включая тег открывающей формы, в тег закрывающей формы, как вы сделали для ввода суммы. Есть ли какой-либо ajax, связанный с отправкой, или это обычная отправка формы? Что такое платежный шлюз?   -  person AndrewVT    schedule 01.01.2015
comment
Я вижу, что форма отправляет пустое значение для поля Sum. эта функция хорошо работает в HTML. Я повторяю имя пользователя правильно. что может привести к тому, что форма отправит значение 0 вместо значения функции?   -  person Jacob    schedule 01.01.2015
comment
@ user2058037, смотрите отредактированный вопрос. Спасибо !!   -  person Jacob    schedule 01.01.2015
comment
Предполагая, что фактическое значение попадает в html, как вы сказали, и что вы получаете другие входные значения на другом конце, я не вижу никаких причин, по которым сумма не может пройти. Я попытался найти примеры этого кода процесса оплаты, но все, что я смог найти, это bootply.com/phbBmYBpY4. . Возможно, этот пример мог бы помочь вам.   -  person AndrewVT    schedule 01.01.2015
comment
Спасибо @ user2058037, но код в ссылке не тот, что мы здесь видим.   -  person Jacob    schedule 01.01.2015
comment
Что может привести к тому, что значение не пройдет? есть идеи ?   -  person Jacob    schedule 01.01.2015
comment
Я попытался скопировать ваш полный код страницы, который вы предоставили, и получил ошибку. Вы создали функцию с именем get_currentuserinfo()?   -  person Mai    schedule 01.01.2015
comment
@Mai, это сайт WordPress. функция currentuserinfo является функцией wordpress. есть и другие значения, взятые из файла functions.php темы wordpress. К сожалению, копирование и вставка здесь не помогут :-(. Что может привести к тому, что значение в форме будет «0» вместо реального значения?   -  person Jacob    schedule 01.01.2015
comment
Форма выглядит нормально, если предположить, что все php работает без ошибок.   -  person JAL    schedule 01.01.2015
comment
Если вы удалите атрибут onload в теге body и просмотрите исходный код страницы, какое значение вы получите в теге ввода суммы?   -  person bloodyKnuckles    schedule 01.01.2015
comment
@bloodyKnuckles, значение читается как 0. там, где очевидно должно быть что-то другое.   -  person Jacob    schedule 01.01.2015
comment
Если вы получаете 0 в атрибуте значения входного тега суммы, то кажется, что функция PHP Theme_left_to_pay_for_order при передаче значения $oid возвращает 0. Дважды проверьте это, добавив echo $order_total; выход; сразу после вызова функции. Если вы получите там 0, удалите это и поставьте echo $oid; выход; непосредственно перед вызовом функции, чтобы увидеть, какое значение ей передается.   -  person bloodyKnuckles    schedule 01.01.2015
comment
вы упустили что-то очень важное здесь .... кажется, работает js-функция с именем document.form_mb.submit(), которая, как я полагаю, (наряду с отсутствием кнопки отправки) фактически обрабатывает форму.   -  person David    schedule 02.01.2015
comment
@ Дэвид, JS правильно отправляет ФОРМУ. проблема заключается в том, что ‹Input type=hidden name=sum value=‹?php echo $order_total ?›› отправляет значение 0 вместо реального значения. Как я могу напечатать значение перед отправкой в ​​​​поле ввода формы?   -  person Jacob    schedule 02.01.2015
comment
@bloodyKnuckles, как мне это сделать? где я должен поставить эхо $order_total; выход; и эхо $oid; выход; в коде? Спасибо !!   -  person Jacob    schedule 02.01.2015
comment
После долгих исследований я обнаружил, что $oid не передается на странице формы. это приводит к тому, что $order_total не может предоставить результаты. $oid необходим $order_total, так как он является основой результата функции. что может привести к тому, что $oid не пройдет на этой странице?   -  person Jacob    schedule 02.01.2015
comment
Я не вижу в предоставленном вами PHP, где $oid присваивается значение. Вы исключили это из своего примера? Есть ли $oid = $_GET['oid']; отсутствует?   -  person bloodyKnuckles    schedule 02.01.2015
comment
@bloodyKnuckles, вы правы, я исключил это из примера. фактический код содержит $oid = $_GET['oid']; - исправлен код примера. есть идеи?   -  person Jacob    schedule 02.01.2015
comment
В URL-адресе страницы вы видите oid=, за которым следует какое-то значение? Что-то вроде: mysite.com/mypage.php?oid=4   -  person bloodyKnuckles    schedule 02.01.2015
comment
да! страница, на которой я выбираю способ оплаты - в данном случае транзила - содержит URL, как вы написали. нажатие кнопки способа оплаты приводит к указанному выше файлу php. Я могу получить все данные в форме, кроме $oid и его спуска $order_total.   -  person Jacob    schedule 02.01.2015
comment
Какой полный URL? Вы можете изменить домен, но ваша ошибка, похоже, находится на этом этапе процесса. Также: используете ли вы какое-либо расширение безопасности, такое как suhosin?   -  person Manuel Arwed Schmidt    schedule 04.01.2015
comment
полный URL-адрес: mysite.com/my-account/pay-for-item/?oid=9, где ID заказа — $oid. никакие расширения безопасности не используются, страница направляется на защищенную страницу, где затем передаются все важные данные.   -  person Jacob    schedule 04.01.2015
comment
Могу ли я создать временную таблицу перед перенаправлением tranzilla со значением $sum и отправить ее в указанное поле формы?   -  person Jacob    schedule 04.01.2015
comment
В функции вы можете повторить возвращаемое значение и проверить, равно ли оно 0?   -  person Peter Stuart    schedule 05.01.2015
comment
@PeterStuart, в форме он возвращает 0, где на предыдущей странице эхо, как и ожидалось, › 0. проблема в том, что в форме действие - отправить идентификатор заказа ($ oid) не отображается, а сумма заказа ($ сумма ) основан на идентификаторе заказа ($oid). Могу ли я отразить значения во временной таблице и отразить их в полях формы?   -  person Jacob    schedule 05.01.2015
comment
Вы уверены, что ваше if(count($r)) {... заявление достигнуто?   -  person Darren    schedule 05.01.2015
comment
он достигается в любом месте на сайте, кроме формы. как будто кнопка действия предотвращает if(count($r)) {...   -  person Jacob    schedule 05.01.2015


Ответы (1)


Пожалуйста, расскажите нам, что вы видите в «проверке».. какое значение в поле ввода перед публикацией.

Но.. с информацией, которую вы даете, я думаю:

1) You are missing a ; in the end of "echo $order_total" line. Put a ; in the end.
2) It can be some wordpress conflict with the "sum" field name. Try to change to "order_total".
person Tiago Gouvêa    schedule 04.01.2015
comment
Спасибо за вклад, исправили приведенный выше пример кода. Я не могу изменить сумму имени поля ввода на другое, форма отправляется на другую страницу, где поле суммы ожидает значение › 0. Знаете ли вы о конфликте как таковом в wordpress? Спасибо !! - person Jacob; 05.01.2015
comment
Я точно не знаю, но это возможно... Я просто пробую кое-что из коробки, чтобы помочь вам. Вы можете проверить там $_POST? Сумма приходит нулевая, или она просто не идет на почту? - person Tiago Gouvêa; 05.01.2015
comment
Спасибо @Tiago. приходит 0. - person Jacob; 05.01.2015