2012-08-13 56 views
1

我希望这是一件简单的事情,我失踪或做得不对。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 ['Submit'](即$ aa或$ ac),但它始终通过最后一个查询 - $ query3而不是查询附加到提交。 (即$ aa应该通过$ query1,但它通过$ query3拉动)

我怀疑它与我单击提交时有关,它提交['Submit']而不是['query' ],所以下一页只是简单地提取最后一次输入的查询。如果是这样,任何人都可以建议如何通过1提交两位数据(一个隐藏,一个可见)?

希望这是有道理的。

感谢

保罗


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

屏幕1 - 3 - 用户选择一个变量,它被传递到屏幕4.

屏幕4在每一页上 - 上述3个变量被读出并馈送到25预先设定的Mysql查询和运行(即查询1,查询2等),但每个查询都有一个稍微不同的元素,从而得到25个不同的答案。

这些25个查询的结果被存储在25个变量$ AA,AB $等

甲形式设置,其显示这些25个查询的结果,与正在显示在提交按钮每个答案。 (也就是说,在我编码'Value = $ aa'的位置,用户可以看到该查询的答案,即'73',然后点击它)。

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

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

关于命名每一个不同,我试过,但它是如何拿起它在第5页这就是问题。我认为我需要25个预设$ _POST的?问题在于它不喜欢其他24个未使用的$ _POST。我甚至试图把它们放在elseif循环中,但没有快乐。

但是,在某种程度上,这个解决方案的确存在吗?

此外,有几个人提出了一个数组,但由于我对阵列不太热,我不知道他们将如何解决这个问题?

如果数组是答案,关于设置的更多信息,或者更具体地说,我如何在第5页上拔出正确的信息会很好?

再次感谢。

Paul

+0

请勿为您的表单使用此类抽象名称和值。很难理解这种方式是什么。 – Sgarz 2012-08-13 23:17:08

回答

3

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

如果你只有这六个项目,你也可以用三种不同的形式对它们进行包装,以使其工作。

+0

@asprin:你为什么编辑我的答案?关于形式的事情是错的吗? – 2012-08-13 23:35:19

+0

没有。使其在语法上正确。 – asprin 2012-08-14 05:48:04

+0

通过接受它,它被删除。尽管如此,感谢您的语法更正。不幸的是我的英文不是最好的。 – 2012-08-14 09:26:33

0

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

+0

谢谢。根据其他意见,我添加了更多细节。 (作为答案添加为评论框太小) – user1596695 2012-08-14 15:40:58

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项到一个数组。如果您使用大量这些项目,则第二种方法将更有帮助。

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

+0

谢谢。根据其他意见,我添加了更多细节。 (作为答案添加为评论框太小) – user1596695 2012-08-14 15:40:02

0

您应该为一个数组形式的元素:

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

同样是提交按钮比下一个页面上使用相同的索引的情况。

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

+0

谢谢。根据其他意见,我添加了更多细节。(添加为一个答案,评论框太小) – user1596695 2012-08-14 15:40:32

+0

阅读我的回答现在 – 2012-08-15 03:50:57

+0

感谢穆罕默德 该网页,一些东西,一个人在另一个论坛有关我已经成功地得到它的工作阵列之间建议。 非常感谢! Paul – user1596695 2012-08-15 15:50:48