Каковы возможные способы обработки расширяемой формы с помощью PHP? - PullRequest
0 голосов
/ 29 ноября 2009

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

Table1
    id
    description
    some
    other
    information

Table2
    table1ID
    Some
    other
    information

Для каждой таблицы1 может быть любое количество записей в таблице2.Мне нужно создать форму, которая позволит пользователям вставлять новые элементы в таблицы 1 и 2. Я сталкивался с этой проблемой в ряде проектов.Во-первых, это сохранение игровой статистики.Таблица 1 - таблица транспортных средств, а таблица 2 содержит информацию о каждом оружии транспортного средства.

Я могу придумать два способа справиться с этим.Один из них - показать всю информацию в одной форме и использовать Javascript, чтобы позволить пользователям добавлять новые подформы для каждого оружия по мере необходимости.Затем обработайте все сразу.Тем не менее, это немного некрасиво и, очевидно, опирается на JavaScript.Так что это неприемлемо для тех, у кого отключен JavaScript.

Другой способ, о котором я могу подумать, - это иметь несколько страниц.Первая страница позволит пользователям вводить общие данные, затем они могут нажать следующую для ввода данных об оружии.Каждый раз, когда они наносят следующий удар, они могут ввести новое оружие.Наконец, им будет показан полностью введенный автомобиль, и они смогут вернуться и отредактировать каждую его часть по своему усмотрению и, когда они будут готовы, отправить ее.

С одной стороны, этот способ требует намного больше обработки, чем первый.Это намного сложнее.Требуется, чтобы каждый шаг создания транспортного средства был добавлен в базу данных для временного хранения, пока пользователь работал над ним.Это должно быть отмечено как неполное.Мне пришлось бы создать какую-то задачу cron для очистки всех незавершенных автомобилей.

С другой стороны, он не использует JavaScript.

Существуют ли другие способы обработки подобных ситуаций?Если нет, какой из этих двух методов считается лучшей практикой?Есть ли способ удержать данные между страницами форм во втором методе, не добавляя их временно в базу данных?

Доступные мне инструменты - это база данных MySQL, PHP, javascript, html /CSS (очевидно) и операционная система Linux.

Ответы [ 2 ]

2 голосов
/ 29 ноября 2009

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

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

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

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

Удачи!

1 голос
/ 30 ноября 2009

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...