2

我在一个表单中使用 2 个图像来整理数据库中的查询结果。表单使用 POST 方法提交。当我点击第一张图片时,查询结果必须按升序排序,当我点击第二张时,结果必须按降序排序。这是表单的代码:

 <form name="" action="" method="post">
   <input type="hidden" name="typep" value="price" />
   <input type="image"  name="sort"  value="asc"  src="images/asc-ar.png" />
   <input type="image"  name="sort"  value="desc" src="images/dsc-ar.png" />
 </form>

现在这是用于检查$_REQUEST['sort']变量是否已设置以及是否需要排序的代码。

if ($_REQUEST['sort'] != "")
{
    $sort  = $_REQUEST['sort'];
    $typep = $_REQUEST['typep'];
   //query to be executed depending on values of $sort and $typep
}

Firefox 确实检测到$_REQUEST['typep']变量,但没有检测到变量$_REQUEST['sort']。不过,这在 Chrome 中非常有效。当我在 Firefox 中测试该站点时,它没有检测到$_REQUEST['sort']变量,因此 if 条件评估为 false 并且搜索结果没有得到排序。

4

3 回答 3

1

显然,在 HTML5 标准开发的某个时刻,有人认为 的实际值input type="image"并不重要,他们决定不要求浏览器以任何方式提交它:链接到规范

不幸的是,似乎不仅 Firefox 严格遵守规范。对提交给 Firefox 开发人员的错误的评论指出,在 Opera 和 Internet Explorer 中也观察到了这种行为。

因此,您可以通过检查随表单提交的.x/.y坐标来测试图像是否已被单击,但您无法确定两个图像中的哪一个已被单击,因为您无法在不同的浏览器和浏览器中可靠地接收到它的值仍然传递该值可能也将遵循规范并在将来的某个时候将其丢弃。您需要以不同的方式命名这两个按钮。

于 2012-09-29T07:57:36.240 回答
0

实际上 Firefox 只会发送点击的坐标。如果你想使用input type="image"你可以使用:

<input type="submit" name="sort" value="desc"><img src="..." /></input>

<input type="submit" name="sort" value="asc"><img src="..." /></input>

或者您可以使用 css 来input type="submit". input type="image"相当于为按钮提供背景图像,因此请改用它。

于 2012-09-29T08:07:21.830 回答
0

如果您在表单中有多个具有相同名称的输入控件,它们将在 PHP 中显示为数组而不是单个值。

做什么

var_dump($_POST)

或者

var_dump($_REQUEST)

节目?

于 2012-09-29T09:43:39.380 回答