Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » jQuery » Как вывести значения с JSON?

Как вывести значения с JSON?


     17.09.2016    jQuery, Общие вопросы по PHP, Ламерские вопросы    2699

вопрос
Всем привет.
Хочу вывести на сайт вывод организаций с яндекс карт.
Запрос идёт по такой ссылке ТЫК
Чтобы я тут в пять страниц не писал ответ прошу посмотреть по ссылке выше.
Как мне вывести данные в форме таблицы:
Название адрес телефон почта сайт

Заранее спасибо

Ответа пока нет


15 комментариев

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 10:54 -


Вообще хочу получить такое в конечном итоге

Proff
Юзер

Proff - 17 сентября 2016 11:02 -

$info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=%D0%B0%D0%BB%D1%82%D0%B0%D0%B9%D1%81%D0%BA%D0%B8%D0%B9%20%D0%BA%D1%80%D0%B0%D0%B9%20%D1%80%D0%B8%D1%82%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5%20%D1%83%D1%81%D0%BB%D1%83%D0%B3%D0%B8&lang=ru_RU&results=600';

$info_arr = json_decode(file_get_contents($info));

$tr = '';
foreach ( $info_arr->features as $features ) {

    $Phones = array();
    foreach ( $features->properties->CompanyMetaData->Phones as $Phone ) {
        $Phones[] = $Phone->formatted;
    }
    
    $tr .= "<tr>
            <td>".$features->properties->CompanyMetaData->name."</td>
            <td>".$features->properties->CompanyMetaData->address."</td>
            <td>".join( '<br />', $Phones )."</td>
            <td>А где там почта?</td>
            <td>".$features->properties->CompanyMetaData->url."</td>
        </tr>";
}

$table = '<table>
            <tr>
                <td>Название</td>
                <td>адрес</td>
                <td>телефон</td>
                <td>почта</td>
                <td>сайт</td>
            </tr>
                '.$tr.'
        </table>';

echo $table;

Proff
Юзер

Proff - 17 сентября 2016 11:04 -

А почты там нет.
Блин, надо было в ответ вставить. Недоработан функционал по ответам.

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 11:30 -

Спасибо огромное)))
Слушай а подскажи как форму еще такую добавить как на картинке?)

Proff
Юзер

Proff - 17 сентября 2016 12:09 -

Это от задач поиска зависит, насколько я понимаю тебе нужен поиск по странице на js. Типа такого http://lifeexample.ru/jquery-javascript-primeryi/javascript-poisk-po-stranitse.html

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 12:13 -

Proff,
Ссылка не открывается

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 12:15 -

Proff,
Мне нужно чтобы когда в поле поиска вводишь текст он выводился в запросе:
"ТЕКСТ ПОИСКА"
$info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=ТЕКСТ ПОИСКА&lang=ru_RU&results=600';

Proff
Юзер

Proff - 17 сентября 2016 12:27 -

По простому, вместо первой строчки вставить вот так:
echo '<form method="post" action="">
<input type="text" name="sea" placeholder="Введите текст" value="' . $_POST['sea'] . '">
<input type="submit" value="Искать"></form>';

$info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=' . $_POST['sea'] . '&lang=ru_RU&results=600';

Хотя и через гет можно. Но как я сказал - от задач зависит.

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 12:32 -

Proff,
Получилось вот так:

<?php
echo '<form method="get" action="">
<input type="text" name="sea" placeholder="Введите текст">
<input type="submit"></form>';

$info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=' . $_GET['sea'] . '&lang=ru_RU&results=600'

$info_arr = json_decode(file_get_contents($info));

$tr = '';
foreach ( $info_arr->features as $features ) {

    $Phones = array();
    foreach ( $features->properties->CompanyMetaData->Phones as $Phone ) {
        $Phones[] = $Phone->formatted;
    }
    
    
    $tr .= "<tr>
            <td>".$features->properties->CompanyMetaData->name."</td>
            <td>".$features->properties->CompanyMetaData->address."</td>
            <td>".join( '<br />', $Phones )."</td>
            <td>".$features->properties->CompanyMetaData->url."</td>
        </tr>";
}

$table = '<table border="1">
            <tr>
                <td>Название  организации</td>
                <td>Адрес</td>
                <td>Телефон</td>
                <td>Сайт(если есть)</td>
            </tr>
                '.$tr.'
        </table>';

echo $table;
?>

Но теперь страница не загружается вообще
Я там кстати поменял на GET

Proff
Юзер

Proff - 17 сентября 2016 12:35 -

if ($_GET['sea']) $info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=' . $_GET['sea'] . '&lang=ru_RU&results=600';

if добавил т.к. там по умолчанию что попало выводится.
А твоя ошибка - ; - точку с запятой ты не поставил после results=600'

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 12:39 -

Proff,
Теперь работает)
Смотрю сейчас на

    $Phones = array();
    foreach ( $features->properties->CompanyMetaData->Phones as $Phone ) {
        $Phones[] = $Phone->formatted;
    }


И пытаюсь по аналогии вывести Hours по аналогии:


    $Hours = array();
    foreach ( $features->properties->CompanyMetaData->Hours ) {
        $Hours[] = text;
    }


Подскажи, в правильном направлении иду?

Proff
Юзер

Proff - 17 сентября 2016 12:50 -

Тебе просто время, типа "пн-пт 10:00–19:00; сб 10:00–13:00"?
$Hours= $features->properties->CompanyMetaData->Hours->text;

Если нужны интервалы, то тогда через циклы, но там хоть какое-то понимание иметь надо в PHP и результате.

Вообще создай себе простой скрипт с кодом:
$info = 'https://search-maps.yandex.ru/v1/?apikey=3a21754b-551b-4a7d-88b1-4cc4813748cf&text=Вася&lang=ru_RU&results=600';
$info_arr = json_decode(file_get_contents($info));
print_r($info_arr);

Затем открой в браузере и открой исходный код страницы, увидишь вот в таком виде модель, и будет понятно какая где вложенность:
http://joxi.ru/bmod8ZpU5lWD2y
http://joxi.ru/nAyQdEVTlkMdAZ

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 12:56 -

Proff,
Круто, работает)))

Ferrum_NST
Юзер

Ferrum_NST - 17 сентября 2016 20:38 -

Proff,
Привет еще раз)
Пытаюсь сделать по аналогии но ничего не получается.
В чём может быть проблема?


$info = 'http://moonwalk.cc/api/movies_foreign.json?api_token=c9f6d90ce22f2690d975ac64ca7f5fdb';
$info_arr = json_decode(file_get_contents($info));

$tr = '';
foreach ( $info_arr->report as $report ) {

$tr .= "<tr>
<td>".$report->movies->title_ru."</td>
</tr>";
}

Proff
Юзер

Proff - 18 сентября 2016 03:37 -

foreach ( $info_arr->report->movies as $report ) {

$tr .= "<tr>
<td>".$report->title_ru."</td>
</tr>";
}

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх