Список отделений XML без Ключа #1

Список отделений XML без Ключа #1

В 90% случаев для мелких магазинов нет смысла заключать договор, и от API Новой почты нужен только список Отделений.

Было бы хорошо если кто то у кого есть уже ключ сделать ретрансляцию XML списка отделений. Работы на час делать копию себе и отдавать потом всем кому нужно готов сделать скрипт и выложить. Единственное нужен ключ. Если ни кто не откликнится то придется самому зарегистироваться:)

The text was updated successfully, but these errors were encountered:

Dotrox commented Jan 31, 2014

Для получения списка отделений можно обойтись без апи. Список отделений вместе с информацией по ним здесь: http://new.novaposhta.ua/shop/office/getJsonWarehouseList/

Dmi3yy commented Jan 31, 2014

Супер спасибо, то что надо :)

boo111 commented Apr 16, 2015

а как его на сайт подтянуть?

Dmi3yy commented Apr 16, 2015

потом рекомендую кешировать его где - то ибо переодически сервис падает.

сделал себе по крону так:

соответственно сайт работает с локальной копией, а крон раз в сутки обновляет. при этом если файлик не доступен то работаем с последней скаченной версией избегая проблем с неработоспособностью

boo111 commented Apr 16, 2015

Что находиться в файле np.json?

Dmi3yy commented Apr 16, 2015

это путь куда я локально сохраняю файлик ) ну там после данной процедуры находиться тоже что и по ссылке

boo111 commented Apr 16, 2015

Всеравно не пойму каким образом обрабатывается это все. Я же правильно понимаю использовать API Новой почты не нужно? По ссылке мы видим только id отделений и городов. Как заставить их подтянуться? и каким образом они будут отображаться?

Вы извините, мне просто нужны отделения и города НП на сайт подтянуть и не могу никак вникнуть в api Новой почты

Dmi3yy commented Apr 16, 2015

По ссылке JSON масив со всеми данными, обрабатывайте его как вам нужно :) конвертнуть JSON в обычный масив нет проблем. API новой почты при использовании данный ссылки вообще не нужно

boo111 commented Apr 16, 2015

спасибо буду разбираться

boo111 commented Apr 16, 2015

и еще вопрос, ссылка идет на НП, значит массив обновляет список отделений?

Dmi3yy commented Apr 16, 2015

Ну да там актуальный список

boo111 commented Apr 16, 2015

а на выходе мы получаем список со списком городов, отделений и временем работы в каком виде? что-то типа в виде таблицы?

Dmi3yy commented Apr 16, 2015

Пичитайте про json

16 апр. 2015, в 17:35, boo111 notifications@github.com написал(а):

а на выходе мы подучаем список со списком городов, отделений и временем работы в каком виде? что-то типа в виде таблицы?

— Reply to this email directly or view it on GitHub.

Dotrox commented Apr 16, 2015

Откройте ссылку в браузере и всё сами увидете. json вполне читабелен.

boo111 commented Apr 16, 2015

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

Dotrox commented Apr 16, 2015

Вот так выглядит обьект одного отделения:

В ответе сервера Новой почты массив с такими обьектами.

boo111 commented Apr 16, 2015 boo111 commented Apr 16, 2015

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

Dotrox commented Apr 16, 2015

У Новой почты в принципе нет группировки по регионам даже на сайте.

Можно отдельно сгруппировать города по регионам (есть даже готовые базы), а потом просто к этим городам подтягивать отделения.

boo111 commented Apr 16, 2015

я получаю массив данных. Как мне правильней выдернуть только города и отделения?

Танци с бубном не помогают, по всем возможным примерам не выводиться нечего((

Подскажите, если не трудно..я только в начале пути..

Dotrox commented Apr 16, 2015

И таким же образом можно получить любой элемент, который есть на скрине выше.

Кстати, а зачем там у вас print перед var_dump?

boo111 commented Apr 16, 2015

А что такое $warehouse? вижу его только в адрессной строке

foreach($a as $warehouse) print $city;

Нечего не выводит(

Dotrox commented Apr 16, 2015

Тогда лучше спросить, что такое foreach :) Цикл foreach по очереди берёт каждый єлемент массива $a и помещает в переменную $warehouse. Поскольку $a двухмерный массив, в $warehouse тоже будут массивы, но одномерные, каждое заполнение переменной соответствует одному складу.

Не работает, вероятно, потому, что там есть ещё один уровень в массиве $a. Попробуйте так:

Если выводить $city за пределами цикла, там будет только последнее значение, а внутри цикла выведет все города.

boo111 commented Apr 16, 2015

воооот, а я кручусь вокруг 'response', но так не выводила.. Спасибо большое, все усвоила!

bbiemme commented Apr 17, 2015

Здравствуйте. Тоже Ваш совет помог мне. А как например сделать список городов с отделениями по возрастанию? С asort у меня не получается.

воооот, а я кручусь вокруг 'response', но так не выводила.. Спасибо большое, все усвоила!

— Reply to this email directly or view it on GitHub #1 (comment) .

Dotrox commented Apr 17, 2015

asort не будет работать на оригинальном массиве из ответа, поскольку у него все значения тоже массивы. Вам нужно отсортировать по городам или по отделениям?

bbiemme commented Apr 17, 2015

по городам а уже через знак "-" возле города вывести отделения

asort не будет работать на оригинальном массиве из ответа, поскольку у него все значения тоже массивы. Вам нужно отсортировать по городам или по отделениям?

— Reply to this email directly or view it on GitHub #1 (comment) .

Dotrox commented Apr 17, 2015

А чтоб получить отделения для отдельного города потом:

В результате получим список в формате: Название города - название отделения

bbiemme commented Apr 17, 2015

Спасибо но у меня такой код и ничего не выводит. пустая страница

$string = file_get_contents (' http://novaposhta.ua/shop/office/getjsonwarehouselist'); $a = json_decode ($string, true); $warehouse_by_city = array(); foreach($a['response'] as $warehouse) ksort($warehouse_by_city); //сортируем по городам

$warehouse_by_city = array();foreach($a['response'] as $warehouse)< $warehouse_by_city[$warehouse['city']][] = array( 'city' => $warehouse['city'], //название города 'address' => $warehouse['address'] //адрес отделения ); >ksort($warehouse_by_city); //сортируем по городам

А чтоб получить отделения для отдельного города потом:

$city_name = 'название города';foreach($warehouse_by_city[$city_name] as $warehouse)

В результате получим список в формате: Название города - название отделения

— Reply to this email directly or view it on GitHub #1 (comment) .

📎📎📎📎📎📎📎📎📎📎