Отображение столбцов электронной таблицы в поля базы данных

Я не уверен, с чего начать этот проект. Я знаю, как читать содержимое таблицы 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?

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

дамп отправки формы после сопоставления пользователем

1 ответ

Если я правильно понимаю, ваш вопрос: 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,

Когда сопоставление выполнено пользователем, вы должны сохранить имена столбцов / полей в качестве данных для элемента DOM db 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

Другие вопросы по тегам