PHP表单值提交查询

时间:2012-08-13 23:10:17

标签: php

我希望这是一件很简单的事情,我错过了或者做得不好。

它涉及从表单上的1个提交按钮发布两个结果。

如果不发送大量代码,这就是关键: (这是表格中的一系列提交按钮)

<td><input type=\"hidden\" name=\"query\" value=\"$query1\"><input type=\"submit\"       name=\"Submitano\" value='$aa'></td>
<td><input type=\"hidden\" name=\"query\" value=\"$query2\"><input type=\"submit\"  name=\"Submitano\" value='$ab'></td>
<td><input type=\"hidden\" name=\"query\" value=\"$query3\"><input type=\"submit\" name=\"Submitano\" value='$ac'></td>

然后在我使用的其他结果页面上:

$s1=$_POST['Submitano'].$_POST['query'];

问题是,当我点击相关的提交按钮时,它会通过正确的POST ['Submitano']选择(即$ aa或$ ac),但它总是会通过最后一个查询 - $ query3而不是附加到提交的查询。 (即$ aa应该通过$ query1,但它会通过$ query3)

我怀疑它与点击提交时有关,它提交了['Submitano']而不是['query'],因此下一页只是选择最后输入的查询。如果是这样,有人可以建议我如何通过1提交发布两位数据(一个隐藏,一个看到)?

希望这是有道理的。

由于


感谢所有评论。这就是我想要做的,但也许我应该以完全不同的方式做到这一点?

屏幕1 - 3 - 用户在传递到屏幕4的每个页面上选择一个变量。

屏幕4 - 读取上述3个变量并将其输入25个预设的Mysql查询并运行(即查询1,查询2等),但每个查询的元素略有不同,从而产生25个不同的答案。

这25个查询的结果存储在25个变量$ aa,$ ab等

设置一个表单,显示这25个查询的结果,每个答案都显示在提交按钮中。 (即我编码'Value = $ aa'的位置,用户可以看到该查询的答案,即'73',然后点击它。)

(用户基本上需要根据他们在前3页中的选择看到25个不同的答案,然后选择他们想要了解的答案。)

- 此页面需要知道用户点击了哪个按钮,但更重要的是他们选择了哪个查询,但我的问题是它只通过值提供,而不是前面生成该值的查询。

关于以不同的方式命名每一个,我试过了,但它是如何在第5页上找到它的问题。我接受它我需要25个预设的$ _POST's?问题是它不喜欢其他24个未使用的$ _POST。我甚至尝试将它们放在一个elseif循环中,但没有快乐。

但是,这个解决方案的确存在和回答是什么?

另外,有几个人建议使用数组,但由于我对数组不太热,我不确定他们如何解决这个问题?

如果数组是答案,那么关于设置的更多信息,或者更具体地说,我如何在第5页上提取正确的数据会很棒?

再次感谢。

4 个答案:

答案 0 :(得分:3)

他们不应该有相同的名字。由于它们采用相同的形式,因此最后一个值会覆盖其他值。

如果您只有这六个项目,您可能还会用三种不同的形式将它们包装起来。

答案 1 :(得分:0)

名称应该是唯一的。由于所有隐藏的输入都被命名为“查询”,因此只提交了最后一个。

答案 2 :(得分:0)

您的表单项具有相同的名称。这意味着他们的价值会有效地“覆盖”彼此。根据浏览器的不同,第一个或最后一个值将发布到您的页面。

要解决此问题,您可以:

1)给他们不同的名字。

<input type=\"submit\" name=\"Submitano1\" value='$aa'>
<input type=\"submit\" name=\"Submitano2\" value='$aa'>
<input type=\"submit\" name=\"Submitano3\" value='$aa'>

2)将它们命名为数组。

<input type=\"submit\" name=\"Submitano[]\" value='$aa'>
<input type=\"submit\" name=\"Submitano[]\" value='$aa'>
<input type=\"submit\" name=\"Submitano[]\" value='$aa'>

第二个选项将允许您访问$ _POST ['Submitano'] [0](以及1和2),它将把所有的Submitano项目放入一个数组中。如果您使用大量这些项目,第二种方法会更有帮助。

如果需要,有关您正在做什么的更多信息将有助于提供更具体的建议。

答案 3 :(得分:0)

您应该以数组的形式命名元素:

<input type="text" name="query[]" value="whatever" />

提交按钮与使用相同索引的情况相同。

编辑:如果您的要求是从多个屏幕收集数据,我建议您使用$_SESSION个变量。 http://php.net/manual/en/book.session.php