1

对不起,标题不清楚,一个例子可以解决问题:

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 个字段时由数据库自动插入。

首先要注意的是,用户可以在同一日期 (playdate) 记录同一场景 (scenid) 的多次播放,可能具有相同的结果 (side = 获胜者)。因此,需要唯一的 ID 和时间戳才能进行良好的衡量。

现在,在他们的用户页面上,我以<select><option>...列表形式显示他们录制的播放历史,最后有 2 个按钮 -Delete RecordGo 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并且我可以从列出的内容中解析scenidand side,但在此示例中,所有三个记录都将具有相同的结果。

我似乎把自己画到了一个角落里。有没有人建议我如何获得一些唯一的识别数据(ID和/或timestamp)以在不向用户显示的情况下使用此表单?

请只使用 PHP,我必须符合 NoScript!

4

1 回答 1

4

您可以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为选项设置 no 时,浏览器将在提交表单时将该选项的内容传递给服务器——这就是你得到的。

作为旁注:与从用户提交的所有内容一样,您必须检查收到的值$_POST['history']是否有效、安全以及所有这些——它应该是一个整数,它应该是用户可以访问的值之一,.. .

于 2010-03-29T22:26:32.200 回答