Отображение столбцов электронной таблицы в поля базы данных - PullRequest
0 голосов
/ 12 октября 2018

Я не уверен, с чего начать этот проект.Я знаю, как читать содержимое таблицы Excel, я знаю, как определить строку заголовка, я знаю, как перебрать содержимое.Я верю, что у меня проработана часть UX, но я не уверен, как обрабатывать данные.

Я гуглил и нашел только решения .Net, но я ищу решение ColdFusion / Lucee.

У меня есть рабочая форма, позволяющая мне сопоставить столбец таблицы пользователяк значениям в моей базе данных (это просто для этого поста; у пользователя нет прямого доступа к базе данных).

Теперь, когда у меня есть данные, я не уверен, как перебрать результаты данных,Я верю, что будет несколько петель (внешняя и внутренняя).Тогда, конечно, мне также нужно перебрать содержимое файла, но я думаю, что если я смогу отобразить заголовки, я смогу выяснить остальные.

Любые хорошие ссылки, учебные пособия или руководства будутс благодарностью.

Некоторого псевдокода может быть достаточно, чтобы начать работу.

User uploads form  
System reads headers and content. 
User is presented form with a list of columns from their uploaded spreadsheet to match with available database fields (eg “column1” matches “customer name”. 
User submits form. 
Now what?

ОБНОВЛЕНО Вот как выглядят данные ПОСЛЕ того, как отображение было сделано в моей форме.Поставщиком столбца является :::, а внутри столбца |||указывает идентификатор, связанный с выбранным значением столбца.Я включил идентификатор и значение столбца, так как планирую снова отобразить сопоставление в качестве подтверждения.Наличие идентификатора сохраняет поездку в базу данных.

dump of form submission after mapping has been performed by user

1 Ответ

0 голосов
/ 12 октября 2018

Если я правильно понимаю, ваш вопрос: how do you provide the user a form allowing them to map their spreadsheet columns to that of the database

Поскольку у вас есть имена столбцов электронной таблицы и имена столбцов базы данных, то эта проблема, по сути, является проблемой пользовательского интерфейса / UX.Вам нужно показать оба списка и позволить пользователю отображать их.Я могу представить несколько подходов к этому.Моей первой мыслью будет какая-то операция перетаскивания:

Создайте список блоков, по одному для каждого поля в таблице базы данных, и включите имя поля в (или выше) поле.Я назову это db field list.Затем создайте еще один список для каждого столбца из электронной таблицы, который я назову spreadsheet column list.Пользователь перетаскивает элементы из spreadsheet column list в db field list.

. Когда сопоставление выполнено пользователем, имена столбцов / полей сохраняются в качестве данных для элемента DOMdb field list коробка.Затем, после отправки, вы получите данные сопоставления, посетив каждое поле и добавив его в массив.Затем вы должны сериализовать этот массив в JSON и отправить его в обработчик отправки формы.

Это может быть сложно или просто, в зависимости от ваших знаний о реализации пользовательского интерфейса с использованием JavaScript.JQuery делает это легко (если вы знаете, JQuery).Есть даже плагин пользовательского интерфейса jquery, который делает это: https://jqueryui.com/droppable/.

Быстрый поиск javascript drag drop поможет, и вот несколько статей, которые я нашел:

https://www.w3schools.com/html/html5_draganddrop.asp

https://medium.com/quick-code/simple-javascript-drag-drop-d044d8c5bed5

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

https://codereview.stackexchange.com/questions/94493/submit-an-array-as-an-html-form-value-using-javascript

...