Добрый день! Цель: сделать ПОПОЛНЯЕМУЮ ПЕРИОДИЧЕСКИ базу данных клиентов. Работать нужно с табличами из БД, которые phpMyAdmin выгружает в любом формате. ВАЖНО: должна быть возможность в дальнейшем пользоваться макросом для пополнения базы. Всего 4 таблицы. Из них нужно сделать один конечный файл. Образцы исходных таблиц и конечного файла во вложении. Попробую теперь расписать по каждому полю в отдельности. Порядок полей произвольный, как Вам удобней. В нужном порядке потом сам со временем расставлю. Важен набор. Сначала работаем с таблицей №1 users. ВАЖНО: юзеров c username phone и edadrugu игнорим. С ними отдельная работа в отдельном файле. 1) ячейку id заполняем из поля id 2) ячейку username заполняем из поля username 3) ячейку e-mail заполняем из поля e-mail 4) ячейку registerDate заполняем из поля registerDate
Больше из этой таблицы взять нечего. Переходим к таблице №2 user_info. 5) ячейку name заполняем из поля first_name 6) ячейку ФИО заполняем из полей last name+first name+middle name (именно в таком порядке) 7) ячейку city заполняем из поля City 8) ячейку phone number заполняем из поля phone_1 (убираем символы "тире" и "пробел", чтобы получилось слитно 11 цифр)
С этой таблицей все. Переходим к таблице №3 orders. 9) ячейку order's number заполняем из order_number 10) ячейку order's id заполняем из virtuemart_order_id (оказалось, что он тоже нужен, дальше поймете почему) 11) ячейку date of order заполняем из то ли cdate, то ли mdate. Не знаю, что означает каждое из них. Нужна именно дата заказа, а не дата последнего изменения. По идее, дата заказа имеет меньшее значение из двух. 12) ячейку сustomer_note заполняем без изменений из сustomer_note. Делаем следующую проверку: если содержится "Т:" и/или "Т1:" и/или "Т2:" и/или "Т3:" и/или "Т4:" и/или "Т5:", то все между этим и "!!" помещаем в ячейку Products.
13) Чтобы заполнить ячейку Products нужна отдельная таблица! Называется order_items. Здесь хранятся данные о том, какой товар в каждом заказе. Тут из поля order_item_name берем содержимое и помещаем его в ячейку Products. Соответствующий заказ находим по полю virtuemart_order_id и ищем совпадение в ячейке order's id. Здесь каждое наименование товара содержится в отдельной строке. То есть, если наименований несколько, идет несколько строк. Просто у них совпадает virtuemart_order_id. Не знаю, как это лучше реализовать, чтобы удобно было. Наверное, нужно по virtuemart_order_id искать совпадение с order's id. Далее проверять ячейку Products. Если она пустая, записываем в нее данные. Если она уже заполнена (такое будет в случае нескольких товаров), тогда копируем всю строку, вставляем ее под этой проверяемой строкой и заменяем содержимое ячейки Products. В идеале, конечно, если это просто в реализации, сделать по-другому. Товаров может быть 4,5 и больше. При таком подходе товары в заказе перемешаются. Поэтому, если ячейка Products непустая, надо найти в столбце order's id тот номер, который отличается от текущего, и уже вставлять скопированную ячейку над этой строкой. Ну, или как-то по-другому. Вам виднее. Но это непринципиально. Мне главное, чтобы по фильтру можно было фильтровать различные товарные группы. Для этого они обязательно должны быть в раздельных строках. А их порядок в заказе - это уже вопрос комфорта при работе с базой и заказов в админке при необходимости.
С юзерами phone и edadrugu отдельная работа. Первые две таблицы не нужны, там ничего интересного по ним нет. Работа с таблицей №3 и 4. С прошлого года информацию начали кодировать, тут все просто (подробности кодировки при переписке). А вот до этого - не кодировали. Поэтому некоторые особенности. Нужно проверять весь customer_note и по определенным правилам вычленять нужную информацию (без учета регистра): - если есть слово Аксай, Батайск, Новочеркасск, Азов, Таганрог, Шахты, записываем в City. Если ни одного из этих слов нет, в City пишем тогда Ростов-на-Дону. -телефон: если есть без знаков "пробел", "-", "(", ")" 11 или 10 ("8" или "+7" могли не писать) записываем в поле Phone. Или же 7цифр (городской номер могли без кода писать). -e-mail думаю просто. знак @ и от него в обе стороны до пробела это почта. В ячейку e-mail. Думаю, больше ничего не получится вычленить. Если знаете способ, как можно вытащить имя - здорово.
Добрый день! Цель: сделать ПОПОЛНЯЕМУЮ ПЕРИОДИЧЕСКИ базу данных клиентов. Работать нужно с табличами из БД, которые phpMyAdmin выгружает в любом формате. ВАЖНО: должна быть возможность в дальнейшем пользоваться макросом для пополнения базы. Всего 4 таблицы. Из них нужно сделать один конечный файл. Образцы исходных таблиц и конечного файла во вложении. Попробую теперь расписать по каждому полю в отдельности. Порядок полей произвольный, как Вам удобней. В нужном порядке потом сам со временем расставлю. Важен набор. Сначала работаем с таблицей №1 users. ВАЖНО: юзеров c username phone и edadrugu игнорим. С ними отдельная работа в отдельном файле. 1) ячейку id заполняем из поля id 2) ячейку username заполняем из поля username 3) ячейку e-mail заполняем из поля e-mail 4) ячейку registerDate заполняем из поля registerDate
Больше из этой таблицы взять нечего. Переходим к таблице №2 user_info. 5) ячейку name заполняем из поля first_name 6) ячейку ФИО заполняем из полей last name+first name+middle name (именно в таком порядке) 7) ячейку city заполняем из поля City 8) ячейку phone number заполняем из поля phone_1 (убираем символы "тире" и "пробел", чтобы получилось слитно 11 цифр)
С этой таблицей все. Переходим к таблице №3 orders. 9) ячейку order's number заполняем из order_number 10) ячейку order's id заполняем из virtuemart_order_id (оказалось, что он тоже нужен, дальше поймете почему) 11) ячейку date of order заполняем из то ли cdate, то ли mdate. Не знаю, что означает каждое из них. Нужна именно дата заказа, а не дата последнего изменения. По идее, дата заказа имеет меньшее значение из двух. 12) ячейку сustomer_note заполняем без изменений из сustomer_note. Делаем следующую проверку: если содержится "Т:" и/или "Т1:" и/или "Т2:" и/или "Т3:" и/или "Т4:" и/или "Т5:", то все между этим и "!!" помещаем в ячейку Products.
13) Чтобы заполнить ячейку Products нужна отдельная таблица! Называется order_items. Здесь хранятся данные о том, какой товар в каждом заказе. Тут из поля order_item_name берем содержимое и помещаем его в ячейку Products. Соответствующий заказ находим по полю virtuemart_order_id и ищем совпадение в ячейке order's id. Здесь каждое наименование товара содержится в отдельной строке. То есть, если наименований несколько, идет несколько строк. Просто у них совпадает virtuemart_order_id. Не знаю, как это лучше реализовать, чтобы удобно было. Наверное, нужно по virtuemart_order_id искать совпадение с order's id. Далее проверять ячейку Products. Если она пустая, записываем в нее данные. Если она уже заполнена (такое будет в случае нескольких товаров), тогда копируем всю строку, вставляем ее под этой проверяемой строкой и заменяем содержимое ячейки Products. В идеале, конечно, если это просто в реализации, сделать по-другому. Товаров может быть 4,5 и больше. При таком подходе товары в заказе перемешаются. Поэтому, если ячейка Products непустая, надо найти в столбце order's id тот номер, который отличается от текущего, и уже вставлять скопированную ячейку над этой строкой. Ну, или как-то по-другому. Вам виднее. Но это непринципиально. Мне главное, чтобы по фильтру можно было фильтровать различные товарные группы. Для этого они обязательно должны быть в раздельных строках. А их порядок в заказе - это уже вопрос комфорта при работе с базой и заказов в админке при необходимости.
С юзерами phone и edadrugu отдельная работа. Первые две таблицы не нужны, там ничего интересного по ним нет. Работа с таблицей №3 и 4. С прошлого года информацию начали кодировать, тут все просто (подробности кодировки при переписке). А вот до этого - не кодировали. Поэтому некоторые особенности. Нужно проверять весь customer_note и по определенным правилам вычленять нужную информацию (без учета регистра): - если есть слово Аксай, Батайск, Новочеркасск, Азов, Таганрог, Шахты, записываем в City. Если ни одного из этих слов нет, в City пишем тогда Ростов-на-Дону. -телефон: если есть без знаков "пробел", "-", "(", ")" 11 или 10 ("8" или "+7" могли не писать) записываем в поле Phone. Или же 7цифр (городской номер могли без кода писать). -e-mail думаю просто. знак @ и от него в обе стороны до пробела это почта. В ячейку e-mail. Думаю, больше ничего не получится вычленить. Если знаете способ, как можно вытащить имя - здорово.frederik132
nilem, Вы не так поняли. Это возможные доступные форматы. Я могу экспорт сделать в любой, один, какой нужен. Кому в каком удобней работать. А вы подумали, что во всех этих форматах?
nilem, Вы не так поняли. Это возможные доступные форматы. Я могу экспорт сделать в любой, один, какой нужен. Кому в каком удобней работать. А вы подумали, что во всех этих форматах?frederik132