MySQL и PHP — списки выбора/опций и показ данных пользователям, что по-прежнему позволяет мне генерировать запросы.

StackOverflow https://stackoverflow.com/questions/2541643

  •  23-09-2019
  •  | 
  •  

Вопрос

Извините за неясный заголовок, пример прояснит ситуацию:

TABLE: Scenario_victories

ID  scenid        timestamp      userid side    playdate
1   RtBr001   2010-03-15 17:13:36   7     1     2010-03-10
2   RtBr001   2010-03-15 17:13:36   7     1     2010-03-10
3   RtBr001   2010-03-15 17:13:51   7     2     2010-03-10

ID и timestamp являются автоматическими вставками базы данных при добавлении остальных 4 полей.

Первое, что следует отметить, это то, что пользователь может записать несколько игр одного и того же сценария (сценария) в одну и ту же дату (игровую дату), возможно, с одним и тем же результатом (сторона = победитель).Следовательно, для надежности необходим уникальный идентификатор и временные метки.

Теперь на их странице пользователя я показываю историю их записанных игр в формате <select><option>... форма списка с двумя кнопками в конце - Delete Record и Go to Scenario

Мой сценарий принимает scenid и после попадания в несколько других таблиц возвращается что-то более удобное для пользователя, например:

  (playdate)   (from scenid)        (from side)
#########################################################
# 2010-03-10  Road to Berlin #1 -- Germany, Hungary won #
# 2010-03-10  Road to Berlin #1 -- Germany, Hungary won #
# 2010-03-10  Road to Berlin #1 -- Soviet Union won     #
#########################################################
     [Delete Record]              [Go To Scenario]

в HTML:

<select name="history" size=3>
  <option>2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option>2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option>2010-03-10  Road to Berlin #1 -- Soviet Union won</option>
</select>

Теперь, если вы выделите первую запись и щелкните Go to Scenario там достаточно информации, чтобы я мог ее проанализировать и создать именно тот сценарий, который вы хотите увидеть.Однако, если бы вы выбрали Delete Record нет - у меня есть playdate и я могу разобрать scenid и side из того, что указано в списке, но в этом примере все три записи будут иметь одинаковый результат.

Кажется, я загнал себя в угол.Есть ли у кого-нибудь предложения относительно того, как я могу получить некоторые уникальные идентификационные данные (ID и/или timestamp) перемещаться по этой форме, не показывая ее пользователю?

Только PHP, пожалуйста, я должен быть совместим с NoScript!

Это было полезно?

Решение

Вы можете установить value атрибут ваших опций и сделайте так, чтобы он содержал ID (что уникально) ваших данных:

<select name="history" size=3>
  <option value="1">2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option value="2">2010-03-10  Road to Berlin #1 -- Germany, Hungary won</option>
  <option value="3">2010-03-10  Road to Berlin #1 -- Soviet Union won</option>
</select>

Затем, получив опубликованные данные, $_POST['history'] будет содержать ID которые соответствуют записи, выбранной пользователем.

И, поскольку это ID уникален, вы можете использовать его для идентификации, вне всякого сомнения, ваших данных.


Содержание value Атрибут, если он установлен, передается на сервер при отправке формы — он не отображается пользователю.

Когда нет value установлен для параметра, браузер передаст содержимое этого параметра на сервер при отправке формы — именно это вы и получили.

В качестве примечания:как и в случае со всем, отправленным пользователем, вы должны проверить, что значение, полученное для $_POST['history'] является действительным, безопасным и все такое - оно должно быть целым числом, оно должно быть одним из значений, к которым пользователь может получить доступ,...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top