У меня есть база данных, которая имеет две таблицы, одна из которых содержит внешний ключ для первого. Аналогично этому:
Table1
id
description
some
other
information
Table2
table1ID
Some
other
information
Для каждой таблицы 1 может быть любое количество записей в таблице2. Мне нужно создать форму, которая позволяет пользователям вставлять новые элементы в таблицы 1 и 2. Я столкнулся с этой проблемой в ряде проектов. В одном это экономит ролевую игру. Таблица 1 - таблица транспортных средств, а в таблице 2 содержится информация о каждом оружии транспортного средства.
Я могу представить два способа справиться с этим. Один из них - показать всю информацию в одной форме и использовать Javascript, чтобы пользователи могли добавлять новые подформы для каждого оружия по мере необходимости. Затем обработайте все сразу. Однако это немного уродливо и, очевидно, зависит от javascript. Таким образом, он не дружит с теми, у кого отключен javascript.
Другим способом, о котором я могу думать, было бы иметь несколько страниц. Первая страница позволит пользователю вводить общие данные, после чего они могут попасть рядом с данными о вводе оружия. Каждый раз, когда они наступают, они могут вводить новое оружие. Наконец, им будет показано полностью введенное транспортное средство, и они смогут вернуться и отредактировать каждую его часть по своему усмотрению и, когда они будут готовы, отправить ее.
С одной стороны, этот способ требует гораздо большей обработки, чем первая. Это гораздо более активное участие. Это потребует, чтобы каждый шаг создания транспортного средства был добавлен в базу данных для временного хранения, пока пользователь работал над ним. Он должен быть отмечен как неполный. Мне нужно было бы создать какую-то работу cron, чтобы очистить все незавершенные машины.
С другой стороны, он не использует javascript.
Существуют ли другие способы решения подобных ситуаций? Если нет, то какой из этих двух методов считается лучшей практикой? Есть ли способ повесить данные между страницами формы во втором методе, временно не добавляя его в db?
Инструменты, которые я имею для меня, - это база данных MySQL, PHP, javascript, html/css (очевидно) и операционная система Linux.
Что бы я сделал, это использовать javascript. С моей точки зрения, у многих людей в настоящее время отключен javascript.
Но если вы решите не использовать javascript, есть еще один способ избежать дополнительных накладных расходов.
Вы можете попытаться сохранить второй набор результатов в таблице или в файле cookie.
Посмотрите на факты, HTTP не обладает большими возможностями сохранения данных.
Удачи!
Я бы просто использовал JavaScript. Как и в случае скомпилированных приложений, совершенно необходимо, чтобы пользовательская система отвечала минимальным требованиям, включая, в случае необходимости, JavaScript, Flash и т.д.
Тем не менее, если вы рынок в основном параноик и Lynx пользователей, то вы должны рассмотреть альтернативу.
Если вам нужно хранить временные данные, я бы не поместил их в базу данных. Вместо этого это отличное место для использования сеансов. Если ваш единственный вариант - хранить временные данные в таблице базы данных (сеансы недоступны в некоторых средах), я бы предложил хранить все эти временные данные в таблице отдельно от ваших реальных данных и использовать MySQL-движок MySQL memory
для этого временная таблица.