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

Как записывать данные в базу из JSON?


     21.08.2019    Общие вопросы по PHP, Модули    98

вопрос
Здравствуйте.

Мне необходимо в базу данных записывать дополнительные данные о каждом зарегистрированном пользователе, получать данные нужно из Json.

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

Т.е. json содержит ответ с нужными мне данными.

Необходимо по email пользователя зарегистрированного на dle сайте, найти данные в json, в json это поле называется email.

То есть, есть json в котором присутствуют поля email со всеми нужными данными, но в нем могут быть email адреса не зарегистрированных на сайте пользователей.

Как мне обращаясь к этому json при нахождении в нем email зарегистрированного на сайт dle пользователя/телей, получить данные и сохранить их в базу данных в таблице пользователя, чтобы потом выводить списком на странице /user/пользователь?

Json содержит ответ из 10 позиций, как-то нужно по ним пройтись и выявить данные принадлежащие зарегистрированному пользователю.

Помогите с реализацией, пожалуйста.
Буду рад любому вашему совету и предложению по оптимизации описанного действия, едь на сайте может быть зарегистрировано несколько тысяч пользователей, нужно сделать так, чтобы система не висла при поиске в json email зарегистрированных пользователей.
Данные из json нужно обновлять как можно чаще, т.е. сравнивать и записывать в базу при нахождении зарегистрированного email.


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


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

deadluk
Юзер

deadluk - 22 августа 2019 13:07 -

попробуйте в стол заказов отписать

dj-avtosh
php-developer

dj-avtosh - 22 августа 2019 13:17 -

Здравствуйте.

Mysql 8 поддерживает тип поля json, соответственно поиск вхождения подстроки по нему.

Какой у Вас мускул?

telegram: @blob42
skype: elhan.isaev (seldom)

MicroWeber
Юзер

MicroWeber - 22 августа 2019 13:47 -

Здравствуйте!
Цитата: dj-avtosh
Какой у Вас мускул?

Любой, только создаю проект.

lutskboy
Эксперт

lutskboy - 22 августа 2019 19:06 -

может вам достаточно будет сделать доп таблицу с полями тип значение user_id
вставка в бд
email - ivan@mail.ru - 6578
book- mysql for beginners - 6578

потом достаем
WHERE type='email' AND user_id='6578' 

MicroWeber
Юзер

MicroWeber - 22 августа 2019 20:23 -

Цитата: lutskboy
потом достаем

Да, но мне сначала нужно эти данные сохранить в базу данных и делать это нужно регулярно, т.е. обращаться к json и проверять, есть ли новые email зарегистрированные в dle.

lutskboy
Эксперт

lutskboy - 23 августа 2019 13:03 -

так в чем проблема. добавьте еще поле дата. и можете по нему доставать допустим email за последние сутки

MicroWeber
Юзер

MicroWeber - 23 августа 2019 14:23 -

lutskboy,мне механизм сохранения данных в базу не понятен.
Я понял, что можно создать доп. поля в базе, в таблице с информацией о пользователе.

Допустим у меня на сайте 5000 зарегистрированных пользователей, получается, что мне из json нужно взять все email и сравнить их с зарегистрированными пользователями, если есть совпадения, то сохранить нужную информацию.
Выполнять это нужно как можно чаще, чтобы информация на сайте была актуальной.

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

lutskboy
Эксперт

lutskboy - 23 августа 2019 15:27 -

Цитата: MicroWeber
даже если заказывать платную разработку, я вряд ли смогу корректно сформулировать тз

ну да. как сформулируете так вам и сделают.

MicroWeber
Юзер

MicroWeber - 23 августа 2019 17:49 -

Вот образец json из которого нужно получать данные

[{"id":323,"userId":676,"createdAt":"2019-08-23T13:05:56.830Z","status":"APPROVED","currency":"RUR","paySystem":"visa","paySystemGroup":"creditCard","total":69.00,"ipAddress":"246.227.2.4","OneTimeOffer":false,"ware":{"id":812,"title":"Заголовок.","type":"DIGITAL","userId":728},"income":297.08,"customer":{"id":8832,"fio":"Петрович","email":"test@test.ru"}},
{"id":324,"userId":677,"createdAt":"2019-08-23T14:05:56.830Z","status":"APPROVED","currency":"RUR","paySystem":"visa","paySystemGroup":"creditCard","total":69.00,"ipAddress":"246.227.2.4","OneTimeOffer":false,"ware":{"id":813,"title":"Заголовок.","type":"DIGITAL","userId":729},"income":297.08,"customer":{"id":8833,"fio":"Петрович","email":"test2@test.ru"}},
{"id":325,"userId":678,"createdAt":"2019-08-23T15:05:56.830Z","status":"APPROVED","currency":"RUR","paySystem":"visa","paySystemGroup":"creditCard","total":69.00,"ipAddress":"246.227.2.4","OneTimeOffer":false,"ware":{"id":814,"title":"Заголовок.","type":"DIGITAL","userId":730},"income":297.08,"customer":{"id":8834,"fio":"Петрович","email":"test3@test.ru"}}]


Например, если в dle безе есть пользователь с email адресом test2@test.ru, нужно получить данные ware->id, ware->title, income и записать их в таблицу пользователя dle сайтом.

lutskboy
Эксперт

lutskboy - 23 августа 2019 19:28 -

php скриптом етот json прогнать в цикле и сверить с бд юзеров

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

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

наверх