Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С Битрикс
Войти
Регистрация
Восстановить пароль
 
Утка
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
1

Получить значение массива

05.03.2018, 09:19. Просмотров 436. Ответов 10

Добрый день! Никак не могу понять как нужно вывести значение массива, получаемого через обработчик событий.
Задача такая: пользователь делает заказ на сайте и после оформления мне нужно вывести счёт на оплату вручную. Я написала обработчик событий в init.php , из него в файл записываю массив только что созданного заказа. Как теперь значения этого массива перенести на любую страницу(например, тестовую). Нужны имя заказчика, номер телефона, почта и сумма заказа.
PHP
1
2
3
4
5
AddEventHandler("sale", "OnOrderAdd", "OrderAddHandler");  
function OrderAddHandler($ID, $arFields){
     CModule::IncludeModule('sale');
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.txt",print_r($arFields, true) ,FILE_APPEND);
}
Могу предположить , что это делается примерно так(это вывод на тестовой странице). Но у меня ничего не выводится:
PHP
1
2
Имя заказчика:<?=$arFields["PAYER_NAME"]?>
Сумма заказа:<?=$arFields["PRICE"]?><?=$arFields["CURRENCY"]?>
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2018, 09:19
Ответы с готовыми решениями:

Получить файл, который будет содержать элементы введенного массива и наибольшее значение массива
Написать программу считывания с клавиатуры и вывод на экран 10 элементов некоторого массива и...

Получить значение массива
Здравствуйте. Имеется массив. Array ( =&gt; Array ( =&gt; 0 ...

Получить значение массива
Приветствую всех! Подскажите пожалуйста,можно ли получить значение массива то,что выделено жирным...

Получить значение массива
Доброго времени суток всем. Вопрос простенький. По этому сразу прошу меня простить :) поиском...

Получить одно значение массива
Доброго дня, делаю маленький трекинг отправок для своих нужд, использую API Почты России. Циклом...

10
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
05.03.2018, 10:25 2
А при чем тут тестовая страница и обработчик события? у вас в файл text.txt ни чего не записывается? Он не создается?
0
Dias606
26 / 26 / 12
Регистрация: 20.09.2016
Сообщений: 342
05.03.2018, 15:23 3
Так нельзя делать, когда пишешь массив в файл нужно его засериализить, т.е.
PHP
1
file_put_contents($_SERVER['DOCUMENT_ROOT']."/test.txt",serialize($arFields) ,FILE_APPEND);
после когда читаешь с файла пишешь
PHP
1
2
$file = file_get_contents('./people.txt', true);
$mass = unserialize($file);
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
05.03.2018, 15:24 4
Цитата Сообщение от Dias606 Посмотреть сообщение
Так нельзя делать, когда пишешь массив файл нужно его засериалайзить, т.е.
Можно. Обратите внимание на второй параметр print_r
0
05.03.2018, 15:24
Утка
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
05.03.2018, 18:55  [ТС] 5
В файл все записывается. Просто эту информацию мне нужно вывести на страничку,что бы можно было по создать счёт клиенту. А как это сделать я не совсем понимаю, к сожалению(
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
05.03.2018, 18:58 6
ВЫ делаете это совсем не правильно. Даже не в том направлении...
У вас же работает компонет оформления заказа в котором есть шаблон страницы "ваш заказ оформлен" Вот там все и надо осуществлять. Если что то не хватает в шаблоне в переменных, достать при помощи АПИ в файле result_modifier.php. Если такой файл в шаблоне компоненнта отсутствует можно просто его создать и он "опдхватится"
0
Утка
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
05.03.2018, 19:03  [ТС] 7
Дело в том,что мне необходимо передать эти значения на другой сервер , что бы там сформировался этот счет. Поэтому мне и нужно отдельно вытащить эти значения.
0
Dias606
26 / 26 / 12
Регистрация: 20.09.2016
Сообщений: 342
05.03.2018, 20:56 8
Утка, в чем проблема указать путь до файла и читать из него
0
voral
941 / 631 / 142
Регистрация: 16.03.2008
Сообщений: 2,979
05.03.2018, 22:20 9
Цитата Сообщение от Утка Посмотреть сообщение
В файл все записывается. Просто эту информацию мне нужно вывести на страничку,что бы можно было по создать счёт клиенту
Ну так вам тогда необходимо сохранить массив в формате удобным для дальнейшего прочтения скриптом. Простейший, как сказали выше: при записи serialize() после прочтения unserialize().
Но в этом случае не подходит вариант с FILE_APPEND. У вас может произойти два заказа одновременно и они будут записаны в файл. Т.е. уже не получится просто прочитать и сделать unserialize. Т.е. вам либо один заказ - один файл, либо создавать другой формат файла (например csv).

При этом обратите внимание заказ, по сути, содержит персональные данные, сохранив их в файл доступный из вне вы нарушаете закон. По этому либо закрываете паролем доступ в каталог с этими файлами и забирайте их с авторизацией. Либо сайт на котором формируется заказ заливает файл заказа на второй сайт по ftp (в каталог так же не доступный из-вне)

Так же для таких задач используют REST сервисы..... (с авторизацией). И это, вероятно, был бы самый правильный подход
1
Утка
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
06.03.2018, 10:42  [ТС] 10
Спасибо, я попробую разобраться.
0
Утка
0 / 0 / 0
Регистрация: 16.03.2015
Сообщений: 35
10.03.2018, 11:15  [ТС] 11
Спасибо,смогла решить эту задачу с использованием serialize() .
Но вот появился ещё один вопрос. Нужно добавить пользовательское свойство в массив $arFields . Это делается внутри обработчика событий и ф-ии OrderAddHandler в данном случае?
И как правильно это сделать?

Добавлено через 12 минут
Пробовала сделать так,но при выводе массива, соответственно, выводит эти же строчки.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$arFields = array(
   "PERSON_TYPE_ID" => 3,
   "NAME" => "ID счета",
   "TYPE" => "TEXT",
   "REQUIED" => "Y",
   "DEFAULT_VALUE" => "F",
   "SORT" => 100,
   "CODE" => "COMPLECT",
   "USER_PROPS" => "N",
   "IS_LOCATION" => "N",
   "IS_LOCATION4TAX" => "N",
   "PROPS_GROUP_ID" => 1,
   "SIZE1" => 0,
   "SIZE2" => 0,
   "DESCRIPTION" => "",
   "IS_EMAIL" => "N",
   "IS_PROFILE_NAME" => "N",
   "IS_PAYER" => "Y"
);
0
10.03.2018, 11:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.03.2018, 11:15

Как из массива получить значение
Подскажите пожалуйста, В скрипте так: print_r( xml( $url ) ); и выводит: Array ( =&gt; ...

Получить значение из массива по переменной
Здравствуйте. Прощу помощи. Есть переменная, значение которое int в указываемом мной диапазоне, не...

Работа с json. Получить значение массива.
Hi All! С PHP работаю совсем недавно (просто пришлось), с JSON вообще первый раз, поэтому такой...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru