Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601

Значание из формы HTML не передается в переменную PHP

31.05.2020, 22:54. Показов 7578. Ответов 168
Метки php (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет.
Есть форма:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<!-- кнопка пополнения кошелька -->
<script src="http://code.jquery.com/jquery-1.8.3.js"></script>
 
<div class="payment-method">
    <p class="choose-payment"><?php _e('Пополнение кошелька BS'); ?></p>
</div>
 
    <div class="code-bank">
 
        <form class="et-form" method="post">
 
            <div class="input-group">
                        <label for="amount"><?php _e( 'Money amount', 'enginethemes' ); ?></label>
                        <input type="number" name="amount001" placeholder="<?php printf(__('Minimum: %s', 'enginethemes'), mje_format_price(MIN_WITHDRAW, "", true, false)); ?>">
            </div>
 
            <div class="form-group">
                <br><button class="btn-save waves-effect waves-light btn-diplomat js-my-form-submit"><?php _e('Пополнить'); ?></button>
            </div>
 
        </form>
 
</div>
<!-- кнопка пополнения кошелька -->
тут же в файле скрипт:
PHP
1
2
3
<?php
$summa_p = $_POST['amount001'];
//и т д...
Почему из формы amount001 не передается в переменную $summa_p число?
Отладка показывает null.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.05.2020, 22:54
Ответы с готовыми решениями:

Не передается текст формы в переменную php
Вроде всё просто, но не работает. Подскажите, куда смотреть &lt;! DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.01 Transitional//EN&quot;&gt; ...

Переменную из php в html
Доброго времени суток, пытаюсь передать переменную из php в php-файл, в котором кодм html. Файл index.php(здесь только html): ...

Передать переменную HTML ->JS->PHP
Всем привет! Я новичок и пытаюсь освоить AJAX. Есть задача: на странице в HTML есть форма, где выбирается год и месяц, а затем через...

168
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 00:23  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от vinikon Посмотреть сообщение
$m_amount - это МАССИВ. как вы его прибавляете?

Добавлено через 2 минуты
поэтому и работает, когда вы ей присваиваете число. а при запросе из бд значение нужное еще надо получить из результата
ну теперь-то мы это выяснили, да сейчас это массив исходя из:
PHP
1
2
3
4
5
6
$m_amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
Я же говорю все работает если для теста задать вместо вышеуказанного кода просто $m_amount = 138;
Я что-то совсем не учел что из бд получаем массив. Это исправимо если бы массив был наполнен, тут возникла проблема с
$amount_id = $_POST['m_orderid'], что он не корректно отрабатывается, написал в поддержку на что мне ответили обращайтесь к программисту(

Добавлено через 1 минуту
Цитата Сообщение от vinikon Посмотреть сообщение
$m_amount - это МАССИВ. как вы его прибавляете?

Добавлено через 2 минуты
поэтому и работает, когда вы ей присваиваете число. а при запросе из бд значение нужное еще надо получить из результата
поэтому и работает, когда вы ей присваиваете число. а при запросе из бд значение нужное еще надо получить из результата
да да Вы совершенно правы
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.07.2020, 00:36
вот вы перед отправкой на payeer форму и все данные сохраняете в таблицу бд. таким образом, все отправленные формы и с ними данные должны быть в этой таблице. там они все есть? я не понимаю, что у вас там не стыкуется? настройте нормально получение $amount_id из бд. а затем почистите кеш в браузере. и попробуйте еще раз.
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 07:57  [ТС]
вот вы перед отправкой на payeer форму и все данные сохраняете в таблицу бд. таким образом, все отправленные формы и с ними данные должны быть в этой таблице. там они все есть? я не понимаю, что у вас там не стыкуется? настройте нормально получение $amount_id из бд. а затем почистите кеш в браузере. и попробуйте еще раз.

1. Я записываю из формы в бд логин, логин+время ($amount_id= логин+дмг+чмс - это и есть мой идентификатор) и сумму

2. После оплаты (во время работы обработчика платежа) я записываю в БД юзера его новый баланс (старый баланс + новый), при этом я беру данные идентификатора из $amount_id и сортирую по нему таблицу в БД, чтобы найти нужную сумму:
PHP
1
2
3
4
5
6
$m_amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
то есть та сумма Х, у которого идентификатор У.

3. Не работает. Начали разбираться. Оказалось что в $amount_id каким -то образом попадают устаревшие данные, предыдущего и пред предыдущего платежа, это мы проверили при помощи file_put_contents($filed, print_r($_POST, true));.
В чем причина понять не могу, может ли это быть кэш браузера. В бд из формы записалось верно, в строке браузера данные передаются верно, в истории платежа на мерчанте показывает верно.

4. $m_amount - это массив, получаемый из БД. Решил сделать тест, задал $amount_id='равным некоторому значению из имеющихся в бд транзакций' и var dump $m_amount показал число - смог вывести мне сумму пополнения без всяких массивов.
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.07.2020, 11:45
проверьте все запросы к бд в ваших скриптах и перепишите их правильно
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 16:32  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
проверьте все запросы к бд в ваших скриптах и перепишите их правильно
Так ведь остальное все правильно, у меня всего-то:
1. Форма отправки
2. Запись ее параметров (3 параметра) в БД
3. Обработчик платежа

Все остальное работает как часы.

единственная проблема с $m_amount и $amount_id
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.07.2020, 16:52
что-то все-таки неправильно. а покажите код записи параметров формы в бд
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 17:06  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
что-то все-таки неправильно. а покажите код записи параметров формы в бд
PHP
1
2
3
4
5
6
7
8
9
10
 $new_amount = array(
        'ID'=> '',
        'login' => $user_data01,
        'amount' => $m_amount,
        'orderid' => $m_orderid,
        'm_desc' => $m_desc,
        'success' => '0'
    );
 
    $wpdb->insert ('bs_amounts', $new_amount);
так все что записывается из формы в бд совпадает историей мерчанта, там все чтеко

не четко только то, что $amount_id не постоянен и ве-таки где-то тут косяк:

протестил так:

PHP
1
2
3
4
5
6
7
8
9
10
amount_id = 'nick|07.02.20|21:30:59';
 
$m_amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
var_dump($m_amount);
die;
на что мне выдало:
array (size=1)
0 =>
object(stdClass)[9516]
public 'amount' => string '10' (length=2)

Добавлено через 7 минут
на что мне выдало:
array (size=1)
0 =>
object(stdClass)[9516]
public 'amount' => string '10' (length=2)
причем, если задать так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
amount_id = 'nick|07.02.20|21:30:59';
 
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
 
$m_amount = $amount->amount;
 
var_dump($m_amount);
die;
выдает null
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.07.2020, 17:10
так и должно работать . поэтому правильный код для этого запроса будет такой:
PHP
1
2
3
4
5
6
7
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
$m_amount = $amount[0]->amount;
Добавлено через 1 минуту
посмотрите логи ошибок - что там
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 18:11  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
так и должно работать . поэтому правильный код для этого запроса будет такой:
PHP
1
2
3
4
5
6
7
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
$m_amount = $amount[0]->amount;
Добавлено через 1 минуту
посмотрите логи ошибок - что там
Так ну с $m_amount мы определились как оно должно работать.

Сейчас протестил оплату, не отработало это:
PHP
1
2
3
4
5
6
7
8
$amount_id = $_POST['m_orderid'];
 
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
хотя $amount_id = $_POST['m_orderid']; результат получил верный, все должно было отработать.

$filed = "save.txt";
file_put_contents($filed, '['.print_r($amount, true).']');
$filed1 = "savez.txt";
file_put_contents($filed1, '['.$wpdb->last_error.']');

показали только []

скорее всего поиск по $amount_id не удался, может как-то данные в ней надо перевести в строку к примеру?

Добавлено через 45 минут
Цитата Сообщение от vinikon Посмотреть сообщение
так и должно работать . поэтому правильный код для этого запроса будет такой:
PHP
1
2
3
4
5
6
7
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
$m_amount = $amount[0]->amount;
Добавлено через 1 минуту
посмотрите логи ошибок - что там
кажется я что-то нащупал

на openserver такая схема, когда я сам подставляю значение в amount_id для теста работет:

PHP
1
2
3
4
5
6
7
8
amount_id = 'nick|07.02.20|21:30:59';
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
$m_amount = $amount[0]->amount;
а вот уже на сервере хостинга нет, $m_amount - там по прежнему пустота
значит существует проблема взаимодействия этого запроса с БД в целом и поиска по таблице НА ХОСТИНГЕ.

откинув пока ту проблему, когда amount_id подставлялся неправильный и рассмотрев этот кейс, когда не находит нужный amount даже с подставным значением amount_id, думаю проблема будет решена

Добавлено через 1 минуту
может быть проблема в кодировках? я поставил как и все таблицы utf8mb4_unicode_520_ci
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
08.07.2020, 22:11
Цитата Сообщение от rsl89 Посмотреть сообщение
utf8mb4_unicode_520_ci
вы серьезно. а из каких соображений? уж если ставить, то utf8mb4_general_ci, но можно было и обычную utf8.
что в логах ошибок?

Добавлено через 3 минуты
PHP
1
$m_amount = $amount[0]->amount;
что в $m_amount.
Цитата Сообщение от rsl89 Посмотреть сообщение
на сервере хостинга нет
а вы там настройки сменили на хостингские?
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
08.07.2020, 23:25  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
вы серьезно. а из каких соображений? уж если ставить, то utf8mb4_general_ci, но можно было и обычную utf8.
что в логах ошибок?

Добавлено через 3 минуты
PHP
1
$m_amount = $amount[0]->amount;
что в $m_amount.

а вы там настройки сменили на хостингские?
вы серьезно. а из каких соображений? уж если ставить, то utf8mb4_general_ci, но можно было и обычную utf8.
у Word Press все такие таблицы, сделал по аналогии

PHP
1
что в логах ошибок?
нет ничего

PHP
1
что в $m_amount.
там:
[Array
(
)
]

а вы там настройки сменили на хостингские?
конечно, смотря какие, касательно кодировок все что было на локалке в том же виде было перенесено и на сервер

Добавлено через 17 минут
протестил для этой таблицы разные кодировки, не помогло
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
09.07.2020, 09:27  [ТС]
Сделал такой тест, вставил этот код в код одной и страницы в шаблоне WP, и открыл ее в браузере, показало: string(2) «10», 10-нужное мне число

ранее этот код содержался у меня в файле, на одном уровне с файлами движка, может быть нужно подключить какие-нибудь хуки? но ведь на локалке он выполняется и без хуков
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
10.07.2020, 00:08  [ТС]
В общем мысли иссякли((( что делать дальше хз...
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
10.07.2020, 11:57
Цитата Сообщение от rsl89 Посмотреть сообщение
а вот уже на сервере хостинга нет, $m_amount - там по прежнему пустота
проверьте настройки подключения к бд на хостинге, чтобы соответствовали тем которые на хостинге, а не вашим с os

Добавлено через 30 минут

Не по теме:

скрипты оплаты не особо сложные. в том коде, который здесь перепроверен и вдоль и поперек, ошибок нет, кроме запроса из бд: $amount = $wpdb->get_results. если он исправлен, то проблема где-то еще. где скрипты на сайте вставляются, как форма тестируется, почему устаревшие данные лезут, где нужные данные застревают - из того вышеприведенного куска кода не определить



Добавлено через 4 минуты
еще непонятно зачем используется ob_end_clean();. а где тогда ob_start()?
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
11.07.2020, 10:23
ради интереса попытался найти документацию по payeer. вот по этому адресу все понятно объясняется. не знаю, устарела ли это дока на этот момент или нет, но если ее прочитать внимательно, то можно увидеть такое требование к полю $m_orderid:
Идентификатор платежа m_orderid
В этом поле продавец
задает идентификатор
покупки в соответствии со
своей системой учета.
Желательно использовать
уникальный номер для
каждого платежа.
Идентификатор должен
представлять собой
любую строку длиной не
более 32 символов "A-z",
"_", "0-9", “-”.

Пример: 12345
а здесь $m_orderid = 'nick|07.02.20|21:30:59';
имеет смысл попробовать формировать его, например так (перед оправкой формы):
PHP
1
$m_orderid = md5(nick.time());
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
11.07.2020, 13:20  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
ради интереса попытался найти документацию по payeer. вот по этому адресу все понятно объясняется. не знаю, устарела ли это дока на этот момент или нет, но если ее прочитать внимательно, то можно увидеть такое требование к полю $m_orderid:

а здесь $m_orderid = 'nick|07.02.20|21:30:59';
имеет смысл попробовать формировать его, например так (перед оправкой формы):
PHP
1
$m_orderid = md5(nick.time());
я так тоже пробовал, на самом деле и как у меня и как в указаниях платеж проходит,
но пополнить баланс на сайте в кошелек пользователую я не могу, потому что это не отрабатывается:
PHP
1
2
3
4
5
6
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
Добавлено через 5 минут
Я же и говорю, вообще не понимаю что происходит, даже если сюда $m_orderid = md5(nick.time()); я ради теста поставляю некое готовое значение вместо md5(nick.time()), $amount все равно возвращает пустоту, как буд-то не может найти в базе.

На локалке такой тест проходит.
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
11.07.2020, 13:24
а пароль, логин, название к бд на хостинге поменяли как у провайдера?
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
11.07.2020, 13:30  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение
а пароль, логин, название к бд на хостинге поменяли как у провайдера?
с этим все в порядке, вот сейчас сделал еще тест:
PHP
1
2
3
4
5
6
7
8
9
10
$amount_id = 'nick1594462273';
 
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
 
$m_amount = $amount[0]->amount;
запустил этот код с готовым значением $amount_id = 'nick1594462273'; все выполнилось, баланс отработал

значит проблема в

PHP
1
2
3
4
5
6
7
8
$amount = $wpdb->get_results(
    "SELECT amount
    FROM `bs_amounts`
    WHERE orderid = '$amount_id'
    AND login = '$user_data01'"
);
 
$m_amount = $amount[0]->amount;
и передачи $amount_id от обработчика
0
 Аватар для vinikon
340 / 160 / 89
Регистрация: 16.01.2020
Сообщений: 771
11.07.2020, 13:43

Не по теме:

Цитата Сообщение от rsl89 Посмотреть сообщение
В общем мысли иссякли(((
паникер вы, однако. у меня, знаете, свои еще дела есть. не каждый день свободное время появляется


а $user_data01 совпадает с тем, который нужен?
0
 Аватар для rsl89
9 / 8 / 2
Регистрация: 18.04.2020
Сообщений: 601
11.07.2020, 13:54  [ТС]
Цитата Сообщение от vinikon Посмотреть сообщение

Не по теме:


паникер вы, однако. у меня, знаете, свои еще дела есть. не каждый день свободное время появляется


а $user_data01 совпадает с тем, который нужен?
да, он отрабатывает верно

Добавлено через 48 секунд
да я не паникую, просто все варианты закончились

Добавлено через 7 минут
бредовая мысль, но может этот подключенный файл не успевает выполниться до конца?
стартует, получает все данные а работы по внесению в бд не заканчивает...

PHP
1
2
3
4
5
6
    if ($_POST['m_sign'] == $sign_hash && $_POST['m_status'] == 'success')
    {
        //ob_end_clean();
        include 'amount-balance.php';
        exit($_POST['m_orderid'].'|success');
    }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.07.2020, 13:54

Записать html код в переменную php
как стилизировать отправляемый текст на пошту. в переменную записую текст и отправляю на пошту, как можно стилизировать список заказа? ...

передать переменную из html файла в php
почему не работает? Так то вроде все правильно. не пойму где ошибка index.html: &lt;html&gt; &lt;head&gt; &lt;title&gt;What is...

Как передать в HTML переменную из php
Как передать в HTML переменную из php? Причем HTML код содержится в .php файле.

Как поместить в переменную код html и php?
Здравствуйте, Подскажите пожалуйста как поместить вот этот код: &lt;p align=&quot;left&quot; class='post_comment'&gt;Add comment:...

Php не видит переменную при инициадизации из html
Php не видит переменную при инициализации из шаблона сайта &lt;div class=&quot;short-description-content&quot;&gt; &lt;p...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Опции темы

Новые блоги и статьи
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru