Каковы возможные способы обработки расширяемой формы с помощью PHP?

0

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

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.

  • 1
    Практически каждый современный сайт в Интернете опирается на Javascript. Дни размещения людей, которые отключили Javascript, прошли.
  • 0
    @BillKarwin: В некоторых странах (включая Великобританию) запрещено запрещать доступ к вашему веб-сайту.
Теги:
forms

2 ответа

2
Лучший ответ

Что бы я сделал, это использовать javascript. С моей точки зрения, у многих людей в настоящее время отключен javascript.

Но если вы решите не использовать javascript, есть еще один способ избежать дополнительных накладных расходов.

Вы можете попытаться сохранить второй набор результатов в таблице или в файле cookie.

Посмотрите на факты, HTTP не обладает большими возможностями сохранения данных.

Удачи!

  • 1
    Сессии и файлы cookie - это способ использовать временные данные, которые при необходимости можно легко восстановить. Для более конфиденциальных данных вы можете создать базу данных, предназначенную для хранения конфиденциальных временных данных. Черт возьми, вы даже можете переопределить session_save_handler для сохранения данных сеанса в БД.
  • 0
    Я размышлял о сессиях или куки-файлах, однако, когда я сталкиваюсь с такой ситуацией, часто бывает очень много данных. Сколько накладных расходов связано с использованием сеансов или файлов cookie для сохранения данных?
Показать ещё 4 комментария
1

Я бы просто использовал JavaScript. Как и в случае скомпилированных приложений, совершенно необходимо, чтобы пользовательская система отвечала минимальным требованиям, включая, в случае необходимости, JavaScript, Flash и т.д.

Тем не менее, если вы рынок в основном параноик и Lynx пользователей, то вы должны рассмотреть альтернативу.

Если вам нужно хранить временные данные, я бы не поместил их в базу данных. Вместо этого это отличное место для использования сеансов. Если ваш единственный вариант - хранить временные данные в таблице базы данных (сеансы недоступны в некоторых средах), я бы предложил хранить все эти временные данные в таблице отдельно от ваших реальных данных и использовать MySQL-движок MySQL memory для этого временная таблица.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню