Я создаю веб-приложение, которое использует PHP 5, MySQL 5 и Javascript с jQuery и AJAX.
Приложение представляет собой довольно сложный процесс выбора с несколькими выпадающими меню, которые пользователь может выбирать в любом порядке. Каждый выбор в раскрывающемся списке даст еще несколько критериев выбора, которые ограничат выбор в других раскрывающихся списках и, наконец, дадут ограниченный набор результатов.
Я использую Javascript на стороне клиента с подключением AJAX к PHP на сервере и базой данных MySQL. Идея заключается в том, что каждый раз, когда пользователь выбирает что-то из раскрывающегося списка, я отправляю запрос AJAX для обновления всех остальных раскрывающихся списков. Когда все возможные параметры будут установлены, будет представлен набор результатов.
(Я хочу сохранить логику на стороне сервера по разным причинам, поэтому использую AJAX.)
Теперь я не уверен, как лучше всего справиться с этим «итеративным» процессом для каждого пользователя:
У меня есть таблица со всеми критериями, к которым приводит каждый выбор. Так как каждый выпадающий выбор будет приводить к набору критериев выбора, я мог бы сохранить строку запроса на сервере, который добавляется для каждого выбора. Затем я запускаю сохраненную в данный момент строку запроса, чтобы выяснить, что должно происходить в каждом раскрытии, отправляю эти данные клиенту, затем сохраняю запрос для последующего добавления дополнительных критериев, запуска, отправки и т. Д. И т. Д.
Затем я должен сохранить эту строку запроса на сервере для каждого пользователя, возможно, в текстовом файле. Или, возможно, в качестве хранимой процедуры, см. Ниже ....
Другой подход заключается в том, чтобы просто выполнить запрос с новыми критериями, когда выбор сделан, отправить данные для обновления раскрывающихся списков, а затем сохранить выбор во временной таблице, для которой я выполняю следующий запрос и т. Д. И т. Д. временная таблица будет уменьшаться для каждого выбора, пока я не представлю результат.
В приложении одновременно могут работать несколько пользователей, поэтому, вероятно, необходимо как-то идентифицировать пользователей по идентификатору cookie / идентификатору сеанса .... (?)
И сохраненный запрос или временная таблица должны исчезнуть через некоторое время, когда каждый пользователь уходит .... как?
Методы выбора, чтобы добавить все больше и больше критериев для выбора из таблицы, что позволяет выполнять сложные вычисления для выбора:
Использование объединения
Использование временной таблицы, которая становится все более и более ограниченной по мере удаления записей при добавлении новых критериев.
Использование подразделов.
Методы хранения для отслеживания между каждым шагом для каждого пользователя:
Сохраните параметры в файле сервера и вставьте их в sql или хранимую процедуру для каждого шага выбора, выполняя новый запрос по всей базе данных для каждого шага, но каждый раз с добавлением новых критериев.
Сохранить запрос sql в файле (ах) и расширять его для каждого шага ....
Сохранить SQL-запрос в таблице / поле .....
Сохранить SQL-запрос в хранимой процедуре .....
Сохраните фактический ограниченный набор результатов предыдущих выборов для каждого пользователя в таблице темпопарий, которая будет все меньше и меньше по мере удаления все большего количества записей для каждого шага.
Сохранять параметры на стороне клиента во время сеанса, отправляя их все на сервер для каждого выбора
Может ли кто-нибудь помочь с этим решением?
Rgds
PM