Получение информации с другого сайта

Статус
В этой теме нельзя размещать новые ответы.
потому что вы не вывели весь JSON а только для случая одной заявки - вам и дали код для этого случая.

предполагаю что у вас массив заявок надо разобрать так:

Код:
<?

function request($url,$post = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url );
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_POST, $post!==0 );
    if($post)
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
}
request('https://eds.mosreg.ru/login',
    array(
        'login-form-email'        =>    'Логин',
        'login-form-password'    =>    'Пароль',
    ));
$data        = request('https://eds.mosreg.ru/api/claims?status=SOLVED');
$data_array    = json_decode($data, true);

//echo 'Результат;';       //не думаю что эта надпись вам нужна
foreach($data_array['value']['content'] as $item)
{
    echo implode(';',$item);
    echo "\n";
}
Выводятся все заявки, но все идет слитно, а не каждая заявка с новой строки. И слово "Результат" должно быть в начале каждой строки (обязательно).

Код:
<?php
$jsonstring = '{
"result": "OK",
"message": null,
"redirect": null,
"value": {
"content": [{
"id": 54448,
"visible": true,
"extId": "2464662",
"compositeId": "13103-23-02-2019-16",
"name": "Москва, Вернадцкого, 32",
"flat": null,
"phone": null,
"author": "Виктория",
"authorUsername": "mail@mail.ru",
"authorEmail": "mail@mail.ru",
"description": "Сообщение пользователя",
"created": "23 февраля 2019 07:45",
"deadline": "24 февраля 2019 07:45",
"changed": "24 февраля 2019 08:00",
"company": {
"id": 13103,
"inn": "123456789",
"name": "ООО \"Рога \"Копыта\"",
"email": "info@mail.ru",
"phone": null
},
"address": {
"id": 596703,
"address": "Москва, Вернадцкого, 32",
"created": null,
"changed": null,
"companyId": 13103,
"districtId": 119,
"districtDDId": 25
},
"status": "EXPIRED_RETURN_TO_DD",
"category": {
"id": 239,
"name": "3.14. Ненадлежащее санитарное состояние подъездов и лифтов (нарушение периодичности уборки, наличие мусора и грязи, насекомые, грызуны, запах)",
"group": "3. Содержание подъездов",
"categoryId": 22,
"visible": false,
"deadline": 24.0,
"deadlineGzi": 72.0,
"canBeDD": true,
"workingHours": false,
"workingHoursGZI": false
},
"responses": [{
"comment": null,
"claimId": 54448,
"id": 98036,
"status": "EXPIRED_RETURN_TO_DD",
"created": null,
"author": "admin@admin.ru",
"answerId": null,
"answer": null,
"images": []
}],
"images": [],
"files": [],
"initiator": "Житель"
}],
"totalPages": 1,
"totalElements": 1,
"last": true,
"number": 0,
"size": 10,
"numberOfElements": 1,
"sort": [{
"direction": "DESC",
"property": "id",
"ignoreCase": false,
"nullHandling": "NATIVE",
"ascending": false,
"descending": true
}],
"first": true
}
}';

$json = json_decode($jsonstring);

//Вся структура
print_r($json);

//Выводим так
echo $json->result;
echo '<br/><br/>';
//Если вложенность, то так
echo $json->value->content[0]->id;

Демо Для просмотра ссылки Войди или Зарегистрируйся
Не выводит данные. Пустое значение

PHP:
$data=request('https://eds.mosreg.ru/api/claims?status=SOLVED');
$data_array    = json_decode($data, true);
echo 'Результат;';
echo $json->result;
echo '<br/><br/>';
echo $json->value->content[0]->name;
 
Последнее редактирование модератором:
Не выводит данные. Пустое значение

PHP:
$data=request('https://eds.mosreg.ru/api/claims?status=SOLVED');
$data_array    = json_decode($data, true);
echo 'Результат;';
echo $json->result;
echo '<br/><br/>';
echo $json->value->content[0]->name;



так вы держите в секрете что в итоге хотите. всю эту переписку можно было сократить в 3 поста, если бы вы четко написали какой вывод нужен.
вам в руки дали уже практически готовое решение, чуть проявить желания и соображения - вы ленитесь.
уже который пост идет: нет слова "спасибо". хотя бы кликнули плюсик в благодарность.
Держите ваш код:


Код:
<?

function request($url,$post = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url );
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_POST, $post!==0 );
    if($post)
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
}
request('https://eds.mosreg.ru/login',
    array(
        'login-form-email'        =>    'Логин',
        'login-form-password'    =>    'Пароль',
    ));
$data        = request('https://eds.mosreg.ru/api/claims?status=SOLVED');
$data_array    = json_decode($data, true);

foreach($data_array['value']['content'] as $item)
{
    echo 'Результат;'.implode(';',$item).'<br>';
}
 
так вы держите в секрете что в итоге хотите. всю эту переписку можно было сократить в 3 поста, если бы вы четко написали какой вывод нужен.
вам в руки дали уже практически готовое решение, чуть проявить желания и соображения - вы ленитесь.
уже который пост идет: нет слова "спасибо". хотя бы кликнули плюсик в благодарность.
Держите ваш код:


Код:
<?

function request($url,$post = 0)
{
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url );
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__).'/cookie.txt');
    curl_setopt($ch, CURLOPT_POST, $post!==0 );
    if($post)
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
}
request('https://eds.mosreg.ru/login',
    array(
        'login-form-email'        =>    'Логин',
        'login-form-password'    =>    'Пароль',
    ));
$data        = request('https://eds.mosreg.ru/api/claims?status=SOLVED');
$data_array    = json_decode($data, true);

foreach($data_array['value']['content'] as $item)
{
    echo 'Результат;'.implode(';',$item).'<br>';
}

Эм...ну вообще то почти через каждый пост слова "Благодарности", да и лайки в каждом посте, перечитайте пожалуйста ветку еще раз. Может у Вас сегодня плохое настроение, тогда sorry. Благодаря Вам и Minor у меня появилось понимание работы с API. Еще раз Спасибо.
 
Последнее редактирование:
Эм...ну вообщето почти через каждый пост слова "Благодарности", да и лайки в каждом посте, перечитайте пожалуйста ветку еще раз. Может у Вас сегодня плохое настроение, тогда sorry. Благодаря Вам и Minor у меня появилось понимание работы с API. Еще раз Спасибо.

на этой странице уже да :)
без обид но понимание работы с API у вас не могло появится из нашего треда. Только понимание работы с языком PHP. API - набор функций, и как с ними работать - это изучение документации.

обращаю внимание, что я вам вначале написал код вывода вида
echo 'Результат;'.implode(';',$item)."\n";
но вы захотели чтобы было с новой строки, и я написал:
echo 'Результат;'.implode(';',$item).'<br>';

но это хорошо только для броузера (html теги). Для вывода в CSV надо использовать:
echo 'Результат;'.implode(';',$item)."\n";

запомните, чтобы потом не потерять пару часов на такой глупости.
 
на этой странице уже да :)
без обид но понимание работы с API у вас не могло появится из нашего треда. Только понимание работы с языком PHP. API - набор функций, и как с ними работать - это изучение документации.

обращаю внимание, что я вам вначале написал код вывода вида
echo 'Результат;'.implode(';',$item)."\n";
но вы захотели чтобы было с новой строки, и я написал:
echo 'Результат;'.implode(';',$item).'<br>';

но это хорошо только для броузера (html теги). Для вывода в CSV надо использовать:
echo 'Результат;'.implode(';',$item)."\n";

запомните, чтобы потом не потерять пару часов на такой глупости.
Спасибо еще раз! Большое при большое!!!

P.s. Результат появился вначале каждой заявки. Все заявки отображаются с новой строки. Но для меня так и остается загадкой, как выбрать определенные параметры, а не весь блок ['value']['content'] .:)
 
Спасибо еще раз! Большое при большое!!!

P.s. Результат появился вначале каждой заявки. Все заявки отображаются с новой строки. Но для меня так и остается загадкой, как выбрать определенные параметры, а не весь блок ['value']['content'] .:)


предположим у вас двумерный массив a[i,n] вида

1 2
3 4

если вы сделаете print_r(a[0]) то получите 1 строку 1, 2
если вы сделаете print_r(a[1]) то получите 2 строку 3, 4

если вы хотите получить отдельный элемент, то стучитесь по номеру в строке:

print_r(a[0,0]) даст 1
print_r(a[0,1]) даст 2


Аналогично и в вашем случае, только не всегда используются числа вместо адресов элементов массива, у вас в примере идут value и content

тогда print_r( $data_array['value']['content'] ) даст вывод элементов массива

$data_array['value']['content'][0]
$data_array['value']['content'][1]

...............
внутри каждого echo $data_array['value']['content'][.......] сидит еще массив (wow!, это уже многомерный массив)
функция foreach перебирает автоматически его
тогда
foreach($data_array['value']['content'][0] as $item)
echo $item;

аналогично:
echo $data_array['value']['content'][0]['name'];
echo $data_array['value']['content'][0]['author'];
echo $data_array['value']['content'][0]['description'];
echo $data_array['value']['content'][0]['authorEmail'];
echo $data_array['value']['content'][0]['phone'];
echo $data_array['value']['content'][0]['category']['name'];


а можно объединить элементы массива через разделитель с помощью функции implode

implode(";", $data_array['value']['content'][0])

равнозначно
$data_array['value']['content'][0]['name'] .";". $data_array['value']['content'][0]['author'] .";". $data_array['value']['content'][0]['description'] .";". $data_array['value']['content'][0]['authorEmail'] .";". $data_array['value']['content'][0]['phone'] .";". data_array['value']['content'][0]['category']['name'];

но насколько красивее одна команда, да и массив может меняться
 
предположим у вас двумерный массив a[i,n] вида

1 2
3 4

если вы сделаете print_r(a[0]) то получите 1 строку 1, 2
если вы сделаете print_r(a[1]) то получите 2 строку 3, 4

если вы хотите получить отдельный элемент, то стучитесь по номеру в строке:

print_r(a[0,0]) даст 1
print_r(a[0,1]) даст 2


Аналогично и в вашем случае, только не всегда используются числа вместо адресов элементов массива, у вас в примере идут value и content

тогда print_r( $data_array['value']['content'] ) даст вывод элементов массива

$data_array['value']['content'][0]
$data_array['value']['content'][1]

...............
внутри каждого echo $data_array['value']['content'][.......] сидит еще массив (wow!, это уже многомерный массив)
функция foreach перебирает автоматически его
тогда
foreach($data_array['value']['content'][0] as $item)
echo $item;

аналогично:
echo $data_array['value']['content'][0]['name'];
echo $data_array['value']['content'][0]['author'];
echo $data_array['value']['content'][0]['description'];
echo $data_array['value']['content'][0]['authorEmail'];
echo $data_array['value']['content'][0]['phone'];
echo $data_array['value']['content'][0]['category']['name'];


а можно объединить элементы массива через разделитель с помощью функции implode

implode(";", $data_array['value']['content'][0])

равнозначно
$data_array['value']['content'][0]['name'] .";". $data_array['value']['content'][0]['author'] .";". $data_array['value']['content'][0]['description'] .";". $data_array['value']['content'][0]['authorEmail'] .";". $data_array['value']['content'][0]['phone'] .";". data_array['value']['content'][0]['category']['name'];

но насколько красивее одна команда, да и массив может меняться
Все, я сдаюсь. Не получилось у меня перечисление сделать)
Прекращаю Вас мучить. Спасибо за помощь. Буду пробовать сам разобраться. Еще раз благодарю за материал.
 
Тема закрыта. Это не лечится....
Можно схлопотать горчичник по П.2.0 Для просмотра ссылки Войди или Зарегистрируйся[/URL]
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху