За последние 24 часа нас посетили 8746 программистов и 701 робот. Сейчас ищут 170 программистов ...

Помогите разложить код

Тема в разделе "PHP и базы данных", создана пользователем skorpion, 18 ноя 2019.

  1. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    53
    Симпатии:
    1
    Адрес:
    Москва
    Всем привет!
    На работе дали задачу, потому что я немного понимаю в PHP, но которую я не могу сам решить...
    Уровень познаний поверхностный...

    Есть база и она выгружает данные вот в таком виде (только вообще без пробелов, одной строкой):
    {
    "content": [
    { "id": 0001,
    "document": "11111111",
    "status": "OPEN",
    "application": {
    "estimatedCost": {
    "amount": 1502.00,
    "unit": "RUB"
    },
    "info": {
    "comment": null,
    "managerId": null,
    "payerOrganization": null,
    "shipperOrganization": null
    },
    "id": 54565677,
    "status": "ON_TEST",
    "documentNumber": "DSFHJYJ",
    "createdUser": null,
    "groupInfo": null,
    "applications": [],
    "route": {
    "way": [{
    "contactPerson": {
    "email": "TEST@SERVER.ru",
    "fullName": "Юзер Пользович",
    "mobile": "+7 777 123-45-67"
    },
    "dateFrom": "2019-11-15T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 0
    },
    "country": {
    "code": "RU"
    },
    "address": "Россия, Улица Такая-то, 63",
    "city": "Город",
    "lat": 57.037595,
    "lng": 193.45774630000005,
    "placeId": "EjxVbnVzc2lhLCAdD6DTXKXRFO_FNhA_",
    "region": "Наш край"
    },
    "organization": {
    "inn": "12345678",
    "kpp": "123456789",
    "name": "Филиал Дальний ООО \"Сервис\"",
    "kontrInfo": "e74a82b082"
    },
    "type": 1,
    "id": 19017
    }, {
    "contactPerson": {
    "email": "ya@server.ru",
    "fullName": "Консьержка",
    "mobile": "+7 666 666-66-55"
    },
    "dateFrom": "2019-11-21T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 2502
    },
    "country": {
    "code": "RU"
    }
    }]
    },
    "items": [{
    "height": {
    "value": 0.000000,
    "unit": 2
    },
    "length": {
    "value": 0.000000,
    "unit": 2
    },
    "width": {
    "value": 0.000000,
    "unit": 2
    }]
    },
    "current": {
    "amount": 149890.00,
    "unit": "RUB"
    },
    "maxAvailable": {
    "amount": 33.20,
    "unit": "RUB"
    },
    "finishDate": "2019-11-15T08:43:26.783Z",
    "participantsCount": 0,
    "isCurrentCarrierLeading": false,
    "isCurrentCarrierWon": null,
    "version": 0,
    "dealId": null,
    "routeType": "STANDARD"
    }
    }
    },

    { "id": 0002,
    "document": "11111111",
    "status": "OPEN",
    "application": {
    "estimatedCost": {
    "amount": 1502.00,
    "unit": "RUB"
    },
    "info": {
    "comment": null,
    "managerId": null,
    "payerOrganization": null,
    "shipperOrganization": null
    },
    "id": 54565677,
    "status": "ON_TEST",
    "documentNumber": "DSFHJYJ",
    "createdUser": null,
    "groupInfo": null,
    "applications": [],
    "route": {
    "way": [{
    "contactPerson": {
    "email": "TEST@SERVER.ru",
    "fullName": "Юзер Пользович",
    "mobile": "+7 777 123-45-67"
    },
    "dateFrom": "2019-11-15T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 0
    },
    "country": {
    "code": "RU"
    },
    "address": "Россия, Улица Такая-то, 63",
    "city": "Город",
    "lat": 57.037595,
    "lng": 193.45774630000005,
    "placeId": "EjxVbnVzc2lhLCAdD6DTXKXRFO_FNhA_",
    "region": "Наш край"
    },
    "organization": {
    "inn": "12345678",
    "kpp": "123456789",
    "name": "Филиал Дальний ООО \"Сервис\"",
    "kontrInfo": "e74a82b082"
    },
    "type": 1,
    "id": 19017
    }, {
    "contactPerson": {
    "email": "ya@server.ru",
    "fullName": "Консьержка",
    "mobile": "+7 666 666-66-55"
    },
    "dateFrom": "2019-11-21T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 2502
    },
    "country": {
    "code": "RU"
    }
    }]
    },
    "items": [{
    "height": {
    "value": 0.000000,
    "unit": 2
    },
    "length": {
    "value": 0.000000,
    "unit": 2
    },
    "width": {
    "value": 0.000000,
    "unit": 2
    }]
    },
    "current": {
    "amount": 149890.00,
    "unit": "RUB"
    },
    "maxAvailable": {
    "amount": 33.20,
    "unit": "RUB"
    },
    "finishDate": "2019-11-15T08:43:26.783Z",
    "participantsCount": 0,
    "isCurrentCarrierLeading": false,
    "isCurrentCarrierWon": null,
    "version": 0,
    "dealId": null,
    "routeType": "STANDARD"
    }
    }
    },

    { "id": 0003,
    "document": "11111111",
    "status": "OPEN",
    "application": {
    "estimatedCost": {
    "amount": 1502.00,
    "unit": "RUB"
    },
    "info": {
    "comment": null,
    "managerId": null,
    "payerOrganization": null,
    "shipperOrganization": null
    },
    "id": 54565677,
    "status": "ON_TEST",
    "documentNumber": "DSFHJYJ",
    "createdUser": null,
    "groupInfo": null,
    "applications": [],
    "route": {
    "way": [{
    "contactPerson": {
    "email": "TEST@SERVER.ru",
    "fullName": "Юзер Пользович",
    "mobile": "+7 777 123-45-67"
    },
    "dateFrom": "2019-11-15T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 0
    },
    "country": {
    "code": "RU"
    },
    "address": "Россия, Улица Такая-то, 63",
    "city": "Город",
    "lat": 57.037595,
    "lng": 193.45774630000005,
    "placeId": "EjxVbnVzc2lhLCAdD6DTXKXRFO_FNhA_",
    "region": "Наш край"
    },
    "organization": {
    "inn": "12345678",
    "kpp": "123456789",
    "name": "Филиал Дальний ООО \"Сервис\"",
    "kontrInfo": "e74a82b082"
    },
    "type": 1,
    "id": 19017
    }, {
    "contactPerson": {
    "email": "ya@server.ru",
    "fullName": "Консьержка",
    "mobile": "+7 666 666-66-55"
    },
    "dateFrom": "2019-11-21T23:00:00Z",
    "dateTo": null,
    "location": {
    "distance": {
    "unit": 1,
    "value": 2502
    },
    "country": {
    "code": "RU"
    }
    }]
    },
    "items": [{
    "height": {
    "value": 0.000000,
    "unit": 2
    },
    "length": {
    "value": 0.000000,
    "unit": 2
    },
    "width": {
    "value": 0.000000,
    "unit": 2
    }]
    },
    "current": {
    "amount": 149890.00,
    "unit": "RUB"
    },
    "maxAvailable": {
    "amount": 33.20,
    "unit": "RUB"
    },
    "finishDate": "2019-11-15T08:43:26.783Z",
    "participantsCount": 0,
    "isCurrentCarrierLeading": false,
    "isCurrentCarrierWon": null,
    "version": 0,
    "dealId": null,
    "routeType": "STANDARD"
    }
    }
    }



    ],
    "total": 03,
    "sort": null,
    "first": true,
    "size": 25,
    "number": 0
    }


    Забираю данные из базы

    Код (Text):
    1.    // выводим в HTML-таблицу все данные клиентов из таблицы MySQL
    2.   while($data = mysql_fetch_array($qr_result)){
    3.  
    4.     $baza = $data['data'];
    5.  
    6.     preg_match("/id\":(.*?),/i",$baza, $nahodka_id);
    7.     $nahodka_id_txt = $nahodka_id[1];
    8.     preg_match("/status\":\"(.*?)\",/i",$baza, $nahodka_status);
    9.     $nahodka_status_txt = $nahodka_status[1];
    10.     preg_match("/documentNumber\":\"(.*?)\",/i",$baza, $nahodka_documentNumber);
    11.     $nahodka_documentNumber_txt = $nahodka_documentNumber[1];
    12.  
    13.     $br = "<br>";
    14.     echo 'результат: ' . $nahodka_id_txt . $br . $nahodka_status_txt . $br . $nahodka_documentNumber_txt;
    15.  
    16.  
    17.     // закрываем соединение с сервером  базы данных
    18.     mysql_close($connect_to_db);

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

    Я понимаю что я делаю что то не так и прошу помочь, как вытащить все данные из всех ID, а не только из первой.

    Заранее спасибо за помощь!
     
  2. Valick

    Valick Активный пользователь

    С нами с:
    12 авг 2018
    Сообщения:
    1.608
    Симпатии:
    266
    preg_match("/id\":(.*?),/i",$baza, $nahodka_id); - это ты сам придумал:?

    почитай что такое json
     
  3. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    53
    Симпатии:
    1
    Адрес:
    Москва
    Да, сам. Я же говорю что не очень понимаю в PHP, очень поверхностно... вот обратился за помощью.
     
  4. rewuxiin

    rewuxiin Активный пользователь

    С нами с:
    17 апр 2012
    Сообщения:
    594
    Симпатии:
    85
    это JSON

    нужно его превратить в массив.

    делай так

    $baza= json_decode($data['data'],true);

    а дальше с массивом разберешься без проблем, без всяких регулярок
     
    skorpion нравится это.
  5. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.244
    Симпатии:
    110
    Вы неправильно сформулировали проблему :)

    1. Самое первое что вам нужно сделать - это прочитать о том, что такое JSON (так называется формат, в котором представлены ваши данные) и как с ним правильно работать в PHP.

    Потому что получать данные из JSON как из простой строки при помощью регулярок, это не просто жесть, это жесть-жесть :D

    Если кратко: JSON конвертируется в ассоциативный массив при помощи функции https://www.php.net/manual/ru/function.json-decode.php и далее уже работаете с массивом.

    В общем, почитайте по теме - там не особо сложно. Возникнут конкретные вопросы - пишите в топик :)
     
  6. skorpion

    skorpion Активный пользователь

    С нами с:
    6 фев 2011
    Сообщения:
    53
    Симпатии:
    1
    Адрес:
    Москва
    Отлично! Дело пошло! Огромнейшее спасибо! Всё оказалось проще чем я думал, и оказалось что не туда копал.
    Завтра доделаю и выложу. Мало ли кому понадобится.
    Еще раз спасибо!
     
    MouseZver нравится это.
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    6.027
    Симпатии:
    966
    Адрес:
    Лень
    @skorpion, + mySQL устарел. Актуально юзать с приставкой mySQLi
     
  8. Roman __construct

    Roman __construct Активный пользователь

    С нами с:
    27 апр 2019
    Сообщения:
    1.244
    Симпатии:
    110
    Покормите бездомного котика - и мы в расчете :D

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