Сучасна диджитал-освіта для дітей — безоплатне заняття в GoITeens ×
Mazda CX 5
×

Достать цену из таблицы в зависимости от введенных данных

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

Просьба помочь хеллоуворлдщику.
Ситуация следующая: есть таблица excel 500 строк / 6 столбцов с размерами автобомильных шин. Первый столбец — тип шины, выглядит следующим образом: 220 / 50 / R13. Это 3 отдельных параметра шины, которые вводит пользователь. Другие 5 столбцов — 5 категорий состояния шины для каждого — своя цена.
Т.е

                   1    |   2   |   3   |   4   |   5   |
220 / 50 / R13    150     130      120     100     90
200 / 60 / R14    200     170      150     130     110

и т.д.
Требуется в зависимости от введенных данных вернуть пользователю цену на шину. Вопрос — как это сделать?

👍ПодобаєтьсяСподобалось0
До обраногоВ обраному0
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Если в пределах Excel, то Данные — Сводная таблица. Там тебе и фильтрация есть, и группировка, и чё душе угодно. Только мой тебе совет — добавь ЕЩЁ три столбца, куда распарси формулой строку первого — так будет проще фильтровать.

Если нужен тупо поиск, тыкни Данные — Фильтр — Автофильтр [это в классическом меню]. Тогда тупо будут филтры на каждом столбце и всё что тебе надо в пару кликов находится.

ЗЫ. Если тебе надо какая-то автоматизация — так и спрашивай, с указанием что к чему хочешь привинтить. Например, если это веб, то можно ODBC натравить на эксель-файл и не мучаться.

Чтобы не ломать workflow и не переучивать пользоваталей:
1. Переносим табличку в Google Docs.
2. Вытягиваем данные через API, напр. github.com/...burnash/gspread
3. PROFIT

Btw, через API можно и табличку обновлять. Мега-удобно.

я б радив зберегти файл у *.csv форматі, якщо вам треба і в екселі відкривати.
а вже csv легко парсити. або на початку загружати все в масив(мапу), або на льоту витягувати потрібний рядок.
*домен у вас цікавий :)

таблицу Екселя грузим в MySQL бузу данных. Это будет немного другая таблица потому что вам нада перевести состояние шин в столбец.
model condition Price
220/50/R13 1 150
220/50/R13 2 130
220/50/R13 3 120
220/50/R13 4 100
220/50/R13 5 90
200/60/R14 1 200
и так далее

Для сайта делаем считывание значений 3х select и формируем SQL запрос к базе типа
string SELECT1= read_value(select1)
string SELECT2= read_value(select2)
string SELECT3= read_value(select3)
string CONDITION= read_value(CONDITION)
string SQL_condition=" «; //условие пока пустое потому что мы не знаем сколько селектов выбрано
if (SELECT1>0 and SELECT2>0 and SELECT3>0 and CONDITION>0) {
SQL_condition=SELECT1+» and «+ SELECT2+» and " +SELECT3+" and " +CONDITION//
price_for_shina=(select PRICE from TABLE where SQL_condition)
}
else { // какой то селект был не выбран
пишем пользователю что он не все выбрал}

Первый столбец всегда одного вида.
Введенные данные берутся из 3х выпадающих списков-select’ов. Т.е. есть html страница, на ней 3 select’a + select состояния и кнопка получить цену.
Вернуть означает добавить в div под select’ами цену.
Подумал, что можно сделать с помощью LIKE запроса к SQL.( про SQL не знаю вообще ничего)
т.е. 3 цифры из select’ов собираются в переменную x, она отправляется SQL как-то так
select NAME from shyny_price where NAME LIKE ’x’
судя по всему вернется нужная строка в которой будут 5 цен. Вопрос как выбрать Z цену, где Z это номер ячейки от 1 до 5 в зависимости от введенного пользователем состояния.
Прошу прощения за сумбурность изложения
Вот ссылка на сам калькулятор, на select «Сезон» не обращайте внимания
bestonlinegames.com.ua

Почему оно вообще хранится в Excel’e? Как я понимаю, данные в этом файле кто-то постоянно правит ручками? В таком случае, вариантов видится несколько (по степени убывания правильности):
1. Забыть про Excel, хранить данные в базе, людям дать интерфейс для их модификации.
2. Парсить это файл и складывать в БД, оттуда доставать значения по запросу.
2a. Может быть и не складывать вообще в БД, а просто в памяти держать на сервере, depends on your needs.

Если складывать в базу, то никаких LIKE’ов не нужно, нужна таблица с 5-ю полями, 4-е из которых буду ключом, т.е. что-то типа

select price from tire_price where width = :w and height = :h and radius = :r and condition = :c
shyny_price
Такие имена — это плохой стиль, юзайте словарь.

Я смотрю что у Вас там по ссылке всё захардкожено в джаваскрипте. Откройте Ваш index.html и поищите в нём функцию getPrice(). Вам нужно её видоизменить. Простейший для Вас способ, это перегнать из экселя данные в CSV формат, а уже его открыть редактором и автозаменой привести к виду:

var data = {
  '205 / 50 / R13': ['150', '130', '120', '100', '90'],
  '200 / 60 / R14': ['200', '170', '150', '130', '110']
};
После чего вставить эти данные перед функцией getPrice(). Сама функция (часть определения цены) должна быть изменена до чего-то типа такого:
var index = width + ' / ' + profil + ' / ' + radius;
if (typeof data[index] == 'undefined') {
  price = 'необходимо уточнить у оператора';
} else {
  price = data[index][probeg - 1];
}

Хотя, если данных много, то загрузка страницы может тупить, по-хорошему всё нужно переделывать, но Вам такой вариант не катит, как я понял 8)

Первый столбец руками набран? в одном и том же формате — или «как получится»?
«введенные данные» вводятся куда? в таблицу, в диалоговое окно, выбирается мышью?
ведь, как я понимаю, надо задать и тип, и «категорию состояния», что бы это ни значило(износ?). значит, надо два значения «ввести». а как? и куда?
и что значит «вернуть» — подсветить, проскроллить, выдать диалоговое окно с ценой?

Підписатись на коментарі